Jer*_*dge 18 delphi datamodule delphi-xe2
在Delphi的早期版本中,我使用数据模块(TDataModule
)作为保留非可视组件的地方,以避免使主表单混乱.在Delphi XE2中,当我创建一个新的数据模块时,它只允许我在其中放置与数据库相关的组件(例如TADOConnection
和TDataSource
).这是为什么以及如何将其他组件放入其中?还有其他选择吗?
Dav*_*nan 21
数据模块随XE2版本而变化.请记住,除了长期存在的VCL之外,XE2还引入了一个新的组件框架FireMonkey.名为的新伪属性ClassGroup
已添加到数据模块中.它控制可以在IDE设计器中将哪些组件添加到数据模块.
ClassGroup
数据模块的默认值是System.Classes.TPersistent
.这指定数据模块是框架中性的,因此既不接受VCL组件也不接受FMX组件.
在你的情况,你可能想,所以你需要指定一个接受VCL组件ClassGroup
的Vcl.Controls.TControl
.
阅读所有关于ClassGroup
中的文档.
System.Classes.TDataModule及其后代类(如Web.HTTPApp.TWebModule)具有名为ClassGroup的伪属性,该属性执行以下操作:
- 确定数据模块的框架关联.也就是说,ClassGroup指定数据模块是框架中立的,或者是与特定框架(即VCL或FMX)一起工作.
- 在工具选项板中启用特定于框架的非可视组件.您需要在Object Inspector中为ClassGroup设置特定于框架的值,以便启用特定于框架的非可视组件,如下所示:
- TActionList仅为VCL,因此要在Tool Palette中启用TActionList,必须将ClassGroup设置为VCL设置.
- TTimer存在于FMX和VCL中.要为正确的框架启用TTimer,必须将ClassGroup设置为FMX或VCL,以匹配父应用程序的框架.(TTimer和TActionList将在本主题后面进一步讨论.)
Sir*_*ufo 11
这个(错误的)行为
unit Unit2;
interface
uses
System.SysUtils, System.Classes;
type
TDataModule2 = class(TDataModule)
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
DataModule2: TDataModule2;
implementation
{%CLASSGROUP 'System.Classes.TPersistent'}
{$R *.dfm}
end.
Run Code Online (Sandbox Code Playgroud)
是由线引起的
{%CLASSGROUP 'System.Classes.TPersistent'}
Run Code Online (Sandbox Code Playgroud)
摆脱只是删除或修改行
{.%CLASSGROUP 'System.Classes.TPersistent'}
Run Code Online (Sandbox Code Playgroud)
切换到Design
View 后,您将看到所需的所有组件.
(德尔福XE2 16.0.4504.48759)
归档时间: |
|
查看次数: |
3146 次 |
最近记录: |