Treeviewで、
Test1(親アイテム)
Test2(子アイテム)
Test3(子アイテム)
Test4(子アイテム)
Text2-1(親アイテム)
Test2-2(子アイテム)
Test2-3(子アイテム)
Test2-4(子アイテム)
があったとします。
そこで、たとえば、Test2-2のアイテムをクリックしたら、フォームを表示して、Test3をクリックしたらメッセージを表示するようにするにはどうすればいいのでしょうか。
子アイテムかどうかを判断する場合TTreeNodeのLevelかParentで判断できると思いますが、個々にイベントを発生させるのであれば目的のイベントを先に定義しておき、子アイテムのオブジェクトにするのが適当だと思われます。
...で、TreeviewのOnChangeかOnClickイベントに次のように定義すれば実行できるはずですが….
procedure MyTreeview.OnChange(Sender: TObject);
begin
end;
いけね、中身入れずに送信した。
でもわかりますよね
これは質問の順序が逆です。
OnClick でどのノードがクリックされたかを判断するには?
ってことなのでは?
違ってたらすみません。
>OnClick でどのノードがクリックされたかを判断するには?
はい、基本的にそういうことです。
OnMouseDown または OnMouseUpイベントで、GetNodeAt(X, Y)関数を使いましょう。
たんに Selected 見るだけでしょ
>OnMouseDown または OnMouseUpイベントで、GetNodeAt(X, Y)関数を使いましょう。
初歩的な質問ですが、GetNodeAt(X, Y)関数はどうするのでしょうか。インターネットやヘルプを見たりしたのですが、もう1つ意味がわからなかったので・・・。
今回の質問では Selected で十分
if TreeView1.Selected <> nil then
begin
if (TreeView1.Selected.Text = 'Test2-2') then
Form1.Show;
if (TreeView1.Selected.Text = 'Test3') then
ShowMessage('Test3');
end;
もっとスマートな方法あるよね。
>if TreeView1.Selected <> nil then
>begin
> if (TreeView1.Selected.Text = 'Test2-2') then
> Form1.Show;
>
> if (TreeView1.Selected.Text = 'Test3') then
> ShowMessage('Test3');
>end;
>
>もっとスマートな方法あるよね。
ありがとうございます。
解決しました。
ツイート | ![]() |