Größe von Objekten der Größe des Forms anpassen



  • Hallo,

    mal wieder eine Frage von mir. Hab schon in der Hilfe und in den FAQ nachgeguckt aber keine passende Lösung gefunden.

    Zum Problem:

    Ich habe eine Formular. Auf diesem Formular liegt ein TPageControl. Auf diesem TPageControl ein TPanel und auf diesem TPanel ein TRichEdit.

    Mein Formular hat folgende Größenbegrenzung: (TBorderIcons >> biMaximize)!

    Form1->MinHeight = 515;
    Form1->MinWidth  = 747;
    

    Wenn ich jetzt das Formular in der Größe maximiere, wie kann dann die Größe der oben genannten Komponenten entsprechend mitvergrößert werden?

    Hatte mir folgendes gedacht:

    void __fastcall TForm1::FormResize(TObject *Sender)
    {
    PageControl1->Width = 737/747 * (Form1->Width);
    PageControl1->Height = 430/515 * (Form1->Height);
    Panel2->Width = 558/747 * (Form1->Width);
    Panel2->Height = 384/515 * (Form1->Height);
    cw->Width = 554/747 * (Form1->Width);
    cw->Height = 380/515 * (Form1->Height);
    }
    

    Funktioniert aber leider nicht.

    Sicherlich gibt es hierfür wieder eine einfache Lösung, die ich übersehen habe. Ein Tipp wo nachzuschauen würde mir schon weiterhelfen.

    Danke



  • Hallo,

    Schau dir mal die Eigenschaft Anchors in der Hilfe an. Damit kannst du deine Controls auf der Form so verankern, dass sie alle Größenänderungen mitmachen. Wenn du allerdings ein Control zentriert darstellen willst (o.ä.) mußt du schon Hand anlegen.



  • mhhh...

    stimmt. Hab ich wohl übersehn. Vielen Dank.
    Habe die Controls mittels den Anchors so eingestellt, dass sie die Größenveränderung mitmachen.

    Aber wie ist es wenn ich, wie du schon sagtest, Controls zu anderen zentrieren oder in Abhängigkeiten darstellen will.

    Ich finde immernoch nicht das richtige Event dafür.
    Mein Formular lässt sich nur auf 2 verschiedene Größen darstellen.
    Zum einen auf die bregrenzte minimale Größe und zum anderen auf die maximale Größe.

    Mit dem Event FormResize oder FormCanResize klappen die Abhängigkeitsveränderungen der Größen nicht.
    Sind aber die beiden einzigen Ereignisse die für mich im Moment einen Sinn machen.



  • [quote="Todd"]

    PageControl1->Width = 737/747 * (Form1->Width);
    

    Hierzu eine grundsätzliche Anmerkung. 737 und 747 werden als Integer-Variablen behandelt!! Somit wird das Ergebnis wohl niemals das Erwartete sein. 737 / 747 ergibt 0, multipliziert mit irgendwas bleibt aber 0. Damit Fließkommavariablen verwendet werden, müssen entsprechende Casts durchgeführt werden, oder eben direkt Fließkommawerte angegeben werden:

    PageControl1->Width = 737.0/747.0 * (Form1->Width);
    


  • Oki...

    Stimmt.
    Musste nur Integer in float überführen.
    Nun klappts wunderbar. (auch im Resize Event der Form) 🙄

    Vielen Dank


Anmelden zum Antworten