Form "gleichmäßig" vergrößern (gelöst)



  • Hallo,

    ich versuche momentan eine Form gleichmäßig vergrößerbar zu machen. Darunter verstehe ich, dass die Ausgangsgröße z.B 100x100 px ist. Wenn ich das Fenster nun vergrößer oder verkleiner soll die Breite immer der Höhe entsprechen, also z.B. 90x90 px oder 120x120 px.

    Gelöst hab ich das Problem erstmal so:

    void __fastcall TForm1::FormResize(TObject *Sender)
    {
        if(Width > Height)
            Height = Width;
        else
            Width = Height;
    }
    

    Das funktioniert, allerdings ergibt es den hässlichen Effekt, dass das Fenster erst so verändert wird, wie man es mit der Maus zieht und dann hinterher die Größe in dem Event berechnet und das Fenster wieder verändert wird. Dadurch flackert das Fenster und man sieht es zweimal (lässt sich leider kein Screenshot von machen).

    Edit: Problem selbst gelöst bekommen, man muss OnCanResize nehmen.

    void __fastcall TForm1::FormCanResize(TObject *Sender, int &NewWidth,
          int &NewHeight, bool &Resize)
    {
        if(NewWidth > NewHeight)
            NewHeight = NewWidth;
        else
            NewWidth = NewHeight;
    }
    

    greetz KN4CK3R


Anmelden zum Antworten