TreeViewの子ノードを右クリックをした時の処理


ウメ子  2006-02-04 00:42:56  No: 130051

TreeViewの子ノードを左クリックと右クリックした時で処理を分けたいのですが、どうすれば良いのかわかりません。
アドバイスを宜しくお願い致します。


ウメ子  2006-02-04 00:47:51  No: 130052

書き忘れていましたが、VB6.0を使用しています。


特攻隊長まるるう  2006-02-06 19:48:05  No: 130053

過去ログ検索『右クリック』や『TreeView』などを実行し、
参考になるコードを探してみて下さい。

MouseDown イベントの引数 Button を使ってみてください。


我龍院忠太  2006-02-07 03:40:41  No: 130054

右クリックの場合Clickイベントが起きない為、どのノードが
クリックされたか判らないのよね。
私の場合は結局あきらめて、一度左クリックでノードを決定させて、
それから右クリックを受け付ける様にしました。
これなら、特攻隊長さんのMouseDownが使える。


X_File  2006-02-07 09:26:53  No: 130055

VBもTreeViewをサブクラス化してlParamで
NM_RCLICKでできたっけかなー?


あっきー  2006-02-07 09:45:17  No: 130056

こんな感じでもいけるんじゃないかな。

1)TreeViewのMouseDownイベントでHitTestメソッドを使用してその時のノードを取得
2)MouseUpイベントでHitTestメソッドを使用して1)で取得したノードと一致
    かつ取得したノードがNothingでないなら
3)MouseUpイベントの引数Buttonを調べて右ボタンであれば右クリックとする


我龍院忠太  2006-02-07 17:31:25  No: 130057

勘違いがありました、これだけでいけました、失礼しました。orz
Dim intButton As Integer
Private Sub TreeView1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    intButton = Button
End Sub
Private Sub TreeView1_Click()
    If intButton = 1 Then
        MsgBox ("左クリック")
    ElseIf intButton = 2 Then
        MsgBox ("右クリック")
    End If
End Sub


ノード  2006-02-07 20:09:15  No: 130058

> 勘違いがありました、これだけでいけました
>
それも勘違い。


特攻隊長まるるう  2006-02-07 21:03:47  No: 130059

>> 勘違いがありました、これだけでいけました
>>
>それも勘違い。
理由も書いてくれると嬉しい。単純な動きなら問題無さそうだったけど?
>TreeViewの子ノードを左クリックと右クリックした時で処理を分けたい
用件は満たしてそうに思います。子ノードの展開時やノード以外の場所
のクリック処理は別の内容になってくるし、HitTest というキーワードも
出てます。今の段階で作り込んだコードを示しても…『理解できません』
とか言う人多いからなぁ…w。我龍院忠太さんのサンプルのレベルは適当な
レベルのようですが…。

勘違い(による不具合)の内容が具体的に書いてあると参考になります。


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




  


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