マウス操作でメニューを表示して行を追加することは可能でしょうか?
2017年10月10日
サンプルプログラムでは列のタイトルをマウス右クリックするとメニューが表示され、列の結合を行うものがありますが、これと同じようにマウス操作でメニューを表示して行を追加することは可能でしょうか?
説明
可能です。
対応
コーディングの手順は以下のようなかたちになります。
・メニューエディタで、メニューを作成する。
・タイムビューのMouseUpイベントでHitTestメソッドを呼び出し、ポップアップメニューを表示する場所にマウスポインタがあることを調べ、ポップアップメニューを表示する。
・メニューコマンドのイベントハンドラで、Items.Addメソッドを呼び出し、アイテムを追加する。
(例)
Private htrSav As HitTestResult
Private Sub KnTView1_MouseUp( _
Button As Integer, Shift As Integer, X As Single, Y As Single)
Set htrSav = KnTView1.HitTest(X, Y)
Select Case htrSav.ObjectType
Case tivCell, tivPiecePane, tivObjectNothing
‘既存の特定のセル、またはピース表示領域、表示要素のない領域にヒット
‘表示要素のない領域とは、アイテムの表示がない領域です。
If Button = vbRightButton Then
‘マウスの右ボタン押下を解放した場合
‘メニュー エディタで作成しておいたメニューポップアップを表示
PopupMenu mnuItem, vbPopupMenuRightButton
End If
End Select
End Sub
Private Sub mnuItemAdd_Click()
Dim itm As KnTViewLib.Item
If htrSav.ItemIndex <> 0 Then
‘マウスポインタが位置アイテムの上に挿入
Set itm = KnTView1.Items.Add(htrSav.ItemIndex)
Else
‘末尾に追加
Set itm = KnTView1.Items.Add
End If
itm.Cells(1) = “アイテム ” & itm.Index
End Sub
