VCL 表单设计器提供了粉色指南,用于在各自的文本基线上对齐控件:
但据我所知,这不适用于标签和复选框。 更新:如果您准确地放置控件,它就适用于标签,例如通过Ctrl-箭头。它适用于复选框 - 请参阅屏幕截图。
现在,在某些表单上,我正在代码中创建控件,例如
ed := TEdit.Create(Self);
ed.SetBounds(...);
ed.Parent := SomePanel;
等等。如何确保它们的文本基线对齐?我想用它来编辑、组合框、标签和复选框。结果应该如下所示(当然没有红线:-)):
编辑:我当前的方法是调用类似 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;
我的目标是用更强大、更少黑客的东西来取代它。
最佳答案
这些准则是在设计时代码中实现的,该许可证禁止您随应用程序一起发布,因此您只能使用它来学习,然后自己重新实现。向上看
DesignIntf.TBaseComponentGuidelines
DesignEditors.TComponentGuidelines
VCLEditors.TControlGuidelines
类(在“{RADStudio\version}\source\ToolsAPI 目录”中)。也许可以归结为一些简单的事情
Label1.Top := (Edit1.Top + Edit1.Height) - Label1.Height + GetMagicConstant;
其中GetMagicConstant
类似于TControlGuidelines.GetTextBaseline()
。
关于delphi - 相当于代码中的设计指南,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6923936/