我成功编写了一个运行时事件,当我重新调整表单大小时,该事件会更改TLabel
的大小
procedure TForm3.pack(Sender: TObject);
begin
Label1.Font.Size:=Floor(50*(Form3.Width/Screen.Width)*(Form3.Height/Screen.Height));
end;
现在我想获取表单上所有组件的数组,所以我循环并重新调整它们的大小。
任何帮助,如果有预定义的选项或程序,请告诉我它(如响应)
谢谢
答案 0 :(得分:3)
您可以使用表单Controls
属性。由于所有控件都继承自TControl
,而TControl
具有Font
属性,因此它非常简单(尽管该属性受TControl
保护,因此您可以使用需要一个插入类):
type
TCtrl = class(TControl);
var
i: Integer;
NewSize: Integer;
begin
NewSize := Floor(50*(Form3.Width/Screen.Width)*(Form3.Height/Screen.Height));
for i := 0 to ControlCount - 1 do
TCtrl(Controls[i]).Font.Size := NewSize;
end;
请注意,某些控件(例如TPanel
和TTabSheet
)可以为其他控件添加父级,因此它们会有自己的Controls
列表。你也需要循环使用它们。