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

解決


ちょめぞう  2005-06-29 21:51:50  No: 16015

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

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

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

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

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

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

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

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

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

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

ご教授お願い致します。


anone  2005-06-29 22:36:38  No: 16016

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 23:12:48  No: 16017

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加