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.811 mal aufgerufen.
Anzeige
![]() ![]() ![]() (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 ![]() Manfred Bohn IndexOf für mehrdimensionale Arrays Die generische Funktion "IndexOf" ermittelt das erste Auftreten eines bestimmten Wertes in einem n-dimensionalen Array Neu! sevDTA 3.0 Pro ![]() SEPA mit Kontonummernprüfung Erstellen von SEPA-Dateien mit integriertem BIC-Verzeichnis und Konto- nummern-Prüfverfahren, so dass ungültige Bankdaten bereits im Vorfeld ermittelt werden können. |
||||||||||||||||
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. |