windows - 对齐文本框

标签 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 为其旋转按钮留出空间。

最佳答案

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

关于windows - 对齐文本框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10822087/

相关文章:

windows - 如何在批处理脚本中的多个文件上重命名和添加递增数字后缀?

Windows 操作系统消息体系结构

windows - 无法在Windows上启动Zookeeper for kafka

delphi - 如何声明 TDictionary 枚举器?

windows - Sphinx 在服务重启之前不更新?

Delphi指针语法

delphi - 动态创建 Tpagecontrol 实例

php - 多个 wordpress 可以从一个数据库中获取信息吗?

Magento:如何判断您是在 .phtml 文件中的类别页面还是产品页面

php - 如何将主题名称从默认更改为 laravel 中的任何名称