delphi – 使用新事件创建自定义框架
我正在研究delphi XE2.
我需要的: 我需要带有框架的MyFrame类,没有任何可见的组件,但是在Object Inspector中可以看到新事件.此事件将通知我的表单(将放置MyFrame对象),即f.e.框架上的所有数据都已满. 是)我有的: delphivclide := GetModuleHandle('delphivclide160.bpl'); 有了这个: delphivclide := GetModuleHandle('vcldesigner160.bpl'); 我有新框架的代码: unit MyFrame; interface uses System.Classes,Vcl.Forms; type TMyFrame = class(TFrame) private protected FOnFilledData : TNotifyEvent; public published property OnFilledData : TNotifyEvent read FOnFilledData write FOnFilledData; end; implementation end. 注册单位的代码: unit MyFrameReg; interface procedure Register; implementation uses Windows,DesignIntf,Dialogs,wFrame; procedure Register; var delphivclide: THandle; TFrameModule: TCustomModuleClass; begin delphivclide := GetModuleHandle('vcldesigner160.bpl'); if delphivclide <> 0 then begin TFrameModule := GetProcAddress(delphivclide,'@Vclformcontainer@TFrameModule@'); if Assigned(TFrameModule) then begin ShowMessage('I''m here'); RegisterCustomModule(TMyFrame,TFrameModule); end; end; end; end. 当我构建我的包时,我收到了我在这里的消息,所以我说,MyFrame已注册. 我的问题是什么: 如果有人可以告诉我,我做错了,我会很高兴的. 解决方法
A.框架类注册
没有必要以“hacky方式”做到这一点 uses ... DMForm,VCLFormContainer,... procedure Register; begin ... RegisterCustomModule(TYourFrameClass,TFrameModule); // for frames RegisterCustomModule(TYourModuleClass,TDataModuleCustomModule); // for data modules ... end; 还有另一种方法可以添加帧 type TNestableWinControlCustomModule = class (TWinControlCustomModule) public function Nestable: Boolean; override; end; function TNestableWinControlCustomModule.Nestable: Boolean; begin Result := True; end; ? RegisterCustomModule(TYourFrameClass,TNestableWinControlCustomModule); 单位名称(在XE7中测试): TCustomModule => DesignEditors TDataModuleCustomModule => DMForm(designide.dcp) TWinControlCustomModule => WCtlForm(designide.dcp) TFrameModule => VCLFormContainer(vcldesigner.dcp) 我想,对于FireMonkey,它应该可以以类似的方式(找到fmxdesigner.dcp&检查记事本里面的内容) B.要在“新建…”向导中使用它,您需要注册向导类. PS.在较旧的Delphi版本中,单元DMDesigner中有TDataModuleDesignerCustomModule元类而不是TDataModuleCustomModule PPS.其他现有的元类名称: TCustomFormCustomModule TIDESourceModuleCustomModule (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |