AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein MainFormOnTaskBar / Modale Fenster / StayOnTop
Thema durchsuchen
Ansicht
Themen-Optionen

MainFormOnTaskBar / Modale Fenster / StayOnTop

Ein Thema von ChrisE · begonnen am 17. Nov 2009 · letzter Beitrag vom 2. Mär 2011
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von ChrisE
ChrisE

Registriert seit: 15. Feb 2006
Ort: Hechingen
504 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

MainFormOnTaskBar / Modale Fenster / StayOnTop

  Alt 17. Nov 2009, 07:26
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
Angehängte Dateien
Dateityp: zip dummyprojekt_251.zip (2,4 KB, 13x aufgerufen)
Christian E.
Es gibt 10 Arten von Menschen, die die Binär lesen können und die die es nicht können

Delphi programming rules
  Mit Zitat antworten Zitat
Benutzerbild von ChrisE
ChrisE

Registriert seit: 15. Feb 2006
Ort: Hechingen
504 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

Re: MainFormOnTaskBar / Modale Fenster / StayOnTop

  Alt 18. Nov 2009, 08:52
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 hier her und sieht dann exemplarisch so aus
Delphi-Quellcode:
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;
Dadurch wird zuerst einmal das Problem behoben, dass modale Dialoge hinter anderen Dialogen auftauchen.

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
Angehängte Dateien
Dateityp: zip dummyprojekt_144.zip (4,8 KB, 10x aufgerufen)
Christian E.
Es gibt 10 Arten von Menschen, die die Binär lesen können und die die es nicht können

Delphi programming rules
  Mit Zitat antworten Zitat
blauweiss

Registriert seit: 19. Jun 2007
142 Beiträge
 
#3

Re: MainFormOnTaskBar / Modale Fenster / StayOnTop

  Alt 18. Nov 2009, 09:49
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:
  SetWindowLong(aStayOnTopForm.Handle, GWL_HWNDPARENT, Application.MainForm.Handle); Oder hier statt Application.MainForm.Handle direkt das Handle Deines Hauptformulars angeben.

Grüße,
blauweiss
  Mit Zitat antworten Zitat
Benutzerbild von ChrisE
ChrisE

Registriert seit: 15. Feb 2006
Ort: Hechingen
504 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

Re: MainFormOnTaskBar / Modale Fenster / StayOnTop

  Alt 20. Nov 2009, 06:32
Hallo alle miteinander,

leider findet sich immer noch keine Lösung um MainFormOnTaskBar richtig zu nutzen.

Hat niemand eine Lösung?
Christian E.
Es gibt 10 Arten von Menschen, die die Binär lesen können und die die es nicht können

Delphi programming rules
  Mit Zitat antworten Zitat
Benutzerbild von ChrisE
ChrisE

Registriert seit: 15. Feb 2006
Ort: Hechingen
504 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

Re: MainFormOnTaskBar / Modale Fenster / StayOnTop

  Alt 23. Nov 2009, 10:21

*push*
Christian E.
Es gibt 10 Arten von Menschen, die die Binär lesen können und die die es nicht können

Delphi programming rules
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#6

Re: MainFormOnTaskBar / Modale Fenster / StayOnTop

  Alt 23. Nov 2009, 10:37
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.
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von ChrisE
ChrisE

Registriert seit: 15. Feb 2006
Ort: Hechingen
504 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#7

Re: MainFormOnTaskBar / Modale Fenster / StayOnTop

  Alt 23. Nov 2009, 11:21
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 MainFormOnTaskbar := TRUE gesetzt wird. Mit FALSE kommt die Anwendung immer wieder so "zurück" wie sie "verlassen" wurde.

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)
Miniaturansicht angehängter Grafiken
klickenaufdentaskbareintrag_zweimal_173.jpg   ausgangszustand_140.jpg  
Christian E.
Es gibt 10 Arten von Menschen, die die Binär lesen können und die die es nicht können

Delphi programming rules
  Mit Zitat antworten Zitat
Benutzerbild von ChrisE
ChrisE

Registriert seit: 15. Feb 2006
Ort: Hechingen
504 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#8

Re: MainFormOnTaskBar / Modale Fenster / StayOnTop

  Alt 25. Nov 2009, 06:53


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
Christian E.
Es gibt 10 Arten von Menschen, die die Binär lesen können und die die es nicht können

Delphi programming rules
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#9

Re: MainFormOnTaskBar / Modale Fenster / StayOnTop

  Alt 27. Nov 2009, 04:48
Unter D2010 scheint es dieses Problem nicht zu geben. Da ich D2007 nicht installiert habe, kann ich es dort leider nicht testen.
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von ChrisE
ChrisE

Registriert seit: 15. Feb 2006
Ort: Hechingen
504 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#10

Re: MainFormOnTaskBar / Modale Fenster / StayOnTop

  Alt 27. Nov 2009, 06:08
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:
  • MainFormOnTaskBar := TRUE in der dpr
  • CreateParams in jedem Form auskommentieren
oder alterbnativ das Projekt im Anhang kompilieren
Ich würde das gerne mit eigene Augen sehen

Danke Dir für Deine Hilfe, ich forsche weiter.

Gruß, Chris
Angehängte Dateien
Dateityp: zip projekte_130.zip (4,8 KB, 17x aufgerufen)
Christian E.
Es gibt 10 Arten von Menschen, die die Binär lesen können und die die es nicht können

Delphi programming rules
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:49 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