如何在Delphi的表单中获取所有组件(Tlabel,Tedit ...)?
How to get all components (Tlabel,Tedit ...) in a form in Delphi?
我成功编写了一个运行时事件,当我重新调整表单大小时 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
属性,这使得它变得非常简单(尽管 属性 在 [=12= 中受到保护], 所以你需要一个内插器 class):
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
列表。您还需要遍历这些内容。
我成功编写了一个运行时事件,当我重新调整表单大小时 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
属性,这使得它变得非常简单(尽管 属性 在 [=12= 中受到保护], 所以你需要一个内插器 class):
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
列表。您还需要遍历这些内容。