Delphi-PRAXiS

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 TColorDialog - Fenster verschwindet (https://www.delphipraxis.net/166233-tcolordialog-fenster-verschwindet.html)

haentschman 3. Feb 2012 19:21


TColorDialog - Fenster verschwindet
 
Liste der Anhänge anzeigen (Anzahl: 2)
Hallo alle...

ich komme mal wieder aus dem Staunen nicht heraus...8-) Bei:
Delphi-Quellcode:
dlgColor:= TColorDialog.Create(nil);
try
  if dlgColor.Execute then pnlColorLine.Color:= dlgColor.Color;
finally
  dlgColor.Free;
end;
... passiert folgendes:
- mein modales Fenster woraus der Dialog aufgerufen wird verschwindet
- Dialog erscheint
- Nach dem Beenden des Dialogs ist das modale Fenster wieder da

* Dialog auf die Form gelegt... Ergebnis gleich
* verschiedene BorderStyles des modalen Fensters... Ergebnis gleich

wer kann mich erhellen ?

Nachtrag:
Ha... mein modales Fenster verschwindet hinter der Main Form :shock: Wie das denn ?

PS: StayOnTop ist nicht die Lösung da dann der ColorDialog hinter dem modalen Fenster liegt.

Nachtrag2:
- mehrere verschiedene Dialogs ausprobiert...Ergebnis gleich
- bei TOpenPictureDialog kommt das Fenster nichtmal von allein wieder. Läßt sich aber durch Klick nach vorn holen
- mit D2007 ist das alles normal wie erwartet

:evil: Ich hasse solche Sachen. Die Kosten Unmengen an kostbarer Zeit !

himitsu 3. Feb 2012 20:08

AW: TColorDialog - Fenster verschwindet
 
Und so?
Delphi-Quellcode:
dlgColor := TColorDialog.Create(nil);
try
  if dlgColor.Execute(Application.MainFormHandle) then pnlColorLine.Color := dlgColor.Color;
finally
  dlgColor.Free;
end;
(bzw. das Handle der Form, in deren Kontext das aufgerufen wird)

Wenn du keinen Z-Beziehung angibst, dann wird halt nicht unbedingt das genommen, was du gerne hättest
und schon kann sich der Dialog an eine andere Form hängen und diese direkt hinter sich ziehen.
(also vor die gewünschte Form, welche in deinem Fall anscheinend die MainForm ist)


Wenn ich das richtig gehört/verstanden hab, dann haben sich irgendwann in 2009/2010 die Z-Beziehungen verändert.
So bleiben z.B. alle erstellten Fenster standardmäßig immer vor der MainForm, selbst wenn die MainForm den Fokus bekommt.

haentschman 3. Feb 2012 20:16

AW: TColorDialog - Fenster verschwindet
 
danke...
ich hatte auch
Delphi-Quellcode:
dlgColor.Execute(Self.Handle)
ausprobiert. Wobei Self das Einstellungsfenster ist woraus der Dialog aufgerufen wird.

* auch bei
Delphi-Quellcode:
dlgColor.Execute(Application.MainFormHandle)
Ergebnis ... Einstellungen verschwinden

...ich glaube ich mache mir ne Buddel Roten auf ... hat ja alles keinen Sinn. Was kommen da noch für Probleme ! :roll:

Nachtrag:
nach diversem Lesen habe ich in der Projektdatei MainFormOnTaskBar:= False gesetzt. Uns Schwupps... alles normal :wall:

Soweit ich aber gelesen habe ist MainFormOnTaskBar:= True Pflicht seit Vista ... :gruebel:

Wer hat die zündende Idee ?

Auszüge Delphi Hilfe:
Zitat:

MainFormOnTaskBar muss true sein, damit die Aero-Effekte aus Windows Vista verwendet werden können. Dazu zählen: LiveTaskbar-Miniaturansichten, dynamische Fenster, Windows-Flip und Windows-Flip-3D.
.
.
.
Die Eigenschaft kann auch für ältere Anwendungen verwendet werden. Beachten Sie, dass sich die Eigenschaft auf die Z-Reihenfolge des Hauptformulars auswirkt, falls Ihre Anwendung davon abhängig ist.

...wie kriegt man den 2. Part eindeutig geregelt ?

LÖSUNG:
http://www.delphipraxis.net/162976-m...showmodal.html
wie in diesem Beitrag #9...in der Projektdatei...
Delphi-Quellcode:
Application.Initialize;
Application.MainFormOnTaskbar := True;
Application.ModalPopupMode:= pmExplicit;
Da ich auch mit pmExplizit im Objektinspector der Forms ohne Erfolg experimentiert hatte konnte ich es nicht wirklich glauben. Aber es wirkt...

Danke an Alle... oder ausnahmsweise mal an mich :cheer:

himitsu 3. Feb 2012 21:22

AW: TColorDialog - Fenster verschwindet
 
Hmmmmm.
Nja, *gratulier*.

MainFormOnTaskBar ist nicht unbedingt Pflicht, aber es macht sich besser, vorallem in Bezug auf Aero.

haentschman 3. Feb 2012 21:25

AW: TColorDialog - Fenster verschwindet
 
Zitat:

Nja, *gratulier*.
:lol: Ich verstehe das mal als Kompliment :zwinker:


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:33 Uhr.

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