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

解決


Lait  2005-07-12 18:16:27  No: 16331  IP: 192.*.*.*

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

編集 削除
篠田雅夫  2005-07-12 21:29:09  No: 16332  IP: 192.*.*.*

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

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

編集 削除
篠田雅夫  2005-07-12 21:31:07  No: 16333  IP: 192.*.*.*

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

編集 削除
あれ・・  2005-07-12 23:41:51  No: 16334  IP: 192.*.*.*

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

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

違ってたらすみません。

編集 削除
Lait  2005-07-15 16:34:43  No: 16335  IP: 192.*.*.*

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

編集 削除
それなら  2005-07-15 17:25:53  No: 16336  IP: 192.*.*.*

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

編集 削除
っていうか  2005-07-15 17:48:55  No: 16337  IP: 192.*.*.*

たんに Selected 見るだけでしょ

編集 削除
Lait  2005-07-16 15:54:25  No: 16338  IP: 192.*.*.*

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

編集 削除
だから  2005-07-16 18:37:17  No: 16339  IP: 192.*.*.*

今回の質問では Selected で十分

編集 削除
こんな感じ?  2005-07-18 00:57:38  No: 16340  IP: 192.*.*.*

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-19 15:56:39  No: 16341  IP: 192.*.*.*

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

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

編集 削除