Public Function ListViewFindItem(sFindItem As String, lvFind As ListView, [eValueType As elvSearch], [lSearchFor As Long = 1], [lIndexBeginFrom As Long = 1]) As ListItem
'Purpose : Finds and selects and item in a listview'Inputs : sFileName The path and file name of the component to register.
' lvFind The listview to search for the item in.
' [eValueType] The type of values to search:
' 1 = Searches the text items.
' 2 = Searches sub items.
' 4 = Searches the item tags.
' [lSearchFor] The type of matching required:
' lvwWhole = Find whole word.
' lvwPartial = Find a partial match.
' [lIndexBeginFrom] The item index to begin the search from.
Có ai biết Cho Mình hỏi code để dùng hàm trên để tìm trên listView từ cột thứ 2 như thế nào?
[COLOR=Blue]Private Sub CommandButton3_Click()
Call CommandButton4_Click [COLOR=Orange] 'Lệnh xóa dấu kiểm và xóa List.2[/COLOR]
matim = Me.TextBox7
For i = 1 To Me.ListView1.ListItems.Count
If InStr(1, Me.ListView1.ListItems.Item(i).SubItems(1), matim, 0) > 0 Then [COLOR=Orange]'Nếu tìm thấy thì.....[/COLOR]
Me.ListView1.ListItems.Item(i).Checked = True [COLOR=Orange]'Đánh dấu hộp kiểm[/COLOR]
Call nap_loc(i) [COLOR=Orange]'Thêm dòng tìm thấy vào Lìst[/COLOR]
End If
Next
Me.ListView1.SetFocus
End Sub
Private Sub CommandButton4_Click()
[COLOR=Orange]'Xóa tất cả các dấu kiểm của List1[/COLOR]
For i = 1 To Me.ListView1.ListItems.Count
If Me.ListView1.ListItems.Item(i).Checked = True Then
Me.ListView1.ListItems.Item(i).Checked = False
End If
Next
[COLOR=Orange]'Xóa hết List2 trước khi nạp mới[/COLOR]
If Me.ListView2.ListItems.Count > 0 Then
Me.ListView2.ListItems.Clear
End If
End Sub
[/COLOR]
Anh ơi Ý em muốn là không cần dùng Litsview phụ.
Em thử đoạn code:
Private Sub TxtMaDV_Change()
Dim It As ListItem, i As Long
On Error Resume Next
Set It = Me.lwDSDV.FindItem(TxtMaDV, lvwSubItem, , lvwPartial)
' hoặc thay lvwtext + 1 theo đường dẫn của Lệnh Hồ Đại Hiệp mà không ra
i = It.Index
Me.lwDSDV.ListItems(i).Selected = True
Me.lwDSDV.ListItems(i).EnsureVisible
End Sub
Em thấy nhiều tài liệu nói FindIterm chỉ cho tìm trong cột đầu thôi. Không rõ có đúng vậy không
Dim LVFind As ListView
Dim MyItem As ListItem
Dim RowItem As Long
Set MyItem = LVFind.FindItem(MaFind, 1, , lvwPartial)
If MyItem Is Nothing Then Exit Sub
RowItem = MyItem.Index
MsgBox RowItem
Function TimRowItemLV(MaFind As String, LVFind As ListView, Cot As Integer, _
Optional TimChinhXac As Boolean = True) As Long
On Error Resume Next
If LVFind.ListItems.Count = 0 Then Exit Function
Dim i As Integer
With LVFind
If TimChinhXac = True Then
For i = 1 To LVFind.ListItems.Count
If .ListItems.Item(i).SubItems(Cot - 1) = MaFind Then
TimRowItemLV = i
Exit Function
End If
Next
Else
For i = 1 To LVFind.ListItems.Count
If InStr(1, .ListItems.Item(i).SubItems(Cot - 1), MaFind) Then
TimRowItemLV = i
Exit Function
End If
Next
End If
End With
Set LVFind = Nothing
End Function
Cho em hỏi
Có code nào sort dữ liệu trên các cột listview ngoài cột đầu tiên không. Khi load dữ liệu vào listview là sort luôn không cần phải sự kiện nhấn columnheader hoặc sự kiện khác
Thân
Sub SortLVTheoCot(AllLV As ListView, Optional Cot As Long = 1, _
Optional Ascending As Boolean = True)
If Cot < 1 Then Exit Sub
If Cot > AllLV.ColumnHeaders.Count Then Exit Sub
With AllLV
.Sorted = True
.SortKey = Cot - 1
.SortOrder = IIf(Ascending = True, lvwAscending, lvwDescending)
End With
End Sub