Fenster verankern



  • Hallo Leute,

    wie kann ich ein zweiter Formularfenster in das erste verankern ?

    Danke im voraus......



  • Ich geb dir mal einen Ansatz:

    if(Form2->Top <= Form1->Top + Form1->Heigth + 10) //ist Form2 weniger als 10 Pixel von Form1 entfernt?(vertikal)
     {
      Form2->Top = Form1->Top + Form1->Heigth; //Form2 ans untere Ende von Form1
     }
    //-------------------------------------------------------------- 
    if(Form2->Left <= Form1->Left + Form1->Width + 10) //ist Form2 weniger als 10 Pixel von Form1 entfernt?(horizontal)
     {
      Form2->Left = Form1->Left + Form1->Width; //Form2 ans rechte Ende von Form1
     }
    //--------------------------------------------------------------
    

    Oder beides gleichzeitig:

    if((Form2->Top <= Form1->Top + Form1->Heigth + 10) && (Form2->Left <= Form1->Left + Form1->Width + 10)) 
     {
      Form2->Top = Form1->Top + Form1->Heigth; //Form2 ans untere Ende von Form1
      Form2->Left = Form1->Left + Form1->Width; //Form2 ans rechte Ende von Form1
     }
    


  • Das scheint mir aber ein recht fragwürdiger Ansatz. 😉

    The.President:
    Was genau meinst du mit "Verankern", und wofür willst du das benutzen?



  • Wie fragwürdig



  • Also ich hab Formular1, und möchte mit ShowModal ein zweites Formular aufrufen.
    Aber es sollte so sein dass das zweite Formular über dem ersten verankert wird.
    D.H.
    Wenn Formular1 irgentwo hingezogen wird, soll das zweite Formular genau darüber erscheinen, und nicht irgentwo auf dem Bildschirm !

    Danke vorab für eure Bemühungen.......



  • Wo soll das Problem sein ? Es gibt Properties um die Position/Größe einer Form zu bestimmen bzw. zu setzen ...



  • GordonWessel:
    Aufwendig und unelegant. 🙂

    The.President:
    TForm::Position = poMainFormCenter !?



  • Hey Jansen,

    an welcher Stelle muß ich das denn einfügen ?

    In die Headerdatei, oder in eine cpp ?

    Thanx a lot........



  • Sieh dir mal den ObjectInspector genau an ... 😉



  • Okay, soweit war ich grade !
    Danke erst einmal.

    Aber ich hab da noch ein Problem.
    Wenn ich das Formular2 wieder geschlossen habe, und das erste Formular wieder in eine andere Richtung bewege, und anschließen wieder das Formular2 öffnen, ist es nicht mehr zentriert auf dem ersten Formular.
    Sondern an der Stelle wo es erste mal geöffnet wurde.
    Wie kann ich dafür sorgen, das es genau da ist wo das erste Formular ist ?

    Danke vorab.......



  • Du könntest die Zuweisung zB. im OnActivate-Event von Form2 wiederholen, allerdings flackert das ein wenig.

    Ansonsten musst du halt doch den von GordonWessel beschriebenen umständlichen Weg mit den absoluten Positionsangaben gehen. Wäre ja auch schade gewesen, wenn er sich die Arbeit umsonst gemacht hätte. 😉



  • Danke Jansen, Danke Gordon !

    Ich werde das Beispiel von Gordon umsetzten !

    Danke nochmals für eure Hilfestellungen.........



  • Okay, ich habs jetzt so gelöst.....

    void __fastcall TF_haupt::TMI_PC_auftragNeuClick(TObject *Sender)
    {
    F_auftragNeu->Position=poMainFormCenter;
    F_auftragNeu->ShowModal();

    }


Anmelden zum Antworten