![]() |
Prozedur zur Frameausrichtung optimieren
Hallo,
ich richte mit folgender Prozedur Frames in einer Scrollbox aus. Die Frames werden bei einer Größenänderung der Form und bei Größenänderung der Frames selbst neu ausgerichtet. Allerdings dauert das bei vielen Frames (> 300) auch mal 2-3 Sekunden. Ein bekannter hat mir ein Programm gezeigt, welches das selbe macht (Thumbs anzeigen) und die Ausrichtung deutlich schneller macht: da kann man mit einem Schieberegler die Größe der Thumbs einstellen und sieht das gleich live in der Thumbansicht :shock: . Daher meine Frage: Kann man diese Prozedur optimieren? Und wenn ja, dann wie?
Delphi-Quellcode:
Ich würde mich sehr freuen wenn ihr mir helfen könntet und bedanke mich schon mal :thumb:
procedure TMainForm.ReAlignFrames(FrameWidth: integer);
var i, e, LineCount, line, Fcount: integer; ThumbFrame: TFThumb; const Faktor = 0.78; // LineCount: Anzahl der Frames pro "Zeile" // line: aktuelle Zeile // FCount ist ein Extra-Zähler der benötigt wird, da nicht immer alle Thumbs ausgerichtet werden müssen (einige können unsichtbar sein) // Faktor: Wert mit dem die Höhe der Thumbs aus der Breite errechnet wird begin FCount := 0; LineCount := trunc(SBThumbs.ClientWidth / FrameWidth); // SBThumbs: Scrollbox in der die Frames ausgerichtet werden for i := 0 to ThumbList.Count - 1 do begin ThumbFrame := TFThumb(ThumbList[i]); if ThumbFrame.Visible then begin if FrameWidth <> ThumbFrame.Width then begin ThumbFrame.Width := FrameWidth; ThumbFrame.Height := round(FrameWidth * Faktor); end; e := FCount + 1; if FCount >= LineCount then // wenn der aktuelle Frame nicht mehr auf die 1. Zeile passt... begin line := roundup(e / LineCount) - 1; // aktuelle Zeile ermitteln ThumbFrame.Top := ((ThumbFrame.Height * line) + 2) - SBThumbs.VertScrollBar.Position; ThumbFrame.Left := ThumbFrame.Width * (FCount mod LineCount) + 2; end else begin ThumbFrame.Top := 2 - SBThumbs.VertScrollBar.Position; ThumbFrame.Left := (ThumbFrame.Width * FCount) + 2; end; inc(FCount); end; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:59 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz