对齐文本框

时间:2012-05-30 18:25:48

标签: windows delphi themes c++builder

我有一些data output text boxes(文本框没有边框,背景与窗口的其余部分相同),我正在尝试与标准编辑控件+旋转按钮对齐,以表示数字列,其中一个可以编辑:

screen shot

我可以在Delphi / C ++ Builder表单设计器中手动对齐这些,但是当我在不同版本的Windows或不同的DPI上查看表单时,文本不再是右对齐的,可能是因为旋转按钮间距,边框等的差异

我可以使用EM_GETMARGINS来确定旋转按钮的宽度,但是如何确定编辑控件的边距和边框的大小?我尝试过各种EM_POSFROMCHAR,ClientToScreen,GetSystemMetrics(SM_CXBORDER),GetSystemMetrics(SM_CXEDGE)和GetThemeMargins的组合,但到目前为止,我找不到一个有效且有意义的组合。

更多详情:

  • 环境是Delphi / C ++ Builder XE2。
  • 数据输出控件是带有BorderStyle bsNone的TEdits。
  • 编辑+旋转按钮是TJvSpinEdit。从查看其来源,它使用EM_SETMARGINS为其旋转按钮留出空间。

1 个答案:

答案 0 :(得分:2)

使用Win32 API GetWindowRect()GetClientRect()方法。边界将是两个矩形之间的差异。但这只会让你接近边界。客户区内可能有额外的间距。