MSFLEXGRID可否快速清除重复纪录(在线等待)
Private Sub Form_Load()
With MSFlexGrid1
.Rows = 1
.Cols = 1
.AddItem "4"
.AddItem "4"
.AddItem "3"
.AddItem "2"
.AddItem "3"
.AddItem "4"
End With
End Sub
我想加个command1来使MSFlexGrid1中重复纪录清除,最后只有3行,即"4"、"3"、"2",请问有什么快捷方法没?(当然实际中我的cols不会只是1列)
以前清除combo中的重复纪录我借鉴过别人方法(如下),有人指点下我如何根据MSFlexGrid中某列来清除重复纪录呢?:
Public Declare Function SendMessagebyString Lib _
"user32" Alias "SendMessageA" (ByVal hwnd As Long, _
ByVal wMsg As Long, ByVal wParam As Long, _
ByVal lParam As String) As Long
Public Const CB_FINDSTRINGEXACT = &H158
Public Const LB_FINDSTRINGEXACT = &H1A2
Private Sub Command2_Click()
Dim i As Integer
For i = combo1.ListCount - 1 To 1 Step -1
If SendMessagebyString(combo1.hwnd, CB_FINDSTRINGEXACT, -1, combo1.List(i)) < i Then
combo1.RemoveItem i
End If
Next i
End Sub
问题点数:60、回复次数:10Top
1 楼Ghost360(绝不是偶然)回复于 2005-04-07 11:49:57 得分 0
MSFlexGrid1.Cell(flexcpText, 0, 1, MSFlexGrid1.Rows - 1,MSFlexGrid1.Cols - 1) = ""Top
2 楼zergs(zergs)回复于 2005-04-07 12:02:23 得分 0
Ghost360(绝不是偶然) 在做什么哦?Top
3 楼viena(维也纳N02)回复于 2005-04-07 13:27:01 得分 20
没办法吧,
清空重新添加咯
如果是相邻单元,可以设置
MergeCells为flexMergeFree,合并包含相同内容的单元Top
4 楼viena(维也纳N02)回复于 2005-04-07 13:32:51 得分 0
设置MergeCells为flexMergeRestrictColumnsTop
5 楼zergs(zergs)回复于 2005-04-07 16:38:17 得分 0
没有其他方法么?因为我是通过一些图形查询出一些纪录,这些纪录自然会有重复的。所以。。。
先谢谢木头人。Top
6 楼wynbfqny(今无心)回复于 2005-04-07 16:54:32 得分 40
Private Sub Form_Load()
With MSFlexGrid1
for i=1 to .rows-1
for j=1 to .RowSel-1
if .TextMatrix(i,1)=.textmatrix(j,1) then
.RemoveItem
next j
next i
End With
End Sub
Top
7 楼ljhdi( )回复于 2005-04-07 17:07:10 得分 0
来学习的Top
8 楼wynbfqny(今无心)回复于 2005-04-07 17:14:19 得分 0
不好意思,有些错误
Private Sub Form_Load()
With MSFlexGrid1
k=0
for i=1 to .rows-1
for j=1 to .RowSel-1
if .TextMatrix(i+k,1)=.textmatrix(j,1) then
.RemoveItem
k=k+1
exit for
endif
next j
next i
End With
End Sub
Top
9 楼zergs(zergs)回复于 2005-04-09 08:16:45 得分 0
Dim i, j As Integer
With MSFlexGrid1
k = 0
Combo2.Clear
Dim ind() As Integer
ReDim ind(.Rows) As Integer
For i = 1 To .Rows - 2
For j = i + 1 To .Rows - 1
If .TextMatrix(i, 0) = .TextMatrix(j, 0) Then
Combo2.AddItem i
End If
Next j
Next i
End With
Combo2.ListIndex = 0
For i = Combo2.ListCount - 1 To 1 Step -1
If SendMessagebyString(Combo2.hwnd, CB_FINDSTRINGEXACT, -1, Combo2.List(i)) < i Then
Combo2.RemoveItem i
End If
Next i
For i = Combo2.ListCount - 1 To 0 Step -1
MSFlexGrid1.RemoveItem Combo2.List(i)
Next i
Public Declare Function SendMessagebyString Lib _
"user32" Alias "SendMessageA" (ByVal hwnd As Long, _
ByVal wMsg As Long, ByVal wParam As Long, _
ByVal lParam As String) As Long
Public Const CB_FINDSTRINGEXACT = &H158
Public Const LB_FINDSTRINGEXACT = &H1A2
借助于1个隐藏的combo2,将数值写到combo2,清除重复纪录号,再清除纪录。
通过麻烦点的办法可以实现了。呵呵。
今无心的下标会出界的。Top
10 楼wynbfqny(今无心)回复于 2005-04-09 08:59:02 得分 0
不好意思,没有调试过,呵呵,下标出界自已改下就行了Top




