![]() |
1
4
您正在为您的帧注册哪个自定义模块类? 你用的是哪个版本的Delphi? 根据我在Delphi2007上的实验,似乎可以工作的自定义模块类是tframemodule。这个类包含在delphivclide100.bpl中。由于没有相应的delphivclide.dcp,您必须手动加载它:
我的frametest单元非常简单,它没有frametest.dfm,只有新tframe子体的声明:
使用tframemodule类,到目前为止一切工作正常。我可以创建要包含在项目中的ttestframe的新子代,并在对象检查器中编辑其已发布属性,将此新子代的实例放在IDE中的窗体上,在对象检查器中编辑其新的已发布属性,在.dfm资源中为其子组件等编写事件处理程序。我可以看到实例的预期“inline”指令。 到目前为止我还没有遇到任何问题,也许这是解决办法。 |
![]() |
2
1
没必要用“黑客方式”
还有另一种方法可以添加帧
+
单元名称(在XE7中测试): tcustommodule=> 设计编辑器 tdatamodulecustommodule=> 二甲基亚硝胺 (designide.dcp) TwinControlCustommodule=> 格式表 (designide.dcp) tframemodule=> VCL容器 (vcldesigner.dcp) 我想是因为 火猴 应该可以用类似的方式 (查找) FMXDesigner.dcp公司 &检查记事本中的内容(amp;C++) PS。 在旧的delphi版本中,单元中有tdatamoduledesignercustommodule元类而不是tdatamodulecustommodule 小精灵 PPS。 其他现有的元类名称: tcustomformcustommodule模块 tidesourcemodulecustommodule |
![]() |
3
0
不,我不认为这是完全可能的。 当我有类似的需求时,我通常做的是简单地将框架子体作为自己的组件安装。但是,这样做会丢失很多典型的框架行为(特别是在设计时),例如,您不能再直接操作子组件,对框架的更改也不再自动传播到在设计时使用它的表单-您必须首先重新编译包含框架的运行时包。 从面向对象的角度来看,这也不算太糟。它实际上加强了实现隐藏的概念。您仍然可以通过框架本身的新属性和方法公开子组件的各个属性和功能。 |
![]() |
4
0
我认为这是因为它不应该在设计时工作。您已将tbaseframe注册为自定义模块,因此它是tbaseframe的(而不是它的后代!)!!!)在设计时应可编辑的属性。DelphiIDE只知道您注册的类的已发布属性;它不知道您在项目中创建的任何子代和重写。要使代码在设计时工作,应将其包含在tbaseframe定义中:
或者(除了tbaseframe之外)将tmyframe定义注册为自定义模块。 试着理解:delphi ide在设计时只知道已经注册在里面的东西。这不是障碍,而是合乎逻辑的行为。 |
![]() |
Some1Else · 函数在Delphi中重新创建TForm 2 年前 |
![]() |
Agmcz · Delphi安卓库。so未安装(AAB) 3 年前 |
![]() |
nader · 如何使用delphi在web上提交表单 6 年前 |
![]() |
kwadratens · Delphi中的卡方分布函数代码 6 年前 |
|
user9672569 · 如何在完整的位图图像中绘制阴影效果? 6 年前 |
![]() |
mmmm · MSBuild(用于Delphi)Make-like功能 6 年前 |