はじめまして。
ちょめぞうと申します。
ツリービューの「+」をクリックした時に、
クリックした項目名を取得したいのですが、
下記の方法(A)では、うまくいきません。
-----------------------
(A)
procedure TForm1.TreeView1Click(Sender: TObject);
begin
showmessage(TreeView1.Selected.Text);
end;
-----------------------
次の(B)では、当然うまく行きます。
-----------------------
(C)
+ 親
+ [子] ← 子にフォーカスがある状態で、子の+をクリック
結果: 予想通り「子」のアラートが出る。
-----------------------
ツリービュー.Selectedは
現在フォーカスの当たっている項目を取得してしまう為
(C)のような現象が起こってしまいます。
-----------------------
(C)
+ [親] ← フォーカスが当たっている状態
+ 子 ← 子の+をクリック
結果: 「子」と出したいのに、「親」のアラートが出る。
-----------------------
簡単にはできないのでしょうか?
ツリービューのサブクラス化など(? よくわかってませんが)
難しい事をしないといけないかったりしますか?
ご教授お願い致します。
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;
anoneさん
素早く的確なレス 有難う御座いました!
anoneさんに教えて頂いた方法と
OnExpandingイベントハンドラを使用することにより
解決致しました。
多謝です。
ツイート | ![]() |