学PB吧,PB的数据窗口实现起来特简单.

解决方案 »

  1.   

    你所说的这个效果,最好用LISTVIEW来实现,
    因为MSHFLEXGRID不允许隔行选择。如果说访问MSHFLEXGRID的选定区域属性,你用
    Row,RowSel,Col,ColSel几个属性就可以了。
      

  2.   

    MSHFlexGrid不能用Ctrl间断选择单元格,只能用Shift连续选择范围内的单元格可用如下属性确定选定的行:选择起始行数:MSHFlexGrid.Row
    选择结尾行数:MSHFlexGrid.RowSel
    中间的行全是选择上的用这两个属性就可以像你想像的那样处理了
      

  3.   

    MSHFlexGrid没有这个功能,只能靠写代码实现,我的实现思路是这样的:
    1、先屏蔽调MSHFlexGrid的大选择、突出显示功能,这样网格就不会选择颜色了。
    2、定义一个变量(可以使集合类型)用来保存选择行数。
    3、根据MonuseDown事件中,将当前选择的行加到定义集合变量中,并将当前行填上选择颜色。
    4、最后要注意的是,当没有按住Ctrl应清除其他选择行的颜色,并清掉刚才定义的集合变量。
    5、另外,要配合RowColChange、KeyDown等事件。
      

  4.   

    yanz(飞燕),竹子 请把你们的代码给我参考看看!急
      

  5.   

    关于Ctrl键keydown和鼠标左健的mousedown怎么才能相结合起来进行多行选择?
      

  6.   

    Private Sub MSHFlexGrid_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
     If Button = vbLeftButton And Shift = vbShiftMask Then
       MsgBox "click me"
     End If
    End Sub
    我怎么把所有的选择行加起来,且当没有按住Ctrl应清除其他选择行
      

  7.   

    建议你用TrueDBGrid控件试试 下载http://www.vckbase.com/ocx/ocx_report/TrueDBGrid7.zip
      

  8.   

    to junglerover(灌木丛):
      我现在改用listview来实现 Ctrl,Shift,与鼠标配合的多行选择,但代码应该怎么写才能实现那种效果?如能给出些代码不胜感激,高分向送。  
    就好像是Outlook删除垃圾箱里的信件时,不想全部删除,想指定删除。我该如何编写代码?高手请赐教。
      

  9.   

    奇怪,我就是想不通,这个问题实现有那么麻烦吗?
    只要设置一两个属性就可以用CTRL、SHIFT配合鼠标
    进行多行选择了啊。然后不就可以删除?你放一个LISTVIEW和一个BUTTON到FORM上,然后用以下
    代码:Private Sub Command1_Click()
        Dim i As Long
        For i = ListView1.ListItems.Count To 1 Step -1
            If ListView1.ListItems(i).Selected = True Then
                ListView1.ListItems.Remove i
            End If
        Next i
    End SubPrivate Sub Form_Load()
        Dim i As Long
        
        ListView1.MultiSelect = True
        ListView1.View = lvwReport
        ListView1.ColumnHeaders.Add , , "Test"
        
        For i = 1 To 10
            ListView1.ListItems.Add , , "Test" + CStr(i)
        Next i
    End Sub这样你不就可以在LISTVIEW里多选几行,然后删除了?
    实在很简单啊老兄。
      

  10.   

    奇怪,我就是想不通,这个问题实现有那么麻烦吗?
    只要设置一两个属性就可以用CTRL、SHIFT配合鼠标
    进行多行选择了啊。然后不就可以删除?你放一个LISTVIEW和一个BUTTON到FORM上,然后用以下
    代码:Private Sub Command1_Click()
        Dim i As Long
        For i = ListView1.ListItems.Count To 1 Step -1
            If ListView1.ListItems(i).Selected = True Then
                ListView1.ListItems.Remove i
            End If
        Next i
    End SubPrivate Sub Form_Load()
        Dim i As Long
        
        ListView1.MultiSelect = True
        ListView1.View = lvwReport
        ListView1.ColumnHeaders.Add , , "Test"
        
        For i = 1 To 10
            ListView1.ListItems.Add , , "Test" + CStr(i)
        Next i
    End Sub这样你不就可以在LISTVIEW里多选几行,然后删除了?
    实在很简单啊老兄。
      

  11.   

    感谢老兄,我一直用 listview_mousedown 事件,还用了集合,Ctrl和鼠标我是解决了,但shift和Ctrl和鼠标在一起我费了不少力气,
    用的是 ListView1.HitTest(x, y),20份虽然不多,但也是心意