Wollten Sie in einem Listview auch schon mal feste und nicht veränderbare Spaltenbreiten? Bisher gabs keine befriedigenden Tipps im WEB, wie gesagt bis jetzt. Dabei ist die Sache recht einfach. Der Listview-ColumnHeader ist ein separates Objekt mit einem eigenem Handle und die API-Funktion "EnableWindow" kann jedes Objekt das ein Handle besitzt deaktivieren. Einziges "kleines" Problem ist, das Handle des ColumnHeader zu ermitteln. Aber auch daran haben die API-Väter gedacht -> die Message LVM_GETHEADER liefert uns genau dieses Handle. Mit diesen ganzen Informationen, sollte uns nun nichts mehr daran hindern eine kleine Routine zum Setzen und Ermitteln des ColumnHeader-Status zu schreiben: Option Explicit ' Benötigte API-Deklarationen Private Declare Function IsWindowEnabled Lib "user32.dll" ( _ ByVal hWnd As Long) As Long Private Declare Function SendMessage Lib "user32" _ Alias "SendMessageA" ( _ ByVal hWnd As Long, _ ByVal wMsg As Long, _ ByVal wParam As Long, _ lParam As Long) As Long Private Declare Function EnableWindow Lib "user32.dll" ( _ ByVal hWnd As Long, _ ByVal fEnable As Long) As Long Private Const LVM_FIRST = &H1000 Private Const LVM_GETHEADER As Long = (LVM_FIRST + 31) ' Ermittelt das Handle des ListView-Headers Public Function HeaderHwnd(ByVal oListView As ListView) As Long If oListView Is Nothing Then Exit Function HeaderHwnd = SendMessage(oListView.hWnd, LVM_GETHEADER, 0, ByVal 0&) End Function ' Gibt zurück, ob der ListView-Header verändert werden kann Public Property Get HeaderEnabled(ByVal oListView As ListView) As Boolean Dim lHandle As Long lHandle = HeaderHwnd(oListView) If lHandle = 0 Then Exit Property HeaderEnabled = (IsWindowEnabled(lHandle) = 1) End Property ' Legt fest, ob der ListView-Header verändert werden kann Public Property Let HeaderEnabled(ByVal oListView As ListView, _ bHeaderEnabled As Boolean) Dim lHandle As Long lHandle = HeaderHwnd(oListView) If lHandle = 0 Then Exit Property EnableWindow lHandle, Abs(bHeaderEnabled) End Property Aufruf: ' deaktiviert den ListView-Header ' (die Spaltenbreite kann nicht verändert werden) HeaderEnabled(ListView1) = False ' aktiviert den ListView-Header ' (die Spaltenbreite kann wieder verändert werden) HeaderEnabled(ListView1) = False Viel Spaß Dieser Tipp wurde bereits 18.691 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv Vol.6 (einschl. Beispielprojekt!) Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
vb@rchiv CD Vol.6 Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! Online-Update-Funktion Entwickler-Vollversionen u.v.m. Tipp des Monats Dezemeber 2024 Roland Wutzke MultiSort im ListView-Control Dieses Beispiel zeigt, wie sich verschiedene Sortierfunktionen für ein ListView Control realisieren lassen. Neu! sevCoolbar 3.0 Professionelle Toolbars im modernen Design! Mit sevCoolbar erstellen Sie in wenigen Minuten ansprechende und moderne Toolbars und passen diese optimal an das Layout Ihrer Anwendung an (inkl. große Symbolbibliothek) - für VB und MS-Access |
||||||||||||||||
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |