Übersicht
0004 ListView mit einstellbaren Icon-Abständen (LVM_SETICONSPACING = &H1035&)
![]() |
Mit dem Standard ListView-Control die Abstände der
Icons einstellen... Hintergrund: PostMessage arbeitet fast genauso wie SendMessage - setzt die Nachricht in die Warteschlange von Windows, kehrt aber sofort zurück, während SendMessage auf einen Rückgabewert wartet! Das scheint in VB Probleme zu verursachen. Also nutzen Sie die Post und vertrauen darauf, dass die Zustellung auch erfolgt! :-) Was Sie sonst noch wissen sollten:
' Deklaration:
Public Declare Function PostMessage Lib "user32" Alias" PostMessageA" (ByVal hWnd As Long, _
ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
' Funktion:
' Setzt den Abstand der Icons im ListView-Control in Pixel
' Minimaler Wert ist 4Pixel! wSpace/hSpace = Icongröße+Abstand in Pixel!
Public Function ListViewSetIconSpace(ByVal hWnd As Long, _
ByVal wSpace As Integer, ByVal hSpace As Integer) As Long
Dim isp As Long
isp = (wSpace And &HFFFF&) Or (hSpace * &H10000) ' MakeLong
ListViewSetIconSpace = PostMessage(hWnd, &H1035&, 0, isp)
End Function
|
|
|
0003 Tooltip-Text des Slidercontrols ausschalten
![]() |
Wenn Sie den Slider der Standard-Controls mit der Maus verschieben, so erscheint grundsätzlich der Wert (value) des Controls als ToolTip-Text. Das ist nicht immer sinnvoll und kann mit zwei einfachen SendMessage Aufrufen unterbunden werden. Kopieren Sie die unten stehende Funktion in ein Programm-Modul und rufen Sie sie einmal (zum Beispiel in der Load-Anweisung der Parent-Form) auf. Übergeben Sie der Funktion das Handle des Sliders: ' Deklaration:
Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
' Funktion:
Public Sub sliderToolTipOff(ByVal hwnd As Long)
Dim ret As Long
ret = SendMessage(hwnd, &H41E, 0&, ByVal 0&)
SendMessage ret, &H401, 0&, ByVal 0&
End Sub
|
|
Autor: ralf schlegel |
0002 TabStrip-Registerkarte zur Laufzeit umschalten
![]() |
Das TabStrib-Control und seine Registerkarten wird in den meisten Anwendungen zum Beispiel in der Auswahl der Programmeigenschaften eingesetzt. Leider, so scheint es, gibt es keine Methode um eine bestimmte Registerkarte zur Laufzeit zu aktivieren. Und dennoch läßt sich diese Eigenschaft mit einer einzigen Codezeile realisieren: TabStrip1.Tabs(Index).Selected = True Wobei 'Index' für die gewünschte Registerkarte steht. |
|
Autor: ralf
schlegel |
0001 ListView mit optimaler Spaltenbreite
![]() |
Leider stellt das ListView-Control von Hause aus keine Methode zum Optimieren der Spaltenbreite in der Reportansicht zur Verfügung. Dennoch läßt sich diese Funktion wieder einmal mit einem API-Aufruf nachbilden, und zwar mit dem SendMessage Befehl. Übrigens - auch der Windows Explorer unterstütz diese Funktion: öffnen Sie ein Explorerfenster in der Detailansicht, halten Sie die <Strg>-Taste gedrückt und betätigen die <+>-Taste des Ziffernblocks... ' Deklaration:
Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
' Funktion:
Public Sub lvwSetColumnWidth(lstView As ListView, ByVal colIdx As Long)
Const LV_SETCOLUMNWIDTH As Long = &H101E
With lstView
' Prüfen, ob das Listview in der Ansicht "Report" ist
If .View = lvwReport Then
If colIdx > 0 And colIdx <= .ColumnHeaders.Count Then
SendMessage .hwnd, LV_SETCOLUMNWIDTH, colIdx - 1, -2
End If
End If
End With
End Sub
' Aufruf für alle Spalten eines ListView:
For i = 1 To ListView1.ListItms.Count
lvwSetColumnWidth ListView1, i
Next i
|
|
Autor: ralf schlegel |



