Client Formular in den Vordergrund

Bobbele

Grünschnabel
Hallöchen,

folgendes Problem:

Ich habe eine Anwendung in der ein Formular dynamisch zur Laufzeit erzeugt und angezeigt wird. Dieses Formular kann auch mehrfach vorhanden sein (so ähnlich wie mehrere Chat Fenster).

Soweit OK. Nun zum Problem:

Wenn ich eine gänzlich andere Anwendung in de Vordergrund hole, dann eines meiner Formulare anklicke, so werden ALLE meine dyn. Formulare VOR die andere Anwendung geholt, nicht nur das, was ich angeklickt habe.

Ich möchte es jedoch so haben, das NUR das angeklickte Client-Formular nach vorne kommt!

Kann da jemand Helfen ?

Vielen Dank schon mal

Bobbele
 

Dario Linsky

Erfahrenes Mitglied
Hi,

dazu müsstest Du AFAIK das Formular, um das es geht, in eine eigene Anwendung auslagern und von dieser Anwendung dann mehrere Instanzen starten.
Wenn ich mich nicht irre, regelt Windows das so, dass eine Anwendung alle ihr zugehörigen Formulare kapselt.

Gruss, Dario
 

Bobbele

Grünschnabel
Danke Lirion,

aber genau das will ich grade nicht. :(

Ich habe auch schon versucht das Child-Window per CreateParented(0) zu erzeugen um es von der Hauptanwendung zu trennen, aber Delphi, bzw. Windows weisen weiterhin ein Parent WindowHandle zu *bäääh, iss das ekelig*

Vielleicht finde ich ja noch was, aber meine Hoffnung schwindet.
 

Peter Bönnen

Erfahrenes Mitglied
OK, mein Verdacht war, dass Fenster einfach nicht ohne gültiges Parent Handle existieren dürfen. Schließlich haben auch Hauptformulare ein Parent Handle > 0. Daher der Gedanke, den Desktop als Parent einzusetzen.

Kurz gesucht und das gefunden:
http://delphi.about.com/library/weekly/aa073101b.htm

EDIT: Der Code der o.g. Seite falls der Link mal nicht mehr funktioniert:
Code:
procedure TForm1.CreateParams
   (var Params: TCreateParams);
begin
  inherited CreateParams(Params);
  with Params do begin
    ExStyle := ExStyle or WS_EX_APPWINDOW;
    WndParent := GetDesktopwindow;
  end;
end;
Ich hoffe es klappt. Ist nicht getestet.

Fluke
 
Zuletzt bearbeitet:

Bobbele

Grünschnabel
Superklasse Fluke ;)

Muss mich herzlichst bedanken ! Funktioniert wunderprächtig !

delphi.about hab ich auch gesucht, aber scheinbar an falscher Stelle. Zum glück hast Du Adleraugen !

thx
Bobbele
 

Bobbele

Grünschnabel
Kleine bittere Pille der ganzen Sache:

Die Client-Fenster werden nun jedes einzeln im Task-Manager aufgelistet :(

Wäre ja soweit nicht schlimm, aber verwendet man "Task beenden" auf ein Client-Fenster, schliesst sich nach einer kleinen Verzögerung die ganze Applikation. In der Delphi-IDE sogar derart schlimm, das Delphi aus dem Debug-Modus nicht mehr raus kommt.

Oh,oh ! Noch mehr Grundlagenforschung *grins*

Bobbele