如何在Delphi中获取所有组件(Tlabel,Tedit ...)?

时间:2015-09-21 18:50:05

标签: delphi delphi-xe8

我成功编写了一个运行时事件,当我重新调整表单大小时,该事件会更改TLabel的大小

procedure TForm3.pack(Sender: TObject);
begin
    Label1.Font.Size:=Floor(50*(Form3.Width/Screen.Width)*(Form3.Height/Screen.Height));
end; 

现在我想获取表单上所有组件的数组,所以我循环并重新调整它们的大小。

任何帮助,如果有预定义的选项或程序,请告诉我它(如响应)

谢谢

1 个答案:

答案 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;

请注意,某些控件(例如TPanelTTabSheet)可以为其他控件添加父级,因此它们会有自己的Controls列表。你也需要循环使用它们。