2012-03-13 13 views
4

私は編集コントロールの中に、左のアイコンと右のアイコンボタンの両方を追加するというカスタム編集コントロールを構築しています。これには、テキスト(およびカーソル)の開始点をXピクセル分だけ右にシフトする必要があります。これはまた、右のボタンのためのスペースを確保するために、テキストをどれだけ広げることができるかを「制限する」必要があることを意味します。ブラウザのように左側にカスタムアイコンと、編集コントロールの内容を消去するための右側の「X」ボタンの両方を提供することを意図しています。エディットコントロール内のカーソル位置をオフセットするには?

子孫TCustomEditのテキストとカーソルをどこに描画するのかをRectにオフセットする方法はありますか?

+0

また、別のカスタムコントロールを作成してその中に 'TEdit'を埋め込む方が良いでしょうか? –

+0

クリッピングを使用して、図面が外部ウィジェットを妨害しないようにするにはどうしたらよいですか? – OnTheFly

答えて

6

最新のバージョンのDelphiを使用している場合は、既にTButtonedEditコントロールがある必要があります。

もしそうでなければ、TCustomEditにEM_SETMARGINSメッセージを送信して、左右のマージンを設定することができると思います。

SendMessage(CustomEdit.Handle, EM_SETMARGINS, EC_LEFTMARGIN or EC_RIGHTMARGIN, MakeLong(LeftMargin, RightMargin)); 
+0

これは正しい(+ 1ed)が、このトピックをヒットするときには、多くの例で見たように、「内部」コントロールの下層レイヤーとして「TWinControl」が使用されています。これは、ここに表示されているように余白を設定しても編集がちらつくためですか?インスタンスボタンを作成し、その下層レイヤーなしで編集コントロールに親を設定するとどうなりますか? – TLama

+0

+1それはトリックをやってくれるようですね、ありがとう!実際、XE2のボタン付き編集についてはわかりませんでしたが、いくつかの機能も追加しています。基本的には検索ボックスになります。 –

+1

@ TLama私は実際にそのコントロールを実装していませんでしたが、DelphiではEM_SETMARGINSを使用してTButtonEditの公式バージョンを実装しているので、そのように実装する有効な方法と考えることができます。 – Justmade

関連する問題