TStringGrid - 固定セル間のダブルクリックイベントの拾い方

解決


maco  2005-07-12 15:47:14  No: 16323  IP: 192.*.*.*

TStringGrid.Optionに「goColSizing := True」が指定されている場合、
列幅の変更が可能です。
その際に、
固定セル間のダブルクリックイベントを拾いたいのですが、
何か良い方法がないでしょうか?
(固定セル間 = カーソルが[←‖→]となる位置)

Excelのように、
固定セル間がダブルクリックされると、
セル内文字にあわせ列幅を調整するような処理を考えています。

イベントを調べてみると、固定セルをダブルクリックすると
以下の順序でイベントが起きているようです。
 1.MouseUp    (クリック一回目 MouseClick・MouseDown発生せず)
 2.DblClick  (クリック二回目) ← ここで列幅 自動調整
 3.MouseDown  (クリック二回目)
 4.MouseUp    (クリック二回目)
という順番でイベントが発生しています。

今困っているのは、DblClickイベントでは
どの固定セル間がクリックされたか分からないということです。

1.のMouseUpの引数(X,Y)から固定セル間かどうか判別し、
固定セルならばフラグを立てるなどの処理をすれば、
固定セル間のダブルクリック判別が出来そうですが、
余りスマートでないと感じ、皆さんの知恵を拝借したく質問しました。

[補足]
  固定セル間 (カーソル[←‖→]) は、
  各セル間の±3pxのようです


よろしくお願いします。

編集 削除
えと  2005-07-12 16:12:46  No: 16324  IP: 192.*.*.*

そのスマートでない方法で解決が定説ですが

編集 削除
maco  2005-07-13 07:18:02  No: 16325  IP: 192.*.*.*

「えと」さんありがとうございます。
やはりその方法しかないですか…。

固定セル間にマウスを置くとカーソルが「←‖→」になるので、
Cursor値で判別したら、ダブルクリックされたセルの判別が
出来るかと思い試してはみたのですが…。
カーソルの形は変化しても、Cursorで取得できる値は
プロパティで指定した値でした。

やはりDblClickイベント前に発生するMouseUpイベントで
引数(X,Y)とColWidths[]から、MouseDownの場所が
固定セル間かどうか判別する方法しかないようですね。

ありがとうございました。

編集 削除