Конструктор форм VCL предлагает розовые рекомендации по выравниванию элементов управления на соответствующих текстовых базовых линиях:
Но насколько я могу сказать, это не работает для меток и флажков. Обновление:. Он работает с метками, если вы размещаете элементы управления точно, например. на Ctrl - arrow. Это работает для флажков - см. Снимок экрана.
Теперь, в некоторых формах я создаю элементы управления в коде, например.
ed := TEdit.Create(Self);
ed.SetBounds(...);
ed.Parent := SomePanel;
и т.д.. Как я могу обеспечить, чтобы их текстовые базовые строки были выровнены? Я хотел бы иметь это для редактирования, comboboxes, label и checkboxes. Результат должен выглядеть так (без красной линии, конечно:-)):
Изменить: Мой текущий подход - вызвать что-то вроде AlignTop(8, [Edit1, ComboBox1], [CheckBox1, Label1]);
с помощью
procedure ControlArray_SetTop(const AControls: array of TControl; ATop: Integer);
var
i: Integer;
begin
for i := Low(AControls) to High(AControls) do
AControls[i].Top := ATop;
end;
procedure AlignTop(ATop: Integer; const AControls: array of TControl; const ALabelLikeControls: array of TControl);
begin
ControlArray_SetTop(AControls, ATop);
ControlArray_SetTop(ALabelLikeControls, ATop + 3);
end;
Моя цель - заменить его чем-то более надежным и менее взломанным.