我成功编码了一个运行时事件,该事件在重新调整表单大小时会更改TLabel
的大小
procedure TForm3.pack(Sender: TObject);
begin
Label1.Font.Size:=Floor(50*(Form3.Width/Screen.Width)*(Form3.Height/Screen.Height));
end;
现在,我想在表单上获取所有组件的数组,因此我循环并调整它们的大小。
如果有预定义的选项或过程,请告诉我有关帮助(例如响应式)的任何帮助
谢谢
最佳答案
您可以使用表单的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
列表。您还需要遍历这些内容。关于delphi - 如何在Delphi中以表格的形式获取所有组件(Tlabel,Tedit…)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32702541/