4

いくつかのデータ出力テキスト ボックス(境界線がなく、ウィンドウの残りの部分と同じ背景を持つテキスト ボックス) があり、数値の列を表すために、標準の編集コントロール + スピン ボタンに合わせようとしています。そのうちの 1 つを編集できます。

スクリーンショット

これらを Delphi/C++Builder フォーム デザイナで手動で揃えることはできますが、別のバージョンの Windows または別の DPI でフォームを表示すると、おそらくスピンボタンの間隔、境界線など

EM_GETMARGINS を使用してスピン ボタンの幅を決定することはできますが、エディット コントロールの余白と境界線のサイズを決定するにはどうすればよいでしょうか。EM_POSFROMCHAR、ClientToScreen、GetSystemMetrics(SM_CXBORDER)、GetSystemMetrics(SM_CXEDGE)、および GetThemeMargins のさまざまな組み合わせを試しましたが、これまでのところ、機能し、意味のある組み合わせが見つかりません。

詳細:

  • 環境は Delphi / C++Builder XE2 です。
  • データ出力コントロールは、BorderStyle bsNone を持つ TEdit です。
  • 編集 + スピン ボタンは TJvSpinEdit です。ソースを表示すると、EM_SETMARGINS を使用してスピン ボタン用のスペースが確保されます。
4

1 に答える 1

2

Win32 APIGetWindowRect()GetClientRect()メソッドを使用します。境界は、2 つの長方形の違いになります。ただし、それは境界を与えるだけです。クライアント領域内に余分なスペースが存在する可能性があります。

于 2012-05-30T20:54:44.750 に答える