gpt4 book ai didi

forms - 在表单编辑器中调整字体大小后调整 Delphi 表单的大小

转载 作者:行者123 更新时间:2023-12-03 15:29:07 24 4
gpt4 key购买 nike

我开发了一个遗留的 Delphi 6 应用程序,我想增加其中一个表单的字体大小。所有其他形式都有 Microsoft Sans Serif 8pt,但此形式设置为 Microsoft Sans Serif 7pt。所有控件都有 ParentFont = True,因此我可以简单地将表单的字体大小设置为 8pt。问题是表单及其控件不会调整大小,并且标签的文本会重叠。有没有一种简单的方法可以在调整字体大小后调整表单大小,而无需在表单编辑器中手动调整其控件大小?

最佳答案

在设计时,您可以通过手动编辑 .dfm 文件来实现更改。确保保存表单时将 Scaled 属性设置为 True

然后,关闭 Delphi 中的项目,或完全关闭 Delphi。接下来在文本编辑器中打开 .dfm 文件并调整表单 TextHeight 属性。例如,如果您想要从 7pt 缩放到 8pt,并且 TextHeight 设置为 13,则应将其更改为 11。然后重新加载项目并在设计器中打开表单,您的表单将被缩放。这不是完美的缩放,因为 TextHeight 不允许使用浮点值。但这可能已经足够好了。

<小时/>

运行时,您可以调用ChangeScale :

ChangeScale(NewFont.Size, OldFont.Size);

请注意,ChangeScale 是 protected 成员。因此,根据您调用此函数的位置,您可能需要使用 protected 成员 hack。

一种选择是在运行时调用表单持久性框架来生成 .dfm 文件的缩放版本。这将使您能够比使用 TextHeight

进行更精确的控制

例如,您可以将以下内容附加到表单的 OnShow 事件:

procedure TMyForm.FormShow(Sender: TObject);
var
BinaryStream, TextStream: TStream;
begin
BinaryStream := TMemoryStream.Create;
Try
BinaryStream.WriteComponent(Self);
BinaryStream.Position := 0;
TextStream := TFileStream.Create('MyForm.dfm', fmCreate);
Try
ObjectBinaryToText(BinaryStream, TextStream);
Finally
TextStream.Free;
End;
Finally
BinaryStream.Free;
End;
end;

这将根据运行时状态生成一个新的 .dfm 文件。然后,您可以将其与版本控制系统中的 .dfm 文件版本进行比较。会有一些您不想接受的更改,但大多数更改将是您确实想要的位置和大小更改。

关于forms - 在表单编辑器中调整字体大小后调整 Delphi 表单的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14629993/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com