Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi 2.Form anzeigen ohne Focus auf Mainform zu verlieren (https://www.delphipraxis.net/94426-2-form-anzeigen-ohne-focus-auf-mainform-zu-verlieren.html)

delphitrixer 21. Jun 2007 10:24


2.Form anzeigen ohne Focus auf Mainform zu verlieren
 
Hallo Zusammen

Ich möchte von meinem MainForm ein 2. Form createn und dieses TopMost anzeigen. Allerdings darf mein
MainForm den Focus dabei nicht verlieren.

Das 2. Form generiere ich auf einem Button mit:

Code:
procedure Tfrm_Menu.Button2Click(Sender: TObject);
begin
  frm_MessageWindow := Tfrm_MessageWindow(Self);
  frm_MessageWindow.Show;
end;
Ich habe schon mit SetWindowPos, BringToFront und..und herumgepröbelt :wall: und krieg es aber irgendwie
einfach nicht hin.

Hat jemand einen Tip?

mkinzler 21. Jun 2007 10:30

Re: 2.Form anzeigen ohne Focus auf Mainform zu verlieren
 
Du könntest die Erignisse in Form2 an Form1 weiterleiten.

delphitrixer 21. Jun 2007 10:33

Re: 2.Form anzeigen ohne Focus auf Mainform zu verlieren
 
Das verstehe ich nicht ganz. Mein Form2 sollte so eine Art AlertWindow sein das einfach
angezeigt werden soll ohne das Mainform in irgendeiner Weise zu beeinflussen.

dajuhsa 21. Jun 2007 11:47

Re: 2.Form anzeigen ohne Focus auf Mainform zu verlieren
 
Kann es sein, dass man das mit Form1.SetFocus hinkriegt?

Am Anfang wechselt der Fokus halt kurz rüber aber das macht doch nichts oder?

ChrisE 21. Jun 2007 12:05

Re: 2.Form anzeigen ohne Focus auf Mainform zu verlieren
 
Hallo Delphitrixer,

Zitat:

Zitat von delphitrixer
Hallo Zusammen

Das 2. Form generiere ich auf einem Button mit:

Code:
procedure Tfrm_Menu.Button2Click(Sender: TObject);
begin
  frm_MessageWindow := Tfrm_MessageWindow(Self);
  frm_MessageWindow.Show;
end;

Versuch es mal mit:
Code:
ShowWindow(frm_MessageWindow.Handle, SW_SHOWNOACTIVATE);
Gruß, Chris

delphitrixer 21. Jun 2007 12:39

Re: 2.Form anzeigen ohne Focus auf Mainform zu verlieren
 
Hallo ChrisE

Das klappt!

Komisch ist, dass ich dann, wenn ich das 2.Form anklicke und schliessen möchte sich dieses
nicht schliessen lässt. Erst nachdem ich auf TForm2.FormActivate noch zusätzlich einen
'Show' eingebaut habe lässt sich das Form2 auch schliessen. Sehe da den Zusammenhang nicht
ganz aber hauptsache es klappt.

Danke für Eure Tips.

delphitrixer 21. Jun 2007 13:13

Re: 2.Form anzeigen ohne Focus auf Mainform zu verlieren
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zu früh gefreut!

Das 2. Form wird

zwar perfekt ohne den Focus zu erhalten angezeigt. Befindet sich auf dem 2. Form
allerdings ein Label und ein Button wird nur der Label angezeigt. Der Button er-
scheint erst mit einem Klick in das Form2.

Habe mein kleines Test-Project angehängt wenn's jemand bei sich testen will.

Wäre froh um weitere Tips.

Danke

delphitrixer 21. Jun 2007 14:06

Re: 2.Form anzeigen ohne Focus auf Mainform zu verlieren
 
:coder2:

hmmm...ich komm einfach nicht weiter. Es ist zum Mäuse melken! :gruebel:

Sollte doch im Prinzip ganz simpel sein und funktioniert ja ansatzweise auch.
Aber warum zeigt Delphi auf dem zweiten Form nicht alle Komponenten an solange
nicht in das zweite Fenster geklickt wird?

Danke Euch alle für weitere Tips. Ich zähl auf Euch!

alzaimar 21. Jun 2007 14:22

Re: 2.Form anzeigen ohne Focus auf Mainform zu verlieren
 
Delphi weiss vermutlich gar nicht, das die 2.Form sichtbar ist..
So gehts bei mir:
Delphi-Quellcode:
Procedure TForm1.btAlertClick(Sender: TObject);
Begin
  Form2.Show;
  SetFocus;
  ActiveControl := edit1; // Edit1 ist fokusiert
End;
Bei Form2 habe ich FormStyle auf 'fsStayOnTop' gesetzt...

Geht doch.. :mrgreen:

delphitrixer 21. Jun 2007 14:35

Re: 2.Form anzeigen ohne Focus auf Mainform zu verlieren
 
hallo alzaimar

trivial und simpel.

auf den ersten blick klappt das ganz ohne "mucken".

Aber technisch gesehen verliert mein Form1 nun doch kurz-
zeitig den Focus was ich eigentlich vermeiden wollte, oder?


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:43 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz