我有一些 data output text boxes (没有边框且背景与窗口其余部分相同的文本框)我试图与标准编辑控件 + 旋转按钮对齐,以表示一列数字,其中一个可以编辑:
我可以在 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 为其旋转按钮留出空间。
最佳答案
使用 Win32 API GetWindowRect()
和 GetClientRect()
方法。边界将是两个矩形之间的差异。不过,那只会给你边界。客户区内可能有额外的间距。
关于windows - 对齐文本框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10822087/