我成功编码了一个运行时事件,该事件在重新调整表单大小时会更改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;


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

关于delphi - 如何在Delphi中以表格的形式获取所有组件(Tlabel,Tedit…)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32702541/

10-13 02:43