Ich habe eine Bildverwaltung programmiert, bei der in einer Srollbox kleine Vorschaubilder angezeigt werden.
Beim Klicken auf ein Bild in der Scrollbox soll dieses nun in der Mitte angezeigt werden, so dass die Bilder darüber und darunter sichtbar werden.
(Die Image-Komponenten wurden zur Laufzeit dynamisch erstellt, da ja nicht bekannt ist, wieviele Bilder es eigentlich gibt, daher statt Image1.Height die Anweisung "With Sender as TImage do begin TImage(MainForm.FindComponent(Name))Heigth)
Das klappt mit folgendem Code einwandfrei:
Delphi-Quellcode:
procedure TMainForm.MeineOnClickMethode(Sender : TObject);
var
midposition: integer;
begin
with Sender as TImage do begin
midposition := Round(Scrollbox1.Height - TImage(MainForm.FindComponent(Name)).Height) div 2;
ScrollBox1.ScrollBy(0, midposition - TImage(MainForm.FindComponent(Name)).Top);
Realign;
end;
das Problem dabei ist aber, dass auch das erste Bild in der Mitte zentriert wird
Über diesem Bild erscheint dann nur eine graue leere Fläche
Das sieht ziemlich unprofessionell aus und zum Überdruss verschwindet auch noch die VertScrollBar