2 Forms gleichzeitig im Vordergrund etc...



  • Hallo zusammen,

    ich habe ein Form1 das das Hauptprogramm darstellt. Durch einen Klick auf ein Steuerelement wird ein zweites Form2 geöffnet.

    Ich möchte jetzt, wenn ich Form1 über den gesamten Bildschirm maximiere und Form2 öffne, Form2 auf einen bestimmten Ort auf Form1 plaziert wird, z.B. rechts oben in der Ecke mit der 1/4-Größe von Form1, und es im Vordergrund bleibt, wenn man Form1 wieder fokussiert, bzw. auf diesem weiterarbeitet.

    Kann man vielleicht Form2 in/an das Form1 docken?

    MFG
    Todd



  • Hallo

    Das sollte mit FormStyle auf StayOnTop für das Form2 gehen.

    bis bald
    akari



  • Danke das klappt schon mal.

    Jetzt noch ein weiteres Problem:

    Gibt es auch eine ähnliche einfache Lösung dafür, dass Form2 alle Positionsveränderungen von Form1 mitmacht, oder muss man das dann selbst in einem Event von Form1 steuern?

    Danke
    Todd



  • Okay.
    Ich hab es jetzt mal im 'CanResize'-Event von Form1 gemacht. Ist aber sehr zappelig das ganze:

    void __fastcall TForm1::FormCanResize(TObject *Sender, int &NewWidth,
          int &NewHeight, bool &Resize)
    {
     Form2->Height=ListView1->Height-3;
     Form2->Width=ListView1->Width-2;
     Form2->Top=Form1->Top+111;
     Form2->Left=Form1->Left+10;
    }
    

    Ich hoffe es gibt eine bessere, zappelfreie Lösung. 😞

    Liebe Grüße
    Todd



  • Nimm statt Form2 ein Panel mit entsprechenden Anchors-Einstellungen.



  • Danke. Das wäre auch eine Möglichkeit.

    Aber wie sieht es denn mit der folgenden Eigenschaft aus:

    Ich habe auf Form1 einen quadratischen Bereich, in der dann das Panel liegen soll.
    Das Panel muss "abnehmbar sein", also setze ich die Eigenschaften 'DragKind' auf 'dkDock' und 'DragMode' auf 'dmAutomatic'.

    Wenn der Benutzer das Panel abnimmt, soll es nicht mehr die Positionsänderungen von Form1 mitmachen. Das funktioniert ja schon automatisch. Wenn er es nicht abnimmt, macht es alles das mit was Form1 macht. Funktioniert auch automatisch.

    Wie bekomme ich aber das Panel nach dem abnehmen, nimmt ja dann quasi die Gestallt eines Forms an, wieder in den quadratischen Bereich gedockt?

    Wenn das funktionieren würde, wär mein Problem so gut wie gelöst.

    Danke und liebe Grüße
    Todd



  • Okay.

    Hab jetzt folgendes gemacht. Linkemaustaste Panel als "Fenster freigeben". Rechte Maustaste wieder ans Formular docken:

    void __fastcall TForm1::Panel2ContextPopup(TObject *Sender,
          TPoint &MousePos, bool &Handled)
    {
    int left=ListView1->Left+6;
    int top=ListView1->Top+48;
    int right=ListView1->Width+left-3;
    int bottom=ListView1->Height+62;
    Panel2->Dock(Form1,TRect(left,top,right,bottom));
    }
    

    MFG
    Todd


Anmelden zum Antworten