delphi – 注册自定义框架
在Delphi 2009中,在我的一个项目中,我有一个自定义框架,上面有一些控件,我想用它作为其他控件的基类.我想将此框架注册为IDE向导,以便在“新建项目”列表中可用.当我将新添加的项目(我的自定义框架)添加到项目时,我希望它:
>显示我在对象检查器中添加到自定义框架的所有属性和事件. 好的,为了让它在Object Inspector中显示我的属性和事件,我将自定义模块注册到IDE中.它不适用于帧.幸运的是有人在StackOverflow上提到了这一点,并给出了答案: Showing TFrame descendant’s additional properties on the object inspector 然后,为了使其加载我的自定义框架的DFM,我将InitInheritedComponent添加到我的自定义框架的构造函数中.像这样的东西: constructor TMyFrame.Create(AOwner: TComponent); override; begin inerited; if (ClassType <> TMyFrame) and not (csDesignInstance in ComponentState) then begin if not InitInheritedComponent(Self,TMyFrame) then raise EResNotFound.CreateFmt('Resource %s not found',[ClassName]); end; end; 它不起作用!它仍然在设计师而不是我自己的框架中创建一个空框架.如果我没有在IDE中注册自定义模块,即使不需要InitInheritedComponent,它也能正确显示我的框架,但Object Inspector中没有显示其他属性! 如果我将构造函数源更改为此(用TFrame替换TMyFrame): constructor TMyFrame.Create(AOwner: TComponent); override; begin inerited; if (ClassType <> TFrame) and not (csDesignInstance in ComponentState) then begin if not InitInheritedComponent(Self,TFrame) then raise EResNotFound.CreateFmt('Resource %s not found',[ClassName]); end; end; 框架正确添加到设计器中,并且在Object Inspector中可以看到其他属性,但运行应用程序失败,因为它会抱怨框架上的组件已经存在. 所以,我的问题是:有一个Delphi IDE向导的解决方案是什么,该向导使用DFM从自定义框架(非窗体)创建派生框架,并在Object Inspector中显示其附加属性? 顺便说一句,我不想??在运行时在框架中构建控件,因为我需要它们在设计时也可用. 我希望有人能把这件事告诉我. 问候 编辑: 这些框架实际上用作向导组件的页面.我的向导组件在运行时创建它们.我希望用户在“New Item”菜单中有一个选项,可以向项目添加向导页面,并在IDE设计器中设计其布局,并将其注册到我的向导组件中以显示在向导中.我从TFrame继承了一个基类,因为我的向导页面应该有一些强制控件和一些自定义属性和事件. 解决方法
我已经相当广泛地探索了使用TFrames(以及它们的相关继承)作为组件开发的基础,并且可以详细说明我发现它是否有用,但我从来没有需要使用RegisterCustomModule – 我只是从使用常规帧继承直接进行TFrame,然后在标准组件注册单元中注册生成的“最终”版本.这似乎允许两全其美(可视化开发继承,以及组件调色板对象检查器功能).
虽然它有很多小技巧,但需要注意的是,如何命名TFrame本身,确保DFM文件在第一行正确使用“对象”或“继承”,一般来说,已经发现它非常有利于复杂继承树的稳定性来创建一个继承自TFrame的“基础框架”,但是将NOTHING添加到它…然后从那里继承所有其他的. (在添加已发布的属性等时,这似乎尤其如此). 告诉我更多关于为什么特别想要使用IDE向导的问题,也许如果这不是一种方法,我可以提供更多帮助. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |