Form1 und Form2 gleichzeitig sichtbar?
-
Hallo.
Ich habe 2 Formen in meiner Anwendung, wobei Form1 fsStayOnTop ist.
Jetzt kann es sein, das man Explorer oder noch andere Programme öffnet und Form2 dahinter verschwindet. Jetzt hätte ich es gerne das wenn man in Form1 klickt bzw arbeitet Form2 wieder nach vorne kommt, so das man die Eingaben die man getättigt hat auch wieder sieht.Wenn man aber Form2->BringToFront oder ähnliches macht in OnActivate, dann hat immer Form2 den Focus und man kann garnix mehr machen

*hust* Hat da einer eine Lösung?
-
Ich hab zwar schon lang nichts mehr mit dem BCB gemacht, aber ich glaub das geht so:
void BringForm2ToFrontWithoutFocus() { Form2->Show(); /* Bring Form2 in den Vordergrund */ Form1->Show(); /* Bring Form1 danach in den Vordergrund => Erhält den Focus */ }
-
Und wo ruft man diese Funktion auf?
Genau da liegt ja das Problem!
-
Hallo
sollte funktionieren :
void __fastcall TForm1::OnActivate(TObject *Sender) { Form2->Show(); Form1->SetFocus(); }bis balkd
akari
-
Das war das aller erste was ich probiert habe und leider nicht geklappt hat.
Denn wenn er den Focus auf Form1 wieder setzt wird OnActivate aufgerufen, und genau das ist mein Problem.
-
Form1->OnActivate = 0; Form1->SetFocus(); Form1->OnActivate = OnActivate;keine ahnung ob der hack funktioniert.

-
Hallo
ach so... in dem Fall nimmst du statt dem OnActivate des Forms dann den der Application. Erstell dazu in deiner Form1 ein TApplicationEvents aus dem Tab Zusätzlich. In diesem erstellst du für den OnActivate-Event eine Methode und schriebst darein
void __fastcall TForm1::ApplicationEvents1Activate(TObject *Sender) { if (Form3->Visible == true) Form3->BringToFront(); }Dann wird das Form3 immer zusammen angezeit, wenn die Anwedung selber aktiviert wird.
bis bald
akari
-
@akari
Klappt super! Vielen lieben Danke
@Sunday
Danke, aber ich löse es lieber so wie akari sagte
(falls der "hack" überhaupt klapp en würde ^^)