Klingt sehr vielversprechend und ich denke schon, daß
man es zu Weilen gebrauchen kann, diesen Tipp. Aber nun etwas mehr Info, damit Sie besser
verstehen können, was ich mit der Überschrift meine.
Nehmen wir mal an, Sie nutzen eine Listbox, in die immer neue Einträge aufgenommen
werden. Dann wird der neueste Eintrag, soweit man
AddItem nutzt, immer hinten dran gehängt und irgendwann ist der
neuste Eintrag nicht mehr zu sehen und das ist doch schlecht.
Nun kann man mit einigen Angaben, die Anzahl der Einträge ermitteln und diesen
auswählen .... aber egal was Sie auch versuchen, es sieht nicht sauber
aus,
weil alles rumzuckelt.
Und hier ist der Ansatzpunkt für diesen Tipp.
Sie können über den Aufruf einer einzigen Programmzeile, an das Ende und an den Anfang
springen. Sie können eine Seite oder auch nur eine Zeile nach unten oder nach oben
springen und das alles ruckelfrei und auch ohne negative Einflüsse auf
eventuelle Markierungen.
1. Benötigen Sie nicht mehr als eine Form und eine Listbox (List1)
2. Allgemein/Deklarationen
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA"
( _
ByVal hwnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
ByVal lParam As Any) _
As Long
Const WM_VSCROLL = &H115
Const SB_LINEUP = 0
Const SB_LINEDOWN = 1
Const SB_PAGEUP = 2
Const SB_PAGEDOWN = 3
Const SB_TOP = 6
Const SB_BOTTOM = 7
3. Basteln Sie sich zwei Commandbutton auf Ihre Form,
3.1. Command1 = Füllt die Listbox immer wieder mit neuen Datensätzen
Command1_Click
If index = 0 Then
For i = List1.ListCount To List1.ListCount + 14
List1.AddItem "neuer eintrag " & i
Next i
End If
3.2. Command2 = wird die "Fernsteuerung übernehmen"
Haben Sie Command2 erstellt, so fügen Sie noch weitere 5 Kopien hinzu,
so das wir Command2(0) bis Command2(5) haben.
Öffnen Sie die Methode Command2_Click (Index As Integer) und fügen Sie folgenden Code
ein.
Command2_Click(Index As Integer)
If index = 0 Then
SendMessage List1.hwnd, WM_VSCROLL, SB_BOTTOM, 0&
ElseIf index = 1 Then
SendMessage List1.hwnd, WM_VSCROLL, SB_TOP, 0&
ElseIf index = 2 Then
SendMessage List1.hwnd, WM_VSCROLL, SB_PAGEUP, 0&
ElseIf index = 3 Then
SendMessage List1.hwnd, WM_VSCROLL, SB_PAGEDOWN, 0&
ElseIf index = 4 Then
SendMessage List1.hwnd, WM_VSCROLL, SB_LINEUP, 0&
ElseIf index = 5 Then
SendMessage List1.hwnd, WM_VSCROLL, SB_LINEDOWN, 0&
End If
4. Noch die Beschriftung zum Programmstart
Form_Load
Command1.Caption = "neue Einträge hinzufügen"
Command2(0).Caption = "Ende"
Command2(1).Caption = "Anfang"
Command2(2).Caption = "PageUp"
Command2(3).Caption = "PageDown"
Command2(4).Caption = "LineUp"
Command2(5).Caption = "LineDown"
5. Wenn Sie jetzt Ihr Programm starten, über den Command1 Button Ihre Listbox
füllen, können Sie allein mit den Command2 Buttons in Ihrer Listbox navigieren. |