| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179 |
- unit ufrmMain;
- interface
- uses
- Windows, Messages, SysUtils, Variants, Classes, Graphics,
- Controls, Forms, Dialogs, Menus, ActnList,
- Tabs, ExtCtrls, uIMainForm, PluginTabControl,
- StdCtrls, IniFiles;
- type
- TfrmMain = class(TForm, IMainForm)
- mmMain: TMainMenu;
- actlstMain: TActionList;
- actAbout: TAction;
- actAbout1: TMenuItem;
- pnlExp: TPanel;
- pnlTabs: TPanel;
- actCreateDemoForm: TAction;
- DEMO1: TMenuItem;
- DEMO2: TMenuItem;
- edtPluginID: TEdit;
- btnCreateAsMDI: TButton;
- actCreatePluginAsMDI: TAction;
- Button1: TButton;
- Button2: TButton;
- procedure actAboutExecute(Sender: TObject);
- procedure actCreateDemoFormExecute(Sender: TObject);
- procedure actCreatePluginAsMDIExecute(Sender: TObject);
- procedure actCreateReporterDEMOExecute(Sender: TObject);
- procedure Button1Click(Sender: TObject);
- procedure Button2Click(Sender: TObject);
- procedure FormClose(Sender: TObject; var Action: TCloseAction);
- procedure FormShow(Sender: TObject);
- private
- FTempIntf:IInterface;
- FPluginTabControl: TPluginTabControl;
- procedure closePluginQuery(const pvForm: IInterface; vCanClose: Boolean);
- stdcall;
- function removePlugin(const pvInstanceID: PAnsiChar): boolean; stdcall;
- procedure showPluginAsMDI(const pvPlugin:IInterface);stdcall;
- public
- constructor Create(AOwner: TComponent); override;
- destructor Destroy; override;
- { Public declarations }
- end;
- var
- frmMain: TfrmMain;
- implementation
- uses
- mybean.tools.beanFactory, uIFormShow, uMainFormTools;
- {$R *.dfm}
- constructor TfrmMain.Create(AOwner: TComponent);
- begin
- inherited;
- TMyBeanFactoryTools.setObject('main', Self);
- FPluginTabControl := TPluginTabControl.Create(Self);
- FPluginTabControl.Parent := pnlTabs;
- FPluginTabControl.Align := alClient;
- end;
- destructor TfrmMain.Destroy;
- begin
- FPluginTabControl.freeAll;
- TMyBeanFactoryTools.removeObject('main');
- FreeAndNil(FPluginTabControl);
- inherited Destroy;
- end;
- procedure TfrmMain.actAboutExecute(Sender: TObject);
- var
- lvIntf:IInterface;
- begin
- lvIntf := TMyBeanFactoryTools.getBean('aboutForm');
- try
- (lvIntf as IShowAsModal).showAsModal;
- finally
- TMyBeanFactoryTools.freeBeanInterface(lvIntf);
- end;
- end;
- procedure TfrmMain.actCreateDemoFormExecute(Sender: TObject);
- var
- lvPlugin:IInterface;
- begin
- lvPlugin := TMyBeanFactoryTools.getBean('demoPluginForm');
- self.showPluginAsMDI(lvPlugin);
- end;
- procedure TfrmMain.actCreatePluginAsMDIExecute(Sender: TObject);
- var
- lvPlugin:IInterface;
- begin
- lvPlugin := TMyBeanFactoryTools.getBean(edtPluginID.Text);
- self.showPluginAsMDI(lvPlugin);
- end;
- procedure TfrmMain.actCreateReporterDEMOExecute(Sender: TObject);
- var
- lvPlugin:IInterface;
- begin
- lvPlugin := TMyBeanFactoryTools.getBean('reporterDemoForm');
- self.showPluginAsMDI(lvPlugin);
- end;
- procedure TfrmMain.Button1Click(Sender: TObject);
- var
- FTempIntf:IInterface;
- begin
- FTempIntf := TMyBeanFactoryTools.getBean(edtPluginID.Text);
- self.showPluginAsMDI(FTempIntf);
- end;
- procedure TfrmMain.Button2Click(Sender: TObject);
- begin
- FTempIntf := nil;
- end;
- procedure TfrmMain.closePluginQuery(const pvForm: IInterface; vCanClose:
- Boolean);
- begin
- end;
- procedure TfrmMain.FormClose(Sender: TObject; var Action: TCloseAction);
- var
- lvINiFile:TIniFile;
- begin
- lvINiFile := TIniFile.Create(ChangeFileExt(ParamStr(0), '.history.ini'));
- try
- lvINiFile.WriteString('main', 'lastPluginID', edtPluginID.Text);
- finally
- lvINiFile.Free;
- end;
- end;
- procedure TfrmMain.FormShow(Sender: TObject);
- var
- lvINiFile:TIniFile;
- begin
- try
- self.OnShow := nil;
- lvINiFile := TIniFile.Create(ChangeFileExt(ParamStr(0), '.history.ini'));
- try
- edtPluginID.Text := lvINiFile.ReadString('main', 'lastPluginID', '');
- finally
- lvINiFile.Free;
- end;
- if edtPluginID.Text <> '' then
- begin
- actCreatePluginAsMDI.Execute;
- end;
- except
- end;
- end;
- function TfrmMain.removePlugin(const pvInstanceID: PAnsiChar): boolean;
- begin
- FPluginTabControl.remove(String(AnsiString(pvInstanceID)));
- Result := true;
- end;
- procedure TfrmMain.showPluginAsMDI(const pvPlugin: IInterface);
- begin
- TMainFormTools.showAsMDI(pvPlugin);
- FPluginTabControl.BindPlugin(pvPlugin, TMainFormTools.getInstanceID(pvPlugin));
- end;
- end.
|