Hỏi về hidecolumnheads trong listview

Liên hệ QC

thuyyeu99

Trùm Nhiều Chuyện
Tham gia
6/6/08
Bài viết
1,729
Được thích
875
các anh chị cho em hỏi có cách nào gõ tiếng việt trong mục hidecolumnheads trong listview không.

cám ơn các anh chị quan tâm
 
các anh cho em hỏi trong LV có cách nào thay đổi màu của các đường kẻ và màu của dòng mình dang chọn không ?
 
Upvote 0
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?

Bạn có thể tham khảo tại đây :
-- CV--
 
Upvote 0
Bạn chọn Properties như các điều khiển khác, trên dòng Customs bạn nhấn dấu 3 chấm sẽ mở ra cửa sổ định dạng riêng của Listview, trong đó có yêu cầu của bạn.
 
Upvote 0
Anh có thể cho em một ví dụ về tìm kiếm trên cột 2 theo hướng dẫn được không. Em làm thử mà không được
 
Upvote 0
To kieuvietphuong:Dưới đây là đoạn mã lọc trên cột 2 của file kèm theo bài 58

Mã:
[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]
Bạn xem lại nhé
 
Upvote 0
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
 
Lần chỉnh sửa cuối:
Upvote 0
Đúng là FindItem chỉ tìm trên cột đầu. Nhưng mình vận dụng các chức năng khác để duyệt và tìm tiếm chứ. Ví dụ của mình đâu có dùng FindItem.
List phụ chỉ là cái thông báo cho bạn thôi, nó có thể thay bằng Msgbox hay sử dụng kết quả vào việc gì thì tùy theo ý bạn mà vận dụng.
Một lần nữa là FindItem chỉ tìm trên cột Index thôi.
 
Lần chỉnh sửa cuối:
Upvote 0
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

FindItem cho phép ta tìm kiếm trên các Sub Item, tuy nhiên nó lại không cho ta xác định là ở cột nào.
Đây là Code : Mặc dù là lvwPartial nhưng nó lại là tìm kiếm chính xác lvwWhole (!?)
và không biết cách nào để lấy được chỉ số cột của Item tìm được (!?)
PHP:
    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

Còn nếu bạn muốn chỉ tìm trong 1 cột nhất định thì đây là UDF :


PHP:
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
-- Chúc vui--
 
Upvote 0
UDF này rất hay
Em thử chạy tốt và code tìm kiếm rút ngắn lại rất nhiều. Tùy biến trong việc tìm kiếm các cột. Hỗ trợ nhập liệu trong ứng dụng nhanh nếu dữ liệu được Sort. Duy chỉ có tốc độ tìm kiếm chưa bằng FindItem.
Cám ơn anh nhiều.
 
Lần chỉnh sửa cuối:
Upvote 0
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
 
Lần chỉnh sửa cuối:
Upvote 0
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

Bạn tham khảo nhé :

PHP:
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
--CV--
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom