Bohužel některé události nejsou dostupné pro vb6 jako je tomu pro vb.net a nezbývá než subclassing. Podobně je tomu pro scroll event a události kolem záhlaví sloupců, třeba zobrazit menu při stisknutí pravého tlačítka myši nad záhlavím sloupců apod. Subclassing Listview Scrollbar Messages http://vbnet.mvps.org/index.html?code/su... Určitě narazíte na spoustu dalších věcí, které bez API prostě neuděláte... Např. Počet viditelných položek v ListView
Private Const LVM_FIRST = &H1000
Private Const LVM_GETCOUNTPERPAGE = (LVM_FIRST + 40)
Private Function GetListviewVisibleCount() As Long
GetListviewVisibleCount = SendMessageLong(ListView1.hwnd, LVM_GETCOUNTPERPAGE, 0&, ByVal 0&)
End Sub
Automatická šířka sloupců v ListView
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
Const LVM_SETCOLUMNWIDTH = &H1000 + 30
Const LVSCW_AUTOSIZE = 65535
Const LVSCW_AUTOSIZE_USEHEADER = 65534
'Nastaví šířku každého sloupce tak, aby všechny položky byly viditelné. Pokud bude
'druhý argument True, zahrne se do přepočítání i délka textu záhlaví sloupce
Sub ListViewAdjustColumnWidth(LV As ListView, _
Optional AccountForHeaders As Boolean)
Dim col As Integer, lParam As Long
If AccountForHeaders Then
lParam = LVSCW_AUTOSIZE_USEHEADER
Else
lParam = LVSCW_AUTOSIZE
End If
For col = 1 To LV.ColumnHeaders.Count
SendMessage LV.hwnd, LVM_SETCOLUMNWIDTH, col, lParam
Next
End Sub
Představte si procházet textwidth subitems v listview cyklem a podle toho nastavit šířku sloupců... Disable Column Resizing in ListView Report Mode(.Net) http://www.codeproject.com/KB/cpp/LVHead... Zde případně také naleznete další inspiraci: http://www.vbaccelerator.com/home/VB/ind... Chlubit se cizím peřím rozhodně nechci, snad Vám i ostatním to bude k užitku... Mnoho zdaru!
|