Access-VBA:如何在TreeView-NodeClick中检测鼠标键

时间:2014-07-24 09:51:07

标签: vba ms-access click treeview access-vba

我有一个带有Click-Event的TreeView。由于我需要通过右键单击来实现面向节点的下拉菜单菜单,如果按下右鼠标按钮,我如何检查现有的Click-Event。到目前为止,我的Methode看起来像这样:

Private Sub tvwKategorien_NodeClick(ByVal Node As Object)
    Dim sBez1 As String
    Dim sLangtext As String
    Dim sWKZ As String
    Dim sSprache As String
    Dim dPreis As Double
    If ((Node Is Nothing) = False) Then
        If mbParseNodeKeyAndTag(Node) Then
            Set moSelectedNode = Node
            If msKategorie = frmArtikelgruppenRoot Then
                    Me.pagKategorie.Visible = False
                    Me.pagArtikel.Visible = False
                    Me.pagPicture.Visible = False
                    Me.pagCrosslinks.Visible = False
                    Me.SubArtikel.Visible = False
                    Me.txtKategorie = msKategorie
                    Me.txtBezeichnung = msBezeichnung
                    Me.PicArtikel.Visible = False
                    Call mEnableSubArtikel
           Else
                If mbIstNodeKategorie(moSelectedNode) Then
                    Me.pagKategorie.Visible = True
                    Me.pagArtikel.Visible = False
                    Me.pagPicture.Visible = False
                    Me.pagCrosslinks.Visible = False
                    Me.SubArtikel.Visible = True
                    Me.txtKategorie = msKategorie
                    Me.txtBezeichnung = msBezeichnung
                    Me.PicArtikel.Visible = False
                    If Node.Child Is Nothing Then
                        Dim oNodeParam As Node
                        Set oNodeParam = Node
                        Call mReadUntergruppen(oNodeParam, oNodeParam.Key, gnCInt(gsParameter(oNodeParam.Text, "Gruppenebene")) + 1)
                    End If
                    Call mEnableSubArtikel
                    Dim rs As Recordset
                    Set rs = Me.SubArtikel.Form.Recordset
                    If Not rs Is Nothing Then
                        Call mReadArtikel(Node, Node.Key, gnCInt(gsParameter(Node.Text, "Gruppenebene")) + 1)
                        Node.Expanded = True
                    Else
                        Node.Expanded = False
                    End If
                Else
                    Me.pagKategorie.Visible = False
                    Me.pagArtikel.Visible = True
                    Me.pagPicture.Visible = True
                    Me.pagCrosslinks.Visible = True
                    Me.SubArtikel.Visible = False
                    Me.txtArtNr = msBezeichnung
                    Me.txtArt = msBezeichnung & " " & gvntLookup("Matchcode", "KHKArtikel", "Artikelnummer='" & msBezeichnung & "' AND Mandant=" & gnManId, "")
                    cbBild.Value = "ITPWeb_"
                    Call mInitPicture
                    nil = gITPWebGetArtPreis(msBezeichnung, 0, sWKZ, dPreis, cbShop.Value)
                    Me.txtArtPreis = dPreis
                    Me.txtArtWkz = sWKZ
                    If gvntNull2Arg(cboSprache, "") = "" Then
                        sSprache = "W" & gvntManProperty(22)
                    Else
                        sSprache = CStr(cboSprache)
                    End If
                    nil = gITPWebGetArtBez(sSprache, msBezeichnung, sBez1, sLangtext)
                    Me.txtArtBezeichnung = sBez1
                    Me.txtArtLangtext = sLangtext
                    msAktuelleKategorie = Split(Node.Key, ";")(0)
                    Me.cboBonusprodukt.Locked = False
                    sSplit = Split(Node.Key, ";")
                    Me.cboBonusprodukt.Value = gvntLookup("BonusProduct", "ITPWebKategorienArtikel", "Artikelnummer=" & gsStr2Sql(msBezeichnung) & " AND Mandant=" & gnManId & " and Kategorie = " & gsStr2Sql(msAktuelleKategorie) & " and Pos = " & sSplit(getArrayLenght(sSplit)), 0)
                    Me.cboBonusprodukt.AllowValueListEdits = False
                    Me.txtBonuspunkte = gvntNull2Arg(gvntLookup("Bonuspunkte", "ITPWebKategorienArtikel", "Artikelnummer=" & gsStr2Sql(msBezeichnung) & " AND Mandant=" & gnManId & " and Kategorie = " & gsStr2Sql(msAktuelleKategorie) & " and Pos = " & sSplit(getArrayLenght(sSplit)), 0), 0)
                    Me.chkOrderable = gvntLookup("USER_ITPWebOrderable", "KHKArtikel", "Artikelnummer=" & gsStr2Sql(msBezeichnung) & " AND Mandant=" & gnManId, -1)
                    Me.chkShopActive = gvntLookup("USER_ITPWebShopActive", "KHKArtikel", "Artikelnummer=" & gsStr2Sql(msBezeichnung) & " AND Mandant=" & gnManId, -1)
                    Me.chkPricePush = gvntLookup("USER_ITPWebPricePush", "KHKArtikel", "Artikelnummer=" & gsStr2Sql(msBezeichnung) & " AND Mandant=" & gnManId, 0)
                    Call mEnableSubCrosslinks
                End If
            End If
        End If
    End If
    tvwKategorien_NodeClick_Error:
End Sub

我在VBA的访问文档中工作:(

1 个答案:

答案 0 :(得分:1)

您必须对您的树MouseDown使用tvwKategorien事件并标记一些模块变量,以便稍后在NodeClick

中进行检查

将它放在模块的开头,但是在Option字符串

之后
private MouseButton as Integer

添加MouseDown事件

Private Sub tvwKategorien_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As Long, ByVal y As Long)
     MouseButton =Button
End Sub

然后使用此条件检测现有NodeClick事件中的右键单击

If MouseButton = acRightButton Then ' right

If MouseButton = acLeftButton Then ' left