Zitat von
Jens Schumann:
Hallo,
lege das TImage auf eine TScrollBox und setzte die Range Eigenschaften von HorzScrollBar
und VertScrollBar auf die Abmessungen des Bildes
Ich bin der Meinung, dass das in die FAQ sollte, falls es dort nicht schon steht. Ich habe einen ganzen Tag mit genau diesem Problem zugebracht. Dabei ist es so einfach.
Mich stört aber noch etwas anderes:
Ich habe in meiner ScrollBox ein einziges Bild, welches ich auf ButtonsKlicks bzw. Tastatureingaben jeweils aktualisiere. Ich möchte das auch mit dem Scrollrad können. Beim Hochscrollen ist das auch kein Problem. Die Lösung ist folgende:
Delphi-Quellcode:
Procedure TForm1.ScrollBox1MouseWheelUp(Sender: TObject; Shift: TShiftState;
MousePos: TPoint; var Handled: Boolean);
Begin
With ScrollBox1.VertScrollBar Do
Begin
If (Position=0) And // Wenn Scrollbar ganz oben und
(ListBox2.ItemIndex>0) Then // mind. 2ter Eintrag in Liste
Begin
ListBox2.ItemIndex:=Pred(ListBox2.ItemIndex);
ShowPicture; // Bild laden, Range anpassen etc.
Position:=Range; // ScrollBar soll ganz unten starten
End
Else Position:=Position-Increment;
End;
Handled:=true;
End;
Vom Ansatz her hatte ich gehofft, beim nach unten Scrollen würde das hier funktionieren, aber es geht nicht:
Delphi-Quellcode:
Procedure TForm1.ScrollBox1MouseWheelDown(Sender: TObject; Shift: TShiftState;
MousePos: TPoint; var Handled: Boolean);
Begin
With ScrollBox1.VertScrollBar Do
Begin
If (Position>=Range) And (ListBox2.ItemIndex<Pred(ListBox2.Count)) Then
Begin
...
Ich habe es mir ausgeben lassen: Leider ist Position nie so groß wie Range.
Wie kann ich herausfinden, ob der Scrollvorgang unten angekommen ist. Bestimmt ist es ganz einfach und ich sehe nur den Wald vor lauter Bäumen wieder nicht ...
Gruß, Alex