![]() |
MainFormOnTaskBar / Modale Fenster / StayOnTop
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
ich habe folgendes Problem mit MainFormOnTaskbar und die Suche brachte mich nicht wirklich weiter. Ich nutzte RAD Studio 2007. Vereinfachtes Problem (Dummy-Projekt): Ein Hauptformular hat zwei weitere Fenster. Eines wird mit FormStyle fsStayOnTop erstellt (im OI). Das Hauptformular hat drei Buttons. Einer zeigt das StayOnTop-Child der andere ruft das zweite Child mit ShowModal auf, der dritte zeigt einen MessageDialog. Problembeschreibung: Wird in der dpr der Parameter MainformOnTaskbar auf TRUE gesetzt (default) können modale Fenster und Dialoge hinter dem StayOnTop-Child landen und die Anwendung wird unbedienbar. Wird MainformOnTaskbar auf FALSE gesetzt landen modale Fenster und Dialog immer vor dem StayOnTop-Child. Da MainformOnTaskBar ja wichtig ist für Vista etc. stellt sich die Frage wie man das jetzt Regeln soll? Im Anhang das Dummy-Projekt. Danke für Eure Hilfe. Gruß ChrisE |
Re: MainFormOnTaskBar / Modale Fenster / StayOnTop
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
damit das nicht nur ein Pushen wird hier noch ein paar Erkenntnisse zu dem Problem: 1. mit Überschreiben von CreateParams in jedem Form gibt es durchaus erste Erfolge. Das ganze habe ich ![]()
Delphi-Quellcode:
Dadurch wird zuerst einmal das Problem behoben, dass modale Dialoge hinter anderen Dialogen auftauchen.
procedure TMainForm.CreateParams(var params: TCreateParams);
begin inherited; // params.ExStyle := params.ExStyle or WS_EX_APPWINDOW; if Application.MainFormOnTaskbar then begin params.WndParent := Application.Handle; end; end; 2. Aber es entsteht desweiteren ein Z-Order-Problem wenn MainformOnTaskbar an ist. Sobald [Alt+TAB] oder [Windows+TAB] gedrückt werden kann es sein, dass die Fenster nicht mehr in der richtigen Reihenfolge auftauchen. Es bleibt als weiter unbefriedigend gegenüber MainformOnTaskBar -> FALSE Ich habe nochmals eine aufgebohrtes Beispielprojekt angehängt. Ich bitte euch weiter um Unterstützung. THX, ChrisE |
Re: MainFormOnTaskBar / Modale Fenster / StayOnTop
Hallo ChrisE,
nach meiner Erfahrung ist generell von der Verwendung von FormStyle (fsStayOnTop) abzuraten. Es funktioniert nicht zuverlässig. Stattdessen würde ich folgendes probieren:
Delphi-Quellcode:
Oder hier statt Application.MainForm.Handle direkt das Handle Deines Hauptformulars angeben.
SetWindowLong(aStayOnTopForm.Handle, GWL_HWNDPARENT, Application.MainForm.Handle);
Grüße, blauweiss |
Re: MainFormOnTaskBar / Modale Fenster / StayOnTop
Hallo alle miteinander,
leider findet sich immer noch keine Lösung um MainFormOnTaskBar richtig zu nutzen. Hat niemand eine Lösung? |
Re: MainFormOnTaskBar / Modale Fenster / StayOnTop
:duck:
*push* |
Re: MainFormOnTaskBar / Modale Fenster / StayOnTop
Hallo
Bitte beschreibe nochmals anhand des Demos, was wann bei dir nicht funktioniert. z.B. Button "Child -> StayOnTop" -> Button "Second Show" -> Fenster "Second Modal" wird hinter "Child On Top" angezeigt. |
Re: MainFormOnTaskBar / Modale Fenster / StayOnTop
Liste der Anhänge anzeigen (Anzahl: 2)
Hallo Toms,
danke das du dich meinem Problem annimmst. Also: Mainform -> ChildStayOnTop ChildStayOnTop -> ChildModal ChildModal -> SecondModal Das ist der Ausgangszustand (1.Bild). Unter Vista jetzt entweder zweimal auf den Eintrag unten in der Taskleiste klicken (Programmeintrag) oder per <Windows>+<Tab> umschalten bis du wieder bei dem Programm bist. Dadurch entsteht das zweite Bild (siehe Anhang). Das ganze passiert nur, wenn in der dpr
Delphi-Quellcode:
gesetzt wird. Mit FALSE kommt die Anwendung immer wieder so "zurück" wie sie "verlassen" wurde.
MainFormOnTaskbar := TRUE
Ich hoffe das erklärt mein Problem besser :-) Greez, Chris EditP.S.: Es kann auch passieren das alle Fenster hinter dem MainForm liegen nach dem zurückschalten (zweimal wechseln) |
Re: MainFormOnTaskBar / Modale Fenster / StayOnTop
:duck:
Es tut mir echt Leid, dass ich schon wieder pushen muss. Aber kann es sein, dass dies einfach ein VCL-Bug ist? Wie verhalten sich Programme bei Delphi 2009/2010. Gibt es da diese Probleme immer noch? Gruß, Chris |
Re: MainFormOnTaskBar / Modale Fenster / StayOnTop
Unter D2010 scheint es dieses Problem nicht zu geben. Da ich D2007 nicht installiert habe, kann ich es dort leider nicht testen.
|
Re: MainFormOnTaskBar / Modale Fenster / StayOnTop
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo toms,
danke für die Antwort. Warst ja früh wach :-) Kannst du mir einen Gefallen tun und das Projekt mit D2010 kompilieren und vorher noch folgende Änderungen vornehmen:
Ich würde das gerne mit eigene Augen sehen :shock: Danke Dir für Deine Hilfe, ich forsche weiter. Gruß, Chris |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:49 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz