4

我有一些数据输出文本框(没有边框且与窗口其余部分具有相同背景的文本框),我试图与标准编辑控件 + 旋转按钮对齐,以表示一列数字,其中一个可以编辑:

截屏

我可以在 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 为其旋转按钮留出空间。
4

1 回答 1

2

使用 Win32 APIGetWindowRect()GetClientRect()方法。边界将是两个矩形之间的差异。不过,那只会给你边界。客户区内可能有额外的间距。

于 2012-05-30T20:54:44.750 回答