Zwei gleichberechtigte Forms
-
Hallo,
ich "erzeuge" zwei Formulare. Das Hauptformular und per ButtonClick ein zweites Formular mit Form2->Show();
Ich habe schon alle möglichen Einstellungen versucht, um beide Formular gleichberechtigt zu machen. D.h. ich möchte, wenn ich das erste Formular anklicke dieses in den Vordergrund rückt und beim zweiten Formular analog.
Bis jetzt ist immer das zweite Formular im Vordergrund.
Gibt es eine Möglichkeit das so zu verändern wie ich es gerne hätte?
-
Hallo,
Standardmäßig sollte es genau so sein wie du willst. Hast du bei deiner ersten Form vielleicht fsStayOnTop gesetzt?.
-
Hallo,
der FormStyle ist bei beiden auf "fsNormal" gestellt.
Wie gesagt, ich hab schon etliche Kombinationen getestet aber keine führte zum Ziel. Es ist immer das zweite Formular im Vordergrund, also dasjenige, dass später "erzeugt" bzw. sichtbar gemacht wird.
-
Und Du bist sicher, dass Du auch nicht ShowModal() verwendest? Dies oder eben fsStayOnTop (kann ja auch irgendwo per Code gesetzt werden) sind m.E. die beiden einzigen Möglichkeiten, die zu einem solchen Verhalten führen.
-
Ich habe das ganze jetzt noch einmal rudimentär mit einem neuen Projekt getestet.
Mit zwei Formularen. Auf dem ersten ein Button. Alle Einstellungen standardmäßig gelassen, also (FormStyle = fsNormal).
//--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Unit1.h" #include "Unit2.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { Form2->Show(); } //---------------------------------------------------------------------------
Gleiches Ergebniss.
Vielleicht habe ich mich auch unverständlich ausgedrückt.
Nehmen wir an, dass zwei Formulare (Form1 u. Form2) sichtbar sind, die nebeneinander liegen und sich nicht überschneiden.
Form2 wurde per ButtonClick von Form1 mittels Form2->Show() sichtbar gemacht.
Solange sich nun die beiden Formular nicht überschneiden sind sie beide augenscheinlich gleichberechtigt. Versuche ich aber nun Form1 zu verschieben und komme dabei Form2 in die Quere, verlagert sicht Form1 hinter Form2. Es soll aber Form2 überdecken, falls es "aktiv" benutzt wird.
-
Ich bin nicht in der Lage dieses Problem zu reproduzieren.
In meinem BCB6 verhält sich das genau so, wie Du es möchtest. Das jeweils aktive Form ist im Vordergrund. Welchen BCB verwendest Du?
-
Hallo,
ich benutze zur Zeit die Trial Version vom BCB2007 unter WinVista.
-
Ich werde es heute noch an meiner Hochschule testen. Dort ist sowohl der BCB6 also auch der BCB2007 vorhanden.
Soweit ich mich noch erinnern kann, funktionierte es im BCB6.
Kann es evtl. auch sein, dass es ein Bug im BCB2007 ist.Vielleicht kann es ja einer testen, der ebenfalls mit dem BCB2007 arbeitet.
Ich melde mich dann heute abend noch einmal, wenn ich es testen konnte.
-
Hallo nochmal,
Ich habs gerade getestet und kann dein Verhalten beim BCB2007 nachvollziehen. Ich schau mal nach wie ich das abstellen kann.
-
In der Project.cpp einfach SetApplicationMainFormOnTaskBar(Application, true); auskommentieren, dann sollte es funktionieren.
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) { try { Application->Initialize(); // SetApplicationMainFormOnTaskBar(Application, true); Application->CreateForm(__classid(TForm1), &Form1); Application->CreateForm(__classid(TForm2), &Form2); Application->Run(); }
-
Habe es jetzt getestet.
Scheint wohl an der Zeile zu liegen, die OldMan00 angegeben hat.
Schon komisch, was sich CodeGear dabei wohl gedacht hat?
Danke für die Antwort.