Hallo,
gegeben ist eine
VCL Form. Auf dieser liegt ein Panel und im Panel ein TImage,
Client aligned.
In einem OnMouseEnter Event eines anderen Steuerelementes wird ein neues Bild in das
TImage geladen (das Panel ist da noch Visible = false) und die Größe des Panels
angepasst, je nach Höhen/Seitenverhältnis des Bildes. Danach wird das Panel auf
Visible gesetzt.
Beim ersten Durchlauf passt alles. Wird dann später ein Bild mit anderen Dimensionen
reingeladen stimmt das nicht mehr, weil das Panel/TImage ja schon beim vorherigen
Durchlauf in der Größe geändert wurde. Ok, dachte ich, merkst du dir einfach im OnShow
Event der Form die ursprünglichen Größen gemerkt.
In diesem OnMouseEnter wollte ich dann Width und Height wieder auf diese Werte zurücksetzen.
Hat aber nicht funktioniert. Nach Zuweisung der Höhe war im Panel immer noch die alte drin.
Daher hab' ich einfach mal das Image freigegeben, denn einen anderen Weg es zu "leeren" fand
ich nicht und hab' es neu erzeugt und initialisiert. Nur: das bringt auch nix. Siehe folgenden
Codeauszug:
Delphi-Quellcode:
i_LogoPreview.Free;
i_LogoPreview := TImage.Create(p_Logo);
i_LogoPreview.Parent := p_Logo; // p_Logo ist das Panel
i_LogoPreview.Align := alClient;
p_Logo.Width := FOrigImgPreviewWidth;
p_Logo.Height := FOrigImgPreviewHeight; // Warum ändert sich die Größe des Panels hier nicht?
p_Logo.Invalidate;
p_Logo.Repaint;
Man sieht es sowohl zur Laufzeit als auch mit dem Debugger...
Grüße
TurboMagic