如何在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;

请注意,某些控件(例如 TPanelTTabSheet)可以作为其他控件的父级,因此它们将拥有自己的 Controls 列表。您还需要遍历这些内容。