AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Form kommt nicht in den Vordergrund, neuer VCL Bug in D2009?
Thema durchsuchen
Ansicht
Themen-Optionen

Form kommt nicht in den Vordergrund, neuer VCL Bug in D2009?

Ein Thema von Assertor · begonnen am 26. Nov 2008 · letzter Beitrag vom 2. Jul 2009
Antwort Antwort
Seite 2 von 2     12   
Assertor

Registriert seit: 4. Feb 2006
Ort: Hamburg
1.296 Beiträge
 
Turbo C++
 
#11

Re: Form kommt nicht in den Vordergrund, neuer VCL Bug in D2

  Alt 26. Nov 2008, 18:20
Hi Andreas,

Zitat von jbg:
Zitat von Assertor:
Hat jemand hierzu einen QC? Betrifft das nur meine Installation?
Mach einen auf, und ich schließe den mit "As Designed".
Entschuldige mal, aber das wäre nicht der richtige Weg.

MainFormOnTaskbar war ja in D2007 grob vereinfacht gesagt ja dazu gedacht, Delphi Vista UI tauglich zu bekommen. Das UI Problem mit Delphi < D2007 und der Hidden Application Form ist ja auch lösbar über andere Ansätze (InstallationExcellence z.B.). Mit diesen Workarounds war es auch möglich, ein korrektes Verhalten zu implementieren.

Peter Below hat afaik vor einigen Jahren mal etwas gesagt - frei übersetzt "Leg dich nicht mit der VCL Logik der Forms an". Das stimmt, aber wenn es um den übliche Verhalten von Windows Fenstern geht, ist diese Lösung von MainFormOnTaskBar ein Bug.

Höchstens, "As Designed" ... "but it's Design is poor".

Es kann nicht sein, daß ein zweites Fenster trotz Aktivierung des MainForm im Vordergrund bleibt. Das entspricht nicht dem jahrelangen Look-And-Feel der UI. Punkt.

Ich habe andere Informationen dazu, die ich Dir gleich per PN schicke.

Gruß Assertor
Frederik
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#12

Re: Form kommt nicht in den Vordergrund, neuer VCL Bug in D2

  Alt 26. Nov 2008, 18:45
Zitat von Assertor:
über andere Ansätze (InstallationExcellence z.B.). Mit diesen Workarounds war es auch möglich, ein korrektes Verhalten zu implementieren.
Hast du das ausprobiert? 3D Flip und die Taskbar funktionierten damit, aber es gab einige Nebeneffekte, da das Hauptformular nun nicht mehr im z-order Stack des Application.Handle war.

Zitat:
aber wenn es um den übliche Verhalten von Windows Fenstern geht, ist diese Lösung von MainFormOnTaskBar ein Bug.
Das sehe ich ganz anders. Das Verhalten von Delphi 1-2006 war nicht Windows-üblich. Mach mal in Word, Excel oder einer anderen MFC Anwendung deiner Wahl ein nicht-modales Fenster auf. Die liegen alle über dem Hauptfenster. Und warum ist das so? Weil dem CreateWindowEx ein HwndParent mitgegeben wird.

Wenn du das verhalten unter Delphi 2007/2009 samt Windows Vista Unterstützung haben willst musst du CreateParams überschreiben und dort Params.ExStyle |= WS_EX_TOOLWINDOWS; und Params.WndParent := HWND_DESKTOP; einstellen.


Zitat:
Es kann nicht sein, daß ein zweites Fenster trotz Aktivierung des MainForm im Vordergrund bleibt. Das entspricht nicht dem jahrelangen Look-And-Feel der UI. Punkt.
... nicht dem jahrelangen Delphi Look-And-Feel der UI.
  Mit Zitat antworten Zitat
Assertor

Registriert seit: 4. Feb 2006
Ort: Hamburg
1.296 Beiträge
 
Turbo C++
 
#13

Re: Form kommt nicht in den Vordergrund, neuer VCL Bug in D2

  Alt 26. Nov 2008, 19:05
Zitat von jbg:
Zitat von Assertor:
über andere Ansätze (InstallationExcellence z.B.). Mit diesen Workarounds war es auch möglich, ein korrektes Verhalten zu implementieren.
Hast du das ausprobiert? 3D Flip und die Taskbar funktionierten damit, aber es gab einige Nebeneffekte, da das Hauptformular nun nicht mehr im z-order Stack des Application.Handle war.
Ja, hatte ich im produktiven Einsatz samt einiger eigenen Anpassungen. Damit war das Verhalten identisch zu anderen Anwendungen, z.B. Firefox (zweite Fenster z.B. von Favoriten-Library) und allem, was man täglich so im Einsatz hat.

Zitat von jbg:
Zitat:
aber wenn es um den übliche Verhalten von Windows Fenstern geht, ist diese Lösung von MainFormOnTaskBar ein Bug.
Das sehe ich ganz anders. Das Verhalten von Delphi 1-2006 war nicht Windows-üblich. Mach mal in Word, Excel oder einer anderen MFC Anwendung deiner Wahl ein nicht-modales Fenster auf. Die liegen alle über dem Hauptfenster. Und warum ist das so? Weil dem CreateWindowEx ein HwndParent mitgegeben wird.
Mir ist das nie aufgefallen. Bei Delphi 2009 Anwendungen im Pre-Release Test aber sofort.

Zitat von jbg:
Wenn du das verhalten unter Delphi 2007/2009 samt Windows Vista Unterstützung haben willst musst du CreateParams überschreiben und dort Params.ExStyle |= WS_EX_TOOLWINDOWS; und Params.WndParent := HWND_DESKTOP; einstellen.
Stimmt, Danke nochmal für den Hinweis. Habe ich direkt vor Deinem Post schon selbst eingebaut Zum Glück hab verwende ich eine Form-Vorlage für sowas

Zitat von jbg:
Zitat:
Es kann nicht sein, daß ein zweites Fenster trotz Aktivierung des MainForm im Vordergrund bleibt. Das entspricht nicht dem jahrelangen Look-And-Feel der UI. Punkt.
... nicht dem jahrelangen Delphi Look-And-Feel der UI.
Ja, Du triffst - wie immer - den Nagel mit dem Kopf, äh auf den Kopf Ja, das schicke Hidden App Window und Form Behaviour. War bestimmt auch toll für etwas vor oder um Win95 herum. Inzwischen sollte das mal gehörig redesigned werden.

Das grundlegende Änderungen möglich sind, zeigt ja Delphis .NET Geschichte. Oder BDE, Interbase, oder, oder...

Trotzdem vielen Dank fürs Brainstorming. Dein Ansatz ist das, was ich jedem empfehlen würde, der vor diesem "Problem" steht bzw. damit durch Kunden konfrontiert wird. Wie so oft entstehen Pseudo-Standards durch Gewöhnung, Anwendungen die hier aus der Reihe tanzen fallen auf - nicht immer positiv. Mit dem Überschreiben von CreateParams läßt sich für wichtige, untergeordnete aber sachlich eigenständige Forms eine eigene Desktop-Zugehörigkeit erreichen.

Zusätzlich ließe sich per WS_EX_APPWINDOW ja noch ein eigener Taskbar Button dafür spendieren, ich nutze daher
Params.ExStyle := Params.ExStyle and not WS_EX_TOOLWINDOW or WS_EX_APPWINDOW; im CreateParams override.

Das reicht mir und hilft vielleicht allen, die ebiges wollen.

Gruß und herzlichen Dank,
Assertor

Frederik
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#14

Re: Form kommt nicht in den Vordergrund, neuer VCL Bug in D2

  Alt 26. Nov 2008, 19:10
Zitat von Assertor:
Zusätzlich ließe sich per WS_EX_APPWINDOW ja noch ein eigener Taskbar Button dafür spendieren, ich nutze daher
Params.ExStyle := Params.ExStyle and not WS_EX_TOOLWINDOW or WS_EX_APPWINDOW; im CreateParams override.

Das reicht mir und hilft vielleicht allen, die ebiges wollen.
Und genau dafür könnte CodeGear ein neues Property einführen, dass das automatisch macht. Müsste man denen mal per QC für Commodore64 vorschlagen.
  Mit Zitat antworten Zitat
Assertor

Registriert seit: 4. Feb 2006
Ort: Hamburg
1.296 Beiträge
 
Turbo C++
 
#15

Re: Form kommt nicht in den Vordergrund, neuer VCL Bug in D2

  Alt 26. Nov 2008, 19:35
Hi Andreas,

Gute Idee! Dann wären alle glücklich und ich müsste nicht gleich mit der QC-Bugentry-Pistole zielen

Zitat von jbg:
Commodore64 vorschlagen.
Lol! Den kannte ich noch nicht. Des Problems Lösung liegt wohl irgendwo zwischen 42 und SYS65535...

Mach doch ein Enhancement Request, dann vote ich für Dich

Gruß Assertor
Frederik
  Mit Zitat antworten Zitat
hronny

Registriert seit: 4. Mai 2006
Ort: Thüringen
97 Beiträge
 
Delphi 2007 Professional
 
#16

Re: Form kommt nicht in den Vordergrund, neuer VCL Bug in D2

  Alt 2. Jul 2009, 07:50
Ich weis das der Thread schon etwas alt ist, aber ich kann das Problem unter Delphi 2007 nicht lösen. Vielleicht habe ich auch etwas übersehen. Aber trotz der veränderten Routine CreateParam klappt es bei mir nicht, das die Hauptform in den Vordergrund kommt. Ich hänge mal das Musterprojekt an.
Angehängte Dateien
Dateityp: rar test_formbug_574.rar (8,5 KB, 9x aufgerufen)
grep -ri shit /usr/src/linux/*
  Mit Zitat antworten Zitat
samso

Registriert seit: 29. Mär 2009
439 Beiträge
 
#17

Re: Form kommt nicht in den Vordergrund, VCL Bug in D2007+

  Alt 2. Jul 2009, 10:57
Hallo,
ich habe Dein Beispiel nachvollzogen. Es spielt, wenn man das Gedöns bei Form2 statt bei Form1 macht.

An alle die vielleicht auch zwischenzeitlich mal den Faden verloren haben:
Es geht um das Umschalten zwischen Hauptformular und zweitem Formular. Zwischen dem Zweiten und einem dritten Formular kann man so umschalten, wie bisher (<2007) auch.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 21:02 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