Thema: Delphi Höhe nicht zugewiesen?

Einzelnen Beitrag anzeigen

TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.829 Beiträge
 
Delphi 12 Athens
 
#1

Höhe nicht zugewiesen?

  Alt 9. Dez 2023, 16:28
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
  Mit Zitat antworten Zitat