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
 
Thủy Yêu coi cái này (có 2 LV) để ứng dụng cho bài của mình (lấy ý tưởng)
Chúc vui
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Thực tế mình cũng chưa bao giờ tìm hiểu đến việc unable từng item của Listview nên không biết có làm được không? Còn cho hiện hay không cả Listview thì được , nó tùy thuộc vào thuộc tính Visiable của đối tượng đó.
Nhưng việc dùng 1 cái listview chỉ để lưu trữ dũ liệu thì không nên vì nó làm chậm tiến trình load form và tốn nhiều tài nguyên không cần thiết. Có nhiều cách lưu tạm như lưu vào sheet tạm nào đó hoặc biến mả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?
 
Upvote 0
Bạn hỏi về hàm tìm kiếm UDF mà chỉ đúng có 1 dòng tên hàm thì ai mà biết cái hàm ấy ra làm sao mà có ý kiến. Một vấn đề nữa liên quan tới giải thuật:
-Tìm tất cả các dòng có ký tự như mẫu.
-Tìm tất cả (Hay dòng đầu tiên) có bắt đàu = mẫu...
Nói tóm lại là phải có yêu cầu cụ thể.
 
Upvote 0
Thực tế mình cũng chưa bao giờ tìm hiểu đến việc unable từng item của Listview nên không biết có làm được không? Còn cho hiện hay không cả Listview thì được , nó tùy thuộc vào thuộc tính Visiable của đối tượng đó.
Nhưng việc dùng 1 cái listview chỉ để lưu trữ dũ liệu thì không nên vì nó làm chậm tiến trình load form và tốn nhiều tài nguyên không cần thiết. Có nhiều cách lưu tạm như lưu vào sheet tạm nào đó hoặc biến mảng.


File của em dùng LB thì rất ok vì nó không khó Bằng LV. em đã gắn mọi sự kiện của LB vào LV ý của em là có cách nào làm ẩn LB (không cho nó hiện lên form mà vẫn có thể sử dụng nó)
 
Upvote 0
Xóa dữ liệu trên sheet tại dòng có mã =maxoa như thế nào chắc bạn làm được:
-Tìm dòng có mã=maxoa
-Xóa dòng đó đi.
Mình chỉ ví dụ xóa 1 dòng trên Listview thôi (Bạn có thể thêm checkbox vào List để có thể chọn và xóa nhiều dòng)

P/s: Không đủ thấy áy náy, xóa trên sheet1 bạn thêm vào lệnh xóa trên:

dong = Application.WorksheetFunction.Match(maxoa, Sheet1.[a1:a5000], 0)
Sheet1.Cells(dong, 1).EntireRow.Delete
(Dòng 5000 là mình tạm vậy cho nhanh còn trong chương trình nên tìm dòng cuối cùng có dữ liệu)

dù sao cũng cám anh sealand vì đã cho em 1 ý tưởng. em sẽ cố gắng làm nhưng không biết có thành công không vì em chẳng biết gì về lập trình. Dù sao cũng cám ơn anh
 
Upvote 0
E cứ xem code trong bài để ứng dụng cho công việc của em xem có được không. (Anh cũng chỉ là vọc cho vui chứ kg theo đạo Excel.)
Trong bài anh gửi sử dụng 2 LV trên 1 Form.
1/Trên LV thứ 1: Có thể lọc theo số CMT hoặc theo TEN.
2/Trên LV thứ 2: có thể Thêm/Xoá. và lọc theo CMT
3/Ở đay anh dùng LV và việc Load DL lên LV là từ các cột trong 1 Sheet nào đó chứ không dùng Mảng (rất chậm vì phải sử dụng 2 vòng For quét qua tất cả các ô) hay Name động (không làm tươi dữ liệu trên LV được và cũng chậm).

Em chay thử File anh gửi đẻ biết thêm. Anh viết code đơn giản nên kg khó đọc. Mong em có thể tìm thêm được 1 vài ý tưởng trên đó. Gom góp từng vấn đề nhỏ thành vấn đề lớn hơn. Nhưng đừng nên phức tạp hoá vấn đề.

Chúc em thành công.
 
Upvote 0
Bạn hỏi về hàm tìm kiếm UDF mà chỉ đúng có 1 dòng tên hàm thì ai mà biết cái hàm ấy ra làm sao mà có ý kiến. Một vấn đề nữa liên quan tới giải thuật:
-Tìm tất cả các dòng có ký tự như mẫu.
-Tìm tất cả (Hay dòng đầu tiên) có bắt đàu = mẫu...
Nói tóm lại là phải có yêu cầu cụ thể.
anh ơi, cái hàm này em tham khảo bài của Anh Lê Văn Duyệt trên diễn đàn File (StockCountHelper). Chi tiết của nó như sau:
Option Explicit
Option Base 1
Public Enum elvSearch
elvSearchText = 1
elvSearchSub = 2
elvSearchTag = 4
End Enum
Private Type LV_ITEM
Mask As Long
iItem As Long
iSubItem As Long
state As Long
stateMask As Long
pszText As String
cchTextMax As Long
iImage As Long
lParam As Long
iIndent As Long
End Type
' Color Constants
Public Const vbViolet = &HFF8080
Public Const vbVioletBright = &HFFC0C0
Public Const vbForestGreen = &H228B22
Public Const vbGray = &HE0E0E0
Public Const vbLightBlue = &HFFD3A4
Public Const vbLightGreen = &HABFCBD
Public Const vbGreenLemon = &HB3FFBE
Public Const vbYellowBright = &HC0FFFF
Public Const vbOrange = &H2CCDFC
' ListView API
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Function SendMessageLong Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
' ListView messages
Private Const LVM_FIRST = &H1000, LVM_GETNEXTITEM = (LVM_FIRST + 12)
Private Const LVNI_SELECTED = &H2, LVM_GETSELECTEDCOUNT = (LVM_FIRST + 50)
Private Const LVM_SETEXTENDEDLISTVIEWSTYLE = LVM_FIRST + 54, LVM_GETEXTENDEDLISTVIEWSTYLE = LVM_FIRST + 55
Private Const LVS_EX_FULLROWSELECT = &H20
Private Const LVIF_TEXT = &H1
Private Const LVM_SETITEMSTATE As Long = (LVM_FIRST + 43)
Private Const LVM_GETITEMSTATE As Long = (LVM_FIRST + 44)
Private Const LVM_GETITEMTEXT As Long = (LVM_FIRST + 45)
'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.
'Outputs : N/A
'Author : Andrew Baker
'Date : 25/11/2000 03:17
'Notes :
'Revisions :
Public Function ListViewFindItem(sFindItem As String, lvFind As Listview, _
Optional eValueType As elvSearch = elvSearchText + elvSearchSub + elvSearchTag, _
Optional lSearchFor As Long = lvwPartial, _
Optional lIndexBeginFrom As Long = 1) As ListItem
On Error Resume Next
'Try to find item
If eValueType And elvSearchText Then
'Search text
Set ListViewFindItem = lvFind.FindItem(sFindItem, lvwText, lIndexBeginFrom, lSearchFor)
End If
If eValueType And elvSearchSub And (ListViewFindItem Is Nothing) Then
'Search subitems
Set ListViewFindItem = lvFind.FindItem(sFindItem, lvwText, lIndexBeginFrom, lSearchFor)
End If
If eValueType And elvSearchTag And (ListViewFindItem Is Nothing) Then
'Search tags
Set ListViewFindItem = lvFind.FindItem(sFindItem, lvwText, lIndexBeginFrom, lSearchFor)
End If
If (ListViewFindItem Is Nothing) = False Then
'Found a matching item, display it.
Set lvFind.SelectedItem = ListViewFindItem
lvFind.SelectedItem.EnsureVisible
End If
On Error GoTo 0
End Function

Em chỉ muốn tìm trong cột thứ 2 trở đi, tìm (Hay dòng đầu tiên) có bắt đàu = mẫu, nếu được thì tìm luôn tất cả các dòng có ký tự như mẫu. File em chẳng upload được
 
Upvote 0
Mình gửi bài ví dụ về xem-xóa-sửa-tìm trên Listview. Mình e hỏng dữ liệu mẫu khi thử nên bạn bổ xung xóa sửa trên sheet nữa nhé. Phần tìm mình chưa biết cơ chế tìm của bạn nên tạm tìm tên đúng như trong ô
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Em có tạo 1 form dùng để chon bảng cần nhập. em dùng dùng formnhap.show thì nó vẫn chạy nhưng khi nhấn nút thoát trên formnhập thì nó báo lỗi formnhap.show. còn dùng lệnh call nhapdulieu de gọi LV thì nó cũng hiện lên formnhap nhưng khi nhấn nút thoát lần thứ 1 thì nó không thoát formnhập mà giống như là nó call nhapdulieu thêm 1 lần nữa. em không biết tại sao no bị như vậy các anh có cách nào khắc phục không ?

và còn 1 vấn đề nữa là em dùng lệnh đổi font cho textbox để chép vào bảng Excel mọi chữ điều bình thường nhưng có 1 chữ này nó không chép được "Xã Bảo Vinh" (em cũng đã thử convet font abc sang unicode trên excel thì bình thường).

cám ơn các anh
 
Upvote 0
E cứ xem code trong bài để ứng dụng cho công việc của em xem có được không. (Anh cũng chỉ là vọc cho vui chứ kg theo đạo Excel.)
Trong bài anh gửi sử dụng 2 LV trên 1 Form.
1/Trên LV thứ 1: Có thể lọc theo số CMT hoặc theo TEN.
2/Trên LV thứ 2: có thể Thêm/Xoá. và lọc theo CMT
3/Ở đay anh dùng LV và việc Load DL lên LV là từ các cột trong 1 Sheet nào đó chứ không dùng Mảng (rất chậm vì phải sử dụng 2 vòng For quét qua tất cả các ô) hay Name động (không làm tươi dữ liệu trên LV được và cũng chậm).

Em chay thử File anh gửi đẻ biết thêm. Anh viết code đơn giản nên kg khó đọc. Mong em có thể tìm thêm được 1 vài ý tưởng trên đó. Gom góp từng vấn đề nhỏ thành vấn đề lớn hơn. Nhưng đừng nên phức tạp hoá vấn đề.

Chúc em thành công.


trong bài anh gởi lên không có form nào hết mà chỉ có modul1 với đoạn code trong đó thôi
 
Upvote 0
To thuyyeu99: Lỗi của bạn hay xảy ra khi chép, sửa hiệu đính không hết. Bạn xóa bớt dữ liệu chỉ để mãu load lên mọi người tìm giúp chứ vừa đọc vừa đoán khó lắm.
 
Upvote 0
Mình gửi bài ví dụ về xem-xóa-sửa-tìm trên Listview. Mình e hỏng dữ liệu mẫu khi thử nên bạn bổ xung xóa sửa trên sheet nữa nhé. Phần tìm mình chưa biết cơ chế tìm của bạn nên tạm tìm tên đúng như trong ô
Cám ơn anh đã nhiệt tình giúp đỡ. Nếu em chỉ gõ 1 cụm từ trong textbox6 nó sẽ tìm toàn bộ các dòng có subitem(1) chứa cụm từ đó thì làm như thế nào?
Mục đích chính của em là hỗ trợ người dùng tìm kiếm dữ liệu một cách đa dạng. Và không phải lọc từ sheets như cách em làm
 
Upvote 0
Mình thay đổi cơ chế tìm, hơn nữa đây là tìm nhiều dòng nên khi đúng mình đánh dấu vào hộp kiểm đầu dòng

P/s: Mình thay tệp kèm để khi tìm vùa đánh dấu vừa chép sang Listview2
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
các anh cho em hỏi thêm 1 vấn đề nữa là từ form mình có cách nào để tạo nút xem trước khi in không ( khi mình nhấn vào nút xem thì nó xẽ nhảy ra màn hình Xem trước khi in giống như trong Excel và khi nhấn nút đóng thì nó sẽ trở về lại Form ban đầu)
 
Upvote 0
Từ Form ban dùng lệnh unloadme để đóng Form lại.
Cần xem sh nào ví dụ sh TBAO ta dùng lệnh: sheets("TBAO").PrintPreview
Cái khó mình chưa tìm ra là khi thoát chế độ Printview không có sự kiện để load trở lại Form mà phải đặt nút lệnh mở form trở lại.
 
Upvote 0
Để ẩn/hiện form dùng method Hide và Show.

Trước khi PrintOut hoặc PrintPreview ta dùng như sau:
...

UserForm1.Hide ' dấu form

<< mã xử lý in, ví dụ: Sheet1.PrintPreview >>>

UserForm1.Show ' cho hiện lại form
 
Upvote 0
Web KT

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

Back
Top Bottom