Visual Basic 6
Neuzeichnen von Steuerelementen steuern
Vom Kampf gegen das Flackern
Füllt man mit einer Prozedur z.B. aus einer Datenbank eine große Menge Daten
in eine ListView, dann wird man feststellen, dass das Steuerelement während
die Prozedur durchläuft unnatürlich flackert. Ursache hierfür ist natürlich,
dass das Control nach jedem Einfügen neu gezeichnet wird. Da hilft auch die
Form-Eigenschaft AutoRedraw nicht viel. Es ist einfach
unansehnlich.
Entweder man blendet das Steuerelement während des Vorgangs einfach aus,
was auch nicht so nett aussieht, oder man greift auf eine API-Funktion zurück:
LockWindowUpdate.
Beispiel:
Deklarationen
Private Declare Function LockWindowUpdate Lib "user32" ( _
ByVal hwndLock As Long) As Long
Prozedur
Private Function FillListView()
Dim i As Long
'Die Aktualisierung des TreeView-Fensters unterdrücken
LockWindowUpdate Me.ListView1.hWnd
'Neue Einträge anlegen
With Me.ListView1
For i = 1 To 5000
.ListItems.Add , , "Eintrag " &
i
Next i
End With
'Die Aktualisierung des TreeView-Fensters wieder zulassen
LockWindowUpdate 0
End Function