脚本宿主程序
宿主的功用:
裝載.dfm文件動態生成窗體;
注冊動態生成窗體中的類,對象,屬性,方法,函數,從而讓腳本引擎能夠操作它們。
?
下面以TMS SCRIPTER STUDIO為例:
?unit uMain;
interface
uses
? Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
? Dialogs, Menus, atScript, atPascal;
type
? TFormMain = class(TForm)
??? MainMenu1: TMainMenu;
??? Scripter: TatPascalScripter;
??? m1: TMenuItem;
??? N11: TMenuItem;
??? N21: TMenuItem;
??? procedure N11Click(Sender: TObject);
??? procedure N21Click(Sender: TObject);
? private
??? { Private declarations }
??? procedure LoadScript(Sender: TComponent; const DFMFile, PSCFile,
????? InitProc: string);
??? // params: Sender--宿主窗體? DFMFile--界面腳本文件? PSCFile--業務腳本? InitProc--調用腳本的初始化方法
? public
??? { Public declarations }
? end;
var
? FormMain: TFormMain;
implementation
{$R *.dfm}
uses uClass, Unit1, Unit2;
procedure TFormMain.LoadScript(Sender: TComponent; const DFMFile, PSCFile,
? InitProc: string);
begin
? uClass.LoadFromDFM(DFMFile, Sender);????????? // 裝載界面
? Scripter.AddComponents(Sender);?????????????? // 讓腳本認識窗體中的對象
? uClass.PianLiComps(Sender, Scripter);
? Scripter.SourceCode.Clear;
? Scripter.SourceCode.LoadFromFile(PSCFile);? // 裝載業務
? scripter.ExecuteSubroutine(InitProc);?????? // 調用腳本的初始化方法
end;
procedure TFormMain.N11Click(Sender: TObject);
begin
? LoadScript(form1, '1.dfm', '1.psc', 'init');
end;
procedure TFormMain.N21Click(Sender: TObject);
begin
? LoadScript(Form2, '2.dfm', '2.psc', 'init');
end;
end.
總結
- 上一篇: 也说new
- 下一篇: 步步为营 .NET 代码重构学习笔记 三