【发布时间】:2017-10-17 01:04:51
【问题描述】:
我生成了一个 TDatamodule,其中包含一堆 TFDQueries。然后,我像这样保存这个 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 之前设置其设计时宽度和高度
【问题讨论】:
-
我明确指出这必须通过代码@MartynA 来完成
-
"WIdth" 和 "Height" 只是设计时属性,它们不能通过代码直接访问。 @MartynA
-
一个数据模块在运行时是不可见的,请问是什么问题?
-
@MartynA 你否决了这个问题? Width 和 Height 是使用 RegisterProperty 注册的自定义属性编辑器。这就是您在设计时编辑器上看到 em 的原因。它们在运行时不存在。
-
在保存前设置 DesignSize.x 和 DesignSize.y? DesignSize 是一个公共 Tpoint
标签: delphi code-generation design-time