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

How to programatically set designtime height / width of TDatamodule in Delphi?

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

因为宽度和高度是注册的设计时属性。允许设置 TComponents 的设计时 Left 和 Top 属性的类似策略是使用 DesignInfo 属性 as such

完成的
procedure BootyShakin;
  var
    NewDesignInfo       : LongRec;
  begin
    NewDesignInfo.Lo := Word(100);
    NewDesignInfo.Hi := Word(100);
    lComponent.DesignInfo := Longint(NewDesignInfo);
  end;

我正在寻找一个类似的解决方案,用于在将 TDatamodule 保存到 .DFM 之前设置它的设计时宽度和高度

TDataModule 提供 public 属性 DesignSize,类型为 TPoint.

文档说:

Specifies the design size for the data module at design time.
An application should never need to set this value. It controls the size of the data module window at design time.

尽管文档不推荐它 - 对于使用 TDataModule 的普通应用程序,我认为 - 你可以用这个 属性.

来实现你正在寻找的东西