Treeviewで、子アイテムをクリックするとイベントを起こすには?

解決


Lait  2005-07-13 03:16:27  No: 16331

Treeviewで、
Test1(親アイテム)
 Test2(子アイテム)
 Test3(子アイテム)
 Test4(子アイテム)
Text2-1(親アイテム)
 Test2-2(子アイテム)
 Test2-3(子アイテム)
 Test2-4(子アイテム)
があったとします。
そこで、たとえば、Test2-2のアイテムをクリックしたら、フォームを表示して、Test3をクリックしたらメッセージを表示するようにするにはどうすればいいのでしょうか。


篠田雅夫  2005-07-13 06:29:09  No: 16332

子アイテムかどうかを判断する場合TTreeNodeのLevelかParentで判断できると思いますが、個々にイベントを発生させるのであれば目的のイベントを先に定義しておき、子アイテムのオブジェクトにするのが適当だと思われます。
...で、TreeviewのOnChangeかOnClickイベントに次のように定義すれば実行できるはずですが….

procedure MyTreeview.OnChange(Sender: TObject);
begin
 
end;


篠田雅夫  2005-07-13 06:31:07  No: 16333

いけね、中身入れずに送信した。
でもわかりますよね


あれ・・  2005-07-13 08:41:51  No: 16334

これは質問の順序が逆です。

OnClick でどのノードがクリックされたかを判断するには?
ってことなのでは?

違ってたらすみません。


Lait  2005-07-16 01:34:43  No: 16335

>OnClick でどのノードがクリックされたかを判断するには?
はい、基本的にそういうことです。


それなら  2005-07-16 02:25:53  No: 16336

OnMouseDown または OnMouseUpイベントで、GetNodeAt(X, Y)関数を使いましょう。


っていうか  2005-07-16 02:48:55  No: 16337

たんに Selected 見るだけでしょ


Lait  2005-07-17 00:54:25  No: 16338

>OnMouseDown または OnMouseUpイベントで、GetNodeAt(X, Y)関数を使いましょう。
初歩的な質問ですが、GetNodeAt(X, Y)関数はどうするのでしょうか。インターネットやヘルプを見たりしたのですが、もう1つ意味がわからなかったので・・・。


だから  2005-07-17 03:37:17  No: 16339

今回の質問では Selected で十分


こんな感じ?  2005-07-18 09:57:38  No: 16340

if TreeView1.Selected <> nil then
begin
  if (TreeView1.Selected.Text = 'Test2-2') then
  Form1.Show;

  if (TreeView1.Selected.Text = 'Test3') then
  ShowMessage('Test3');
end;

もっとスマートな方法あるよね。


Lait  2005-07-20 00:56:39  No: 16341

>if TreeView1.Selected <> nil then
>begin
>  if (TreeView1.Selected.Text = 'Test2-2') then
>  Form1.Show;
>
>  if (TreeView1.Selected.Text = 'Test3') then
>  ShowMessage('Test3');
>end;
>
>もっとスマートな方法あるよね。

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


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

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






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