listview能否实现这样的功能:
从数据库读数据,放至listview。之后右键单击某条记录,选择有删除、编辑、增加功能。之后弹出新的Form。右键这里怎么做?对listview从没有用过,希望各位大侠能给出例子!谢谢!!!周一就要完成!各位帮忙!

解决方案 »

  1.   

    PopupMenu mnuPop 'mnuPop为右键菜单名
      

  2.   

    PopupMenu mnuPop 'mnuPop为右键菜单名
      

  3.   

    这个我有完整的例子,前不久还做了一个:
    在主窗口的菜单中添加如下菜单项
    一级菜单 mnuPop Caption属性设为空 Enable属性设为False
    二级菜单 mnuPopAdd Caption属性设为“增加” Enable 及Visible均设为True
             mnuPopDelete Caption属性设为“删除” Enable 及Visible均设为True
             mnuPopUpdate Caption属性设为“修改” Enable 及Visible均设为True在模块中增加
    '用于控制右键菜单
    Public Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
    Public Declare Function GetMenu Lib "user32" (ByVal hWnd As Long) As Long
    Public Declare Function GetSubMenu Lib "user32" (ByVal hWnd As Long, ByVal nPos As Long) As LongPublic Type POINTAPI
        X As Long
        Y As Long
    End Type
      

  4.   

    在主程序中实现:'********************************************************************************
    '*   模块名称:frmMain
    '*   功能描述:系统主窗体
    '*   设    计:ajiu
    '********************************************************************************
    Private mbFlag          As Boolean      '用户树型控件操作
    Private mNode           As Node         '当前节点
    Private mItem           As ListItem     '当前列表项
    '点击右键,就会出现在结点位置出现右键菜单
    Private Sub tvwData_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
        If Button = vbRightButton And mbFlag Then Call DisplayMenu(0, mNode.Key)
    End SubPrivate Sub tvwData_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
        mbFlag = False
    End SubPrivate Sub tvwData_NodeClick(ByVal Node As MSComctlLib.Node)
        mbFlag = True                '给显示右键菜单做标记
        If mNode.Key <> Node.Key Then
            Set mNode = Node                '设置当前结点
            mNode.Selected = True
            Call TreeViewToListView(mNode)
        End If
    End Sub
      

  5.   

    补充:弹出菜单项的函数
    Private Sub DisplayMenu(ByVal Flag As Long, ByVal Key As String)
        Dim bFlag           As Boolean
        Dim Pos             As POINTAPI
        Dim hMenu           As Long
        Dim skinForm        As skinForm
        
        If Not bFlag Then GoTo ExitHandler
        If Flag = 0 Then
            mnuPopAdd.Visible = True
            mnuPopAdd.Caption = "增加->" & mNode.Text
            mnuPopDelete.Visible = False
            mnuPopSep.Visible = False
            mnuPopUpdate.Visible = False
        Else
            mnuPopDelete.Visible = True
            mnuPopUpdate.Caption = "修改->" & mItem.Text
            mnuPopSep.Visible = True
            mnuPopUpdate.Visible = True
            mnuPopDelete.Caption = "删除->" & mItem.Text
            mnuPopAdd.Visible = False
        End If
        GetCursorPos Pos
        hMenu = GetM(Me.hWnd)
        hMenu = GetSubMenu(hMenu, 1)
        Set skinForm = Skn.GetSkinnedWindow(hWnd)
        skinForm.TrackPopupMenu hMenu, Pos.X, Pos.Y
    ExitHandler:
    End Sub
      

  6.   

    完全可以,先添加菜单条:其中包括增加、编辑、删除等菜单项;
    然后把菜单设为隐藏;在在listview的keydown事件中,控制当按了右键,就弹出相应的菜单!定义如下:PopupMenu mnuPop 'mnuPop为菜单条的名称这样不就可以实现了!
      

  7.   

    先添加菜单条:其中包括增加、编辑、删除等菜单项;
    然后把菜单设为隐藏;在在listview的keydown事件中,控制当按了右键,就弹出相应的菜单!
    能后再根据当前记录进行操作就OK了