我生成了一个包含一堆TFDQueries的TDatamodule。然后,我像这样保存这个Datamodule .DFM
lFileStream := TFileStream.Create('Datamodule.dfm', fmCreate);
lMemoryStream := TMemoryStream.Create;
lMemoryStream.WriteComponent(lDataModule);
lMemoryStream.Seek(0, soFromBeginning);
ObjectBinaryToText(lMemoryStream, lFileStream);
lFileStream.Free;
lMemoryStream.Free;
为方便用户使用,我需要在生成时设置此TDatamodule的宽度和高度。但我不能用
lDatamodule.Width := 500; // Does not compile
lDatamodule.Height := 500; // Does not compile
因为Width和Height是注册的设计时属性。允许设置TComponents的设计时Left和Top属性的类似策略是使用DesignInfo属性完成的
procedure BootyShakin;
var
NewDesignInfo : LongRec;
begin
NewDesignInfo.Lo := Word(100);
NewDesignInfo.Hi := Word(100);
lComponent.DesignInfo := Longint(NewDesignInfo);
end;
我正在寻找一种类似的解决方案来设置TDatamodule的设计时间宽度和高度,然后再保存到.DFM
答案 0 :(得分:2)
TDataModule
提供公共财产DesignSize
,其类型为TPoint
。
文档说:
在设计时指定数据模块的设计大小 应用程序永远不需要设置此值。它在设计时控制数据模块窗口的大小。
尽管文档不建议 - 对于使用TDataModule
的普通应用程序,我认为 - 您可以使用此属性来实现您的目标。