相当于代码中的设计者指南

Uli*_*rdt 11 delphi designer delphi-2007 form-designer

VCL表单设计器提供粉红色指导,用于在各自的文本基线上对齐控件: 表单设计师指南
但据我所知,这对标签和复选框不起作用. 更新:如果您准确地放置控件,它适用于标签,例如Ctrl- arrow.它适用于复选框 - 请参见截图.

现在,在某些形式上,我正在代码中创建控件,例如

ed := TEdit.Create(Self);
ed.SetBounds(...);
ed.Parent := SomePanel;
Run Code Online (Sandbox Code Playgroud)

我如何确保其文本基线对齐?我想将它用于编辑,组合框,标签和复选框.结果应该是这样的(没有红线,当然:-)): 基线对齐

编辑:我目前的做法是调用像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;
Run Code Online (Sandbox Code Playgroud)

我的目标是用更强大,更少hacky的东西取而代之.

ain*_*ain 5

该指南在设计时代码中实施,许可证禁止您随应用程序一起提供,因此您只能使用它来从中学习,然后自行重新实现.抬头

DesignIntf.TBaseComponentGuidelines
DesignEditors.TComponentGuidelines
VCLEditors.TControlGuidelines
Run Code Online (Sandbox Code Playgroud)

类(在"{RADStudio\version}\source\ToolsAPI目录"中).也许它归结为简单的事情

Label1.Top := (Edit1.Top + Edit1.Height) - Label1.Height + GetMagicConstant;  
Run Code Online (Sandbox Code Playgroud)

在哪里GetMagicConstant类似TControlGuidelines.GetTextBaseline().