delphi - 相当于代码中的设计指南

标签 delphi designer delphi-2007 form-designer

VCL 表单设计器提供了粉色指南,用于在各自的文本基线上对齐控件: Guidelines in form designer
但据我所知,这不适用于标签和复选框。 更新:如果您准确地放置控件,它就适用于标签,例如通过Ctrl-箭头。它适用于复选框 - 请参阅屏幕截图。

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

ed := TEdit.Create(Self);
ed.SetBounds(...);
ed.Parent := SomePanel;

等等。如何确保它们的文本基线对齐?我想用它来编辑、组合框、标签和复选框。结果应该如下所示(当然没有红线:-)): base line aligned

编辑:我当前的方法是调用类似 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/

相关文章:

function - 整数函数结果 - "Value assigned to ' [函数名称 ]' never used"

windows - 可执行文件中的 RTTI 元数据存储在哪里?

delphi - 在 Delphi 中从任务栏隐藏应用程序不起作用

python - 使用 qt-designer 和 pyqt 创建简单的表单

delphi - 函数应该返回一条记录还是一个指针?

winforms - 如何在 WinForms 应用程序中使用 Delphi (2007) 控件?

ios - Delphi iOS MultipeerConnectivity InvitationHandler 导致访问冲突

html - Visual Studio 报表设计器仅显示 HTML

c++ - QT背景图片

multithreading - 在 delphi 2007 中启动挂起线程的正确方法是什么?