TStringGrid.Optionに「goColSizing := True」が指定されている場合、
列幅の変更が可能です。
その際に、
固定セル間のダブルクリックイベントを拾いたいのですが、
何か良い方法がないでしょうか?
(固定セル間 = カーソルが[←‖→]となる位置)
Excelのように、
固定セル間がダブルクリックされると、
セル内文字にあわせ列幅を調整するような処理を考えています。
イベントを調べてみると、固定セルをダブルクリックすると
以下の順序でイベントが起きているようです。
1.MouseUp (クリック一回目 MouseClick・MouseDown発生せず)
2.DblClick (クリック二回目) ← ここで列幅 自動調整
3.MouseDown (クリック二回目)
4.MouseUp (クリック二回目)
という順番でイベントが発生しています。
今困っているのは、DblClickイベントでは
どの固定セル間がクリックされたか分からないということです。
1.のMouseUpの引数(X,Y)から固定セル間かどうか判別し、
固定セルならばフラグを立てるなどの処理をすれば、
固定セル間のダブルクリック判別が出来そうですが、
余りスマートでないと感じ、皆さんの知恵を拝借したく質問しました。
[補足]
固定セル間 (カーソル[←‖→]) は、
各セル間の±3pxのようです
よろしくお願いします。
そのスマートでない方法で解決が定説ですが
編集 削除「えと」さんありがとうございます。
やはりその方法しかないですか…。
固定セル間にマウスを置くとカーソルが「←‖→」になるので、
Cursor値で判別したら、ダブルクリックされたセルの判別が
出来るかと思い試してはみたのですが…。
カーソルの形は変化しても、Cursorで取得できる値は
プロパティで指定した値でした。
やはりDblClickイベント前に発生するMouseUpイベントで
引数(X,Y)とColWidths[]から、MouseDownの場所が
固定セル間かどうか判別する方法しかないようですね。
ありがとうございました。