如何在Delphi中以编程方式设置TDatamodule的设计时间高度/宽度?

时间:2017-05-17 13:59:09

标签: delphi code-generation design-time

我生成了一个包含一堆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

1 个答案:

答案 0 :(得分:2)

TDataModule提供公共财产DesignSize,其类型为TPoint

文档说:

  

在设计时指定数据模块的设计大小   应用程序永远不需要设置此值。它在设计时控制数据模块窗口的大小。

尽管文档不建议 - 对于使用TDataModule的普通应用程序,我认为 - 您可以使用此属性来实现您的目标。