SteeDemo.MainForms Namespace

ยูนิตเมนฟอร์ม เป็นหน้าต่างหลักในการแสดงผล ปิดเมนฟอร์มคือออกจากโปรแกรม

ยูนิตนี้อยู่ในส่วนของ Presentation Layer

จุดประสงค์:

  1. เพื่อศึกษากรรมวิธีใช้คำสั่งควบคุมวัตถุงาน
  2. เพื่อศึกษากรรมวิธีตรวจสอบเหตุการณ์ที่เกิดกับวัตถุงาน
  3. เพื่อศึกษากรรมวิธีเขียนคำสั่งตรวจจับเหตุการณ์
  4. เพื่อศึกษากรรมวิธีเขียนคำสั่งตอบสนองเหตุการณ์

Tip

  • คำสั่งที่มี Do...นำหน้าจะเป็นคำสั่งถ่ายทอดทางสายพันธุ์
  • SteeApplication แบ่งพื้นที่การทำงานเป็นห้องปฏิบัติการ (Sessions)
  • SteeApplication มีพื้นที่ปฏิบัติการทั่วไป เรียกว่า Local Session
  • แต่ละห้องปฏิบัติการของ SteeApplication จะมีวัตถุ Samong ทำงานอยู่ภายใน
  • ใน EasyMainForm สามารถเข้าถึงเรียกใช้งานวัตถุ Samong ได้ทันที
  • ต่อไปนี้คำว่า "สมอง" หมายถึง Samong System หรือ วัตถุ Samong
  • มาตรฐานทั่วไป ชื่อคลาสจะนำหน้าด้วยอักษร "T"
  • ภาษาปาสคาลชื่อคำสั่งหรือชื่อตัวแปรอักษรตัวพิมพ์ใหญ่หรือพิมพ์เล็กเหมือนกัน
  • การเขียนคำสั่งแบบ Object Oriented คำสั่งจะถูกจัดกลุ่มโดยคลาส


unit SteeDemo.MainForms;


interface


uses

//การเรียกใช้ยูนิตส่วนต่อไปนี้ไม่ขึ้นกับแพลตฟอร์ม

System.SysUtils, System.Types, System.UITypes, System.Classes,

System.Variants,


//การเรียกใช้ยูนิตส่วนต่อไปนี้เป็นส่วนของ iSTEE ไม่ขึ้นกับแพลตฟอร์ม

Stee.Nature.Systems, Stee.Nature.Apps,

//การเรียกใช้ยูนิตส่วนต่อไปนี้เป็นส่วนของ iSTEE ขึ้นกับแพลตฟอร์ม

Stee.FMX.MainForms, Stee.FMX.Forms,


//การเรียกใช้ยูนิตส่วนต่อไปนี้เป็นส่วนเฉพาะสำหรับแอพพลิเคชั่น

SteeDemo.Systems, SteeDemo.FMX.Registers,


//การเรียกใช้ยูนิตส่วนต่อไปนี้จะขึ้นอยู่กับแพลตฟอร์มการแสดงผล

FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,

FMX.Controls.Presentation, FMX.MultiView, FMX.StdCtrls, FMX.Objects,

FMX.ListBox, FMX.Layouts;


type

TSteeDemoMainForm = class(TjgFMXEasyMainform)

//ประกาศตัวแปรในพื้นที่นี้ก่อนคำสั่ง private

//ถูกสร้างและลบทิ้งแบบอัตโนมัติระหว่างออกแบบ

MultiView1: TMultiView;

Panel_Title: TRectangle;

Button_Menu1: TSpeedButton;

Label_TaskName: TLabel;

ListBox1: TListBox;

ListBoxItem_InstallSystem: TListBoxItem;

ListBoxItem_Exit: TListBoxItem;

ListBoxItem_Start: TListBoxItem;

ListBoxItem_RunTask001: TListBoxItem;

Memo1: TMemo;

Button_New: TButton;

Button_Initialize: TButton;

Button_Start: TButton;

Button_Prepare: TButton;

Button_Ready: TButton;

Button_Run: TButton;

Button_Terminate: TButton;

Button_ClearMemo: TButton;

Button_CompleteRun: TButton;

Button_Execute: TButton;

private

protected

procedure DoCreate; override;

public

End;


TSteeDemoCustomInnerMainForm = class(TjgFMXInnerMainForm)

private

function MyForm: TSteeDemoMainForm;

protected

procedure DoEnableEvents; override;

procedure DoDisableEvents; override;

public

procedure Click_Exit(Sender: TObject);

procedure Click_InstallSystem(Sender: TObject);

procedure Click_DemoSystem_Start(Sender: TObject);

procedure Click_DemoSystem_RunTask001(Sender: TObject);

End;


TSteeDemoCustomInnerMainForm_WorkFlow = Class(TSteeDemoCustomInnerMainForm)

private

//ทำเมื่อเกิดเหตุ>>วัตถุระบบ>>ติดตั้งวัตถุงานใหม่

procedure Do_System_OnNewTask(Sender: TObject; AItem: TjgItem);

//ทำเมื่อเกิดเหตุ>>วัตถุงาน>>ตั้งค่าก่อนทำงาน

procedure Do_Task_OnInitialize(Sender: TObject);

//ทำเมื่อเกิดเหตุ>>วัตถุงาน>>เริ่มต้นทำงาน

procedure Do_Task_OnStart(Sender: TObject);

//ทำเมื่อเกิดเหตุ>>วัตถุงาน>>เตรียมทำงาน

procedure Do_Task_OnPrepare(Sender: TObject);

//ทำเมื่อเกิดเหตุ>>วัตถุงาน>>พร้อมทำงาน

procedure Do_Task_OnReady(Sender: TObject);

//ทำเมื่อเกิดเหตุ>>วัตถุงาน>>ทำงาน

procedure Do_Task_OnRun(Sender: TObject);

//ทำเมื่อเกิดเหตุ>>วัตถุงาน>>ทำปฏิบัติการ

procedure Do_Task_OnOperate(Sender: TObject);

//ทำเมื่อเกิดเหตุ>>วัตถุงาน>>ยุติการทำงาน

procedure Do_Task_OnTerminate(Sender: TObject);


protected

//ทำเปิดการร้บคำสั่งและตอบสนองเหตุการณ์หรือพร้อมรับคำสั่ง

procedure DoEnableEvents; override;

//ทำปิดการร้บคำสั่งและไม่ตอบสนองเหตุการณ์หรือไม่รับคำสั่ง

procedure DoDisableEvents; override;

public

//สั่งติดตั้งวัตถุงานลงในวัตถุระบบ

procedure Click_Task_New(Sender: TObject);

//สั่งวัตถุงาน>>ตั้งค่าก่อนทำงาน

procedure Click_Task_Initialize(Sender: TObject);

//สั่งวัตถุงาน>>เริ่มทำงาน

procedure Click_Task_Start(Sender: TObject);

//สั่งวัตถุงาน>>เตรียมทำงาน

procedure Click_Task_Prepare(Sender: TObject);

//สั่งวัตถุงาน>>พร้อมทำงาน

procedure Click_Task_Ready(Sender: TObject);

//สั่งวัตถุงาน>>ทำงาน

procedure Click_Task_Run(Sender: TObject);

//สั่งวัตถุงาน>>ยุติทำงาน

procedure Click_Task_Terminate(Sender: TObject);

//สั่งวัตถุงาน>>ทำงานทุกขั้นตอนแบบสมบูรณ์

procedure Click_Task_CompleteRun(Sender: TObject);

//สั่งวัตถุงาน>>ทำงานทุกขั้นตอนแบบปกติ

procedure Click_Task_Execute(Sender: TObject);

//สั่งวัตถุฟอร์ม>>ล้างรายการแสดงสถานะทั้งหมด

procedure Click_Task_ClearMemo(Sender: TObject);

End;


TSteeDemoInnerMainForm = class(TSteeDemoCustomInnerMainForm_WorkFlow)

private

protected

public

End;


var

SteeDemoMainForm: TSteeDemoMainForm;


implementation


{$R *.fmx}


procedure InitializeMainStee;

begin

SteeDemoFMX003_RegisterComponents;

end;


{ TSteeDemoMainForm }


procedure TSteeDemoMainForm.DoCreate;

begin

inherited; //ให้ไปทำคำสั่งคลาสต้นกำเนิดลำดับชั้นก่อนหน้า

InnerUICellClass:=TSteeDemoInnerMainForm;

end;


{ TSteeDemoCustomInnerMainForm }


function TSteeDemoCustomInnerMainForm.MyForm: TSteeDemoMainForm;

begin

Result:=TSteeDemoMainForm(Form);

end;


procedure TSteeDemoCustomInnerMainForm.Click_Exit(Sender: TObject);

begin

Form.Close;

end;


procedure TSteeDemoCustomInnerMainForm.DoDisableEvents;

var

oForm: TSteeDemoMainForm;

begin

inherited; //ให้ไปทำคำสั่งคลาสต้นกำเนิดลำดับชั้นก่อนหน้า

oForm:=MyForm;

oForm.ListBoxItem_InstallSystem.OnClick:=Nil;

oForm.ListBoxItem_Start.OnClick:=Nil;

oForm.ListBoxItem_RunTask001.OnClick:=Nil;

oForm.ListBoxItem_Exit.OnClick:=Nil;

end;


procedure TSteeDemoCustomInnerMainForm.DoEnableEvents;

var

oForm: TSteeDemoMainForm;

begin

inherited; //ให้ไปทำคำสั่งคลาสต้นกำเนิดลำดับชั้นก่อนหน้า

oForm:=MyForm;

oForm.ListBoxItem_InstallSystem.OnClick:=Click_InstallSystem;

oForm.ListBoxItem_Start.OnClick:=Click_DemoSystem_Start;

oForm.ListBoxItem_RunTask001.OnClick:=Click_DemoSystem_RunTask001;

oForm.ListBoxItem_Exit.OnClick:=Click_Exit;

end;


procedure TSteeDemoCustomInnerMainForm.Click_InstallSystem(Sender: TObject);

var

oSamong: TjgSystem;

begin

//กำหนดตำแหน่งที่อยู่Samong ให้กับตัวแปร

//ในเมนฟอร์มสายพันธุ์ "TjgFMXEasyMainform" สามารถเรียกใช้งานวัตถุ Samong ได้ทันที

//นำคลาส "TSteeDemoSystem" ติดตั้งลงในระบบ Samong หรือทำงานอยู่ภายใน Samong System


oSamong:=Samong;

oSamong.NewSystem('DemoSystem',TSteeDemoSystem,'DemoSystem');

end;


procedure TSteeDemoCustomInnerMainForm.Click_DemoSystem_Start(Sender: TObject);

var

oSystem: TjgSystem;

begin

//คำสั่ง [System].GetSystem ถ้าไม่พบระบบตามชื่อที่ระบบจะแจ้งข้อผิดพลาด

//และยุติคำสั่งไม่ทำงานต่อ


oSystem:=Samong.GetSystem('DemoSystem');

oSystem.Start;

end;


procedure TSteeDemoCustomInnerMainForm.Click_DemoSystem_RunTask001( Sender: TObject);

var

oSystem: TjgSystem;

begin

oSystem:=Samong.GetSystem('DemoSystem');

//คำสั่ง [System].Execute เรียกใช้คำสั่งที่ลงทะเบียนไว้ใน Commands ของระบบ

oSystem.Execute('RunTask001');

end;


{ TSteeDemoCustomInnerMainForm_WorkFlow }


procedure TSteeDemoCustomInnerMainForm_WorkFlow.DoDisableEvents;

var

oForm: TSteeDemoMainForm;

begin

inherited;

oForm:=MyForm;

oForm.Button_New.OnClick:=Nil;

oForm.Button_Initialize.OnClick:=Nil;

oForm.Button_Start.OnClick:=Nil;

oForm.Button_Prepare.OnClick:=Nil;

oForm.Button_Ready.OnClick:=Nil;

oForm.Button_Run.OnClick:=Nil;

oForm.Button_CompleteRun.OnClick:=Nil;

oForm.Button_Execute.OnClick:=Nil;

oForm.Button_Terminate.OnClick:=Nil;

oForm.Button_ClearMemo.OnClick:=Nil;

end;


procedure TSteeDemoCustomInnerMainForm_WorkFlow.Click_Task_New(Sender: TObject);

var

oSystem: TjgSystem;

oTask: TjgTask;

begin

oSystem:=Samong.GetSystem('DemoSystem');

oSystem.Apps.OnAdd:=Do_System_OnNewTask;


oTask:=oSystem.NewTask('Task001',TSteeDemoTask001,'Task001',False);


oTask.OnInitialize:=Do_Task_OnInitialize;

oTask.OnStart:=Do_Task_OnStart;

oTask.OnPrepare:=Do_Task_OnPrepare;

oTask.OnReady:=Do_Task_OnReady;

oTask.OnRun:=Do_Task_OnRun;

oTask.OnOperate:=Do_Task_OnOperate;

oTask.OnTerminate:=Do_Task_OnTerminate;

end;


procedure TSteeDemoCustomInnerMainForm_WorkFlow.DoEnableEvents;

var

oForm: TSteeDemoMainForm;

begin

inherited;

oForm:=MyForm;

oForm.Button_New.OnClick:=Click_Task_New;

oForm.Button_Initialize.OnClick:=Click_Task_Initialize;

oForm.Button_Start.OnClick:=Click_Task_Start;

oForm.Button_Prepare.OnClick:=Click_Task_Prepare;

oForm.Button_Ready.OnClick:=Click_Task_Ready;

oForm.Button_Run.OnClick:=Click_Task_Run;

oForm.Button_Terminate.OnClick:=Click_Task_Terminate;

oForm.Button_CompleteRun.OnClick:=Click_Task_CompleteRun;

oForm.Button_Execute.OnClick:=Click_Task_Execute;

oForm.Button_ClearMemo.OnClick:=Click_Task_ClearMemo;

end;


procedure TSteeDemoCustomInnerMainForm_WorkFlow.Do_System_OnNewTask( Sender: TObject; AItem: TjgItem);

begin

MyForm.Memo1.Lines.Add(Sender.ClassName+'.OnAdd >> '+AItem.ClassName);

end;


procedure TSteeDemoCustomInnerMainForm_WorkFlow.Click_Task_Initialize( Sender: TObject);

var

oSystem: TjgSystem;

oTask: TjgTask;

begin

oSystem:=Samong.GetSystem('DemoSystem');

oTask:=oSystem.GetTask('Task001');

oTask.Initialize;

end;


procedure TSteeDemoCustomInnerMainForm_WorkFlow.Click_Task_Start( Sender: TObject);

var

oSystem: TjgSystem;

oTask: TjgTask;

begin

oSystem:=Samong.GetSystem('DemoSystem');

oTask:=oSystem.GetTask('Task001');

oTask.Start;

end;


procedure TSteeDemoCustomInnerMainForm_WorkFlow.Click_Task_Prepare( Sender: TObject);

var

oSystem: TjgSystem;

oTask: TjgTask;

begin

oSystem:=Samong.GetSystem('DemoSystem');

oTask:=oSystem.GetTask('Task001');

oTask.Prepare;

end;


procedure TSteeDemoCustomInnerMainForm_WorkFlow.Click_Task_Ready( Sender: TObject);

var

oSystem: TjgSystem;

oTask: TjgTask;

begin

oSystem:=Samong.GetSystem('DemoSystem');

oTask:=oSystem.GetTask('Task001');

oTask.Ready;

end;


procedure TSteeDemoCustomInnerMainForm_WorkFlow.Click_Task_Run(Sender: TObject);

var

oSystem: TjgSystem;

oTask: TjgTask;

begin

oSystem:=Samong.GetSystem('DemoSystem');

oTask:=oSystem.GetTask('Task001');

oTask.Run;

end;


procedure TSteeDemoCustomInnerMainForm_WorkFlow.Click_Task_Terminate( Sender: TObject);

var

oSystem: TjgSystem;

oTask: TjgTask;

begin

oSystem:=Samong.GetSystem('DemoSystem');

oTask:=oSystem.GetTask('Task001');

oTask.Terminate;

end;


procedure TSteeDemoCustomInnerMainForm_WorkFlow.Click_Task_CompleteRun( Sender: TObject);

var

oSystem: TjgSystem;

oTask: TjgTask;

begin

oSystem:=Samong.GetSystem('DemoSystem');

oTask:=oSystem.GetTask('Task001');

oTask.CompleteRun;

end;


procedure TSteeDemoCustomInnerMainForm_WorkFlow.Click_Task_Execute(

Sender: TObject);

var

oSystem: TjgSystem;

oTask: TjgTask;

begin

oSystem:=Samong.GetSystem('DemoSystem');

oTask:=oSystem.GetTask('Task001');

oTask.Execute;

end;


procedure TSteeDemoCustomInnerMainForm_WorkFlow.Click_Task_ClearMemo(

Sender: TObject);

begin

MyForm.Memo1.Lines.Clear;

end;


procedure TSteeDemoCustomInnerMainForm_WorkFlow.Do_Task_OnInitialize(

Sender: TObject);

begin

MyForm.Memo1.Lines.Add(Sender.ClassName+'.OnInitialize');

end;


procedure TSteeDemoCustomInnerMainForm_WorkFlow.Do_Task_OnStart(

Sender: TObject);

begin

MyForm.Memo1.Lines.Add(Sender.ClassName+'.OnStart');

end;


procedure TSteeDemoCustomInnerMainForm_WorkFlow.Do_Task_OnPrepare(

Sender: TObject);

begin

MyForm.Memo1.Lines.Add(Sender.ClassName+'.OnPrepare');

end;


procedure TSteeDemoCustomInnerMainForm_WorkFlow.Do_Task_OnReady( Sender: TObject);

begin

MyForm.Memo1.Lines.Add(Sender.ClassName+'.OnReady');

end;


procedure TSteeDemoCustomInnerMainForm_WorkFlow.Do_Task_OnRun(Sender: TObject);

begin

MyForm.Memo1.Lines.Add(Sender.ClassName+'.OnRun');

end;


procedure TSteeDemoCustomInnerMainForm_WorkFlow.Do_Task_OnOperate(

Sender: TObject);

var

oTask: TjgTask;

oMemo: TMemo;

oInfo: TjgProperties;

oField1,oField2: TjgField;

begin

MyForm.Memo1.Lines.Add(Sender.ClassName+'.OnOperate');

oTask:=Sender as TjgTask; //กำหนดบทบาท Sender เป็นวัตถุงาน

oInfo:=oTask.Properties; //กำหนดที่อยู่ทะเบียนคุณสมบัติของวัตถุงาน

oField1:=oInfo['FullName']; //กำหนดที่อยู่ของคุณสมบัติ FullName

oField2:=oInfo['Address']; //กำหนดที่อยู่ของคุณสมบัติ Address

oMemo:=MyForm.Memo1; //กำหนดที่อยู่วัตถุบันทึกข้อความ

oMemo.Lines.Add(oField1.LabelName+' : '+oField1.AsString);

oMemo.Lines.Add(oField2.LabelName+' : '+oField2.AsString);

end;


procedure TSteeDemoCustomInnerMainForm_WorkFlow.Do_Task_OnTerminate(

Sender: TObject);

begin

MyForm.Memo1.Lines.Add(Sender.ClassName+': OnTerminate');

end;


initialization

//คำสั่งใต้ initialization ทำงานเมื่อมีการโหลดยูนิตลงในหน่วยความจำ

//คำสั่งเปิดใช้งานสติ***ข้อบังคับ ***

SteeApplication.Initialize; //เตรียมสติ

InitializeMainStee; //ตั้งค่าสติ

SteeApplication.Run; //ใช้งานสติ


finalization

//คำสั่งใต้ finalization ทำงานเมื่อมีการถอนยูนิตออกจากหน่วยความจำ

end.

 NameDescription
TSteeDemoCustomInnerMainForm

คลาสต้นกำเนิดหน่วยควบคุมภายในฟอร์ม เลือกสายพันธุ์ "TjgFMXInnerMainForm" เพื่อใช้งานสภาพแวดล้อม Samong

TSteeDemoCustomInnerMainForm_WorkFlow

คลาสแสดงการควบคุมลำดับขั้นตอนการทำงานของวัตถุงาน ใน DemoSystem

TSteeDemoInnerMainForm

คลาสหน่วยควบคุมภายในฟอร์ม นำไปติดตั้งและทำงานอยู่ในเมนฟอร์ม

TSteeDemoMainForm

คลาสเมนฟอร์มหลัก เลือกสายพันธุ์ "TjgFMXEasyMainform" เพื่อใช้งานสภาพแวดล้อม Samong

Top
 NameDescription
SteeDemoMainForm

ตัวแปรเก็บตัวแหน่งวัตถุเมนฟอร์ม หรือเรียกว่า Instance

Top
 NameDescription
InitializeMainStee

คำสั่งสำหรับกำหนดค่าเริ่มต้นและสภาพแวดล้อมระบบ Samong

Top