我有一些数据输出文本框(没有边框且与窗口其余部分具有相同背景的文本框),我试图与标准编辑控件 + 旋转按钮对齐,以表示一列数字,其中一个可以编辑:
我可以在 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 为其旋转按钮留出空间。