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的东西取而代之.
该指南在设计时代码中实施,许可证禁止您随应用程序一起提供,因此您只能使用它来从中学习,然后自行重新实现.抬头
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()
.
归档时间: |
|
查看次数: |
653 次 |
最近记录: |