ツリービューのクリックした項目名取得

解決


ちょめぞう  2005-06-29 12:51:50  No: 16015  IP: 192.*.*.*

はじめまして。
ちょめぞうと申します。

ツリービューの「+」をクリックした時に、
クリックした項目名を取得したいのですが、
下記の方法(A)では、うまくいきません。

-----------------------
(A)
procedure TForm1.TreeView1Click(Sender: TObject);
begin
    showmessage(TreeView1.Selected.Text);
end;
-----------------------

次の(B)では、当然うまく行きます。

-----------------------
(C)
    + 親        
        + [子]    ←    子にフォーカスがある状態で、子の+をクリック


    結果: 予想通り「子」のアラートが出る。
-----------------------



ツリービュー.Selectedは
現在フォーカスの当たっている項目を取得してしまう為
(C)のような現象が起こってしまいます。


-----------------------
(C)
    + [親]      ←    フォーカスが当たっている状態
        + 子    ←    子の+をクリック


    結果: 「子」と出したいのに、「親」のアラートが出る。
-----------------------


簡単にはできないのでしょうか?
ツリービューのサブクラス化など(? よくわかってませんが)
難しい事をしないといけないかったりしますか?

ご教授お願い致します。

編集 削除
anone  2005-06-29 13:36:38  No: 16016  IP: 192.*.*.*

procedure TForm1.TreeView1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
  tn: TTreeNode;
begin
  tn := TTreeView(Sender).GetNodeAt(X,Y);
  if Assigned(tn) then ShowMessage(tn.Text);
end;

編集 削除
ちょめぞう  2005-06-29 14:12:48  No: 16017  IP: 192.*.*.*

anoneさん
素早く的確なレス  有難う御座いました!
anoneさんに教えて頂いた方法と
OnExpandingイベントハンドラを使用することにより
解決致しました。
多謝です。

編集 削除