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 MessageDLG rutscht nach hinten! (https://www.delphipraxis.net/104557-messagedlg-rutscht-nach-hinten.html)

Loewentier 6. Dez 2007 10:38


MessageDLG rutscht nach hinten!
 
Habe in letzter Zeit massiv ein Problem bei dem Ihr vielleicht helfen könntet! :pale:
Jeder kennt die Problem das gerade beim Entwickeln manchmal eine MessageBox nach hinter rutscht....
Normalerweise passiert das beim Anwender selten und ein ALT+TAB hilft hier immer weiter!

In einer neuen Charge von PC's die wir aktuell ausliefern scheint es aber so zu sein, dass Messageboxen ausgelöst von modalen Forms regelmässig im Hintergrund landen und auch so leicht nicht wieder nach vorne zu holen sind...
Die neuen "kartonfrischen" PC's sind scheinbar HP-Compaq Intel-V-pro mit Chipsatz-Graphik und Core 2 CPU
(An sich nichts besonderes! Bei > 50 anderen Installationen hatten wir keine Probleme...)

Denke das es an irgendeiner Windows Einstellung oder einem Windows Hot Fix liegen muss :wall:

Hat irgendjemand das gleiche Problem.... oder noch besser :lol: eine Idee an welcher Windows Einstellung etc. es liegen könnte

Ach ja:
Miene Applikation läuft mit Delphi 7! :mrgreen:

RavenIV 6. Dez 2007 10:45

Re: MessageDLG rutscht nach hinten!
 
Dieses Problem wurde hier schon mal gelöst.
Einfach mal die Suche bemühen...

Bernhard Geyer 6. Dez 2007 10:46

Re: MessageDLG rutscht nach hinten!
 
Das Problem liegt an dem Aufsatz Windows XP-Theming welches das Fensterhandling geändert hat und damit zu Probleme mit älteren VCL-Implementierungen führt (Aber nicht nur VCL-Anwendungen fallen damit auf die Schnautze).

Evtl. hilft es einfach mal einen aktuellen Grafikkartentreiber zu installieren.

Loewentier 6. Dez 2007 11:25

Re: MessageDLG rutscht nach hinten!
 
[quote]RavenIV
Stimmt: Bei genauen durchsuchen habe ich z.B. http://www.delphipraxis.net/internal...ght=messagedlg
gefunden was in diese Richtung ging :gruebel:

Glaube aber insgesamt das ich es hier eher mit einem Problem des Graphikkarten Treibers oder einer Windows Einstellung zu tun habe...
Sehr viele Installationen meiner Software laufen problemlos!

Loewentier 13. Dez 2007 14:09

Re: MessageDLG rutscht nach hinten!
 
Hallo Leute!

Bezüglich des Problem mit den MessageBoxen habe ich einige Tests gemacht und folgendes herausgefunden :-D

* Das Problem tritt nur bei Programm Versionen auf die mit Delphi7 kompiliert wurden!
Ältere EXE Versionen die mit Delphi 5 kompiliert wurden sind nicht betroffen :?

* Wir liefern unsren Kunden schon seit langem dieselben kleinen HP-Compaq Rechner mit vorinstallierten Security suits etc.
Die älteren Chargen machten keine Probleme die neuen Kisten hängen!
(Ein Anruf bei HP brachte keine Klärung: Warteschleife... türkisch klingende Callcenter Dame...
Was wollen Sie kaufen :wall: War ja klar!)

Bei den betroffenen Systemen bringt auch die testweise Verwendung von

Delphi-Quellcode:
Application.NormalizeTopMosts; (Neu)
Messagedlg('... !!', mtInformation, [mbOk], 0);
Application.RestoreTopMosts; (Neu)
oder alternativ zu MessageDlg Windows MessageBoxen
Delphi-Quellcode:
Application.MessageBox()
... nichts :wall:

Das Problem lässt sich meist mit ALT + TAB lösen.... Aber das wissen die wenigsten Leute

himitsu 13. Dez 2007 14:25

Re: MessageDLG rutscht nach hinten!
 
MB_SYSTEMMODAL und MB_TOPMOST sind doch schon recht "radikal", aber ein Versuch ist es vielleicht doch wert?

Du könntest es ja erstmal mit MB_SETFOREGROUND versuchen:
Delphi-Quellcode:
Application.MessageBox('Text', 'Captiion', MB_OK or MB_SETFOREGROUND);
Dadurch sollte doch die MessageBox in den Vordergrund wandern?
Zitat:

Zitat von MSDN
The message box becomes the foreground window. Internally, the system calls the SetForegroundWindow function for the message box.

> MSDN-Library durchsuchenMessageBox


PS: MessageDlg ist so'n delphi-eigenes Ding,
also die VCL baut bei jedem neuem Aufruf ein neues Formular zusammen und verwaltet es selber ... und so einfach läßt sich dort nicht reinpfuschen um das Fenster vorzuholen.

gmc616 13. Dez 2007 17:09

Re: MessageDLG rutscht nach hinten!
 
Zitat:

Zitat von Loewentier
* Das Problem tritt nur bei Programm Versionen auf die mit Delphi7 kompiliert wurden!
Ältere EXE Versionen die mit Delphi 5 kompiliert wurden sind nicht betroffen :?

Was ist mit neueren Delphi-Versionen? Gibt es da Erkenntnisse?
Ich hab quasi das gleiche Problem mit Delphi 7, hab es aber bis jetzt immer auf meine eigene Dummheit geschoben.

Loewentier 13. Dez 2007 17:18

Re: MessageDLG rutscht nach hinten!
 
Also erstmal DANKE für die Antwort(en)!

Habe versucht mal den Flag SETFOREGROUND auszuprobieren...
Der ist aber scheinbar im Delphi 7 nicht definiert :oops:

Was scheinbar das Problem löst ist die Verwendung von
Delphi-Quellcode:
Application.MessageBox('Message', 'Information', MB_ICONINFORMATION or MB_OK or MB_SYSTEMMODAL);
Glaube das gab es hier schonmal :stupid:

=> GMC616
Konnte das ganze nicht unter Delphi2006 etc. verifizieren...
Bei meinen Entwicklungsrechnern hab ich ja das Problem sowieso nicht!

PS: Bei mir haben bisher die Delphi eigenen MessageDLG Boxen immer funktioniert...
Egal Ob W2K oder XP oder Vista! Wieso das jetzt aktuell Ärger macht ist mir schleierhaft :zwinker:

himitsu 13. Dez 2007 18:17

Re: MessageDLG rutscht nach hinten!
 
ups MB_SETFOREGROUND ... fehlte im Code etwas :oops:
und definiert ist es in der Unit Windows.

unter MSDN-Library durchsuchenMessageBox kannst du nochmal genau nachlesen was welcher Wert macht.

MB_SETFOREGROUND bringt nur das Fenster, kurz nachdem es erstellt wurde, in den Vordergrund,
wärend MB_SYSTEMMODAL dieses etwas anders (Systemweit) löst ... um MB_SETFOREGROUND nur dein Programm betrifft.

Loewentier 14. Dez 2007 16:32

Re: MessageDLG rutscht nach hinten!
 
Habe heute die Wirkung der verschiedenen Flags nochmal ausprobiert... :|
Der FLAG: MB_SETTFOREGROUND bringt bei den betroffen Systemen keine Änderung! (Die Message ist weiter verdeckt!)
Nur mit MB_SYSTEMMODAL kommt die Message nach vorne, liegt aber dann wie in der MSDN beschrieben, (modal) vor allem anderen was sonst noch so auf dem PC läuft!
Ich frage mich nach wie vor was sich bei den betroffenen PC'S im Windows geändert hat...
Wenn es die Auswirkung irgendeines neuen MS-Hotfixes ist, dann gibt das sicherlich noch eine Menge Ärger :gruebel:

DANKE nochmal für eure Antworten...

Luckie 14. Dez 2007 16:44

Re: MessageDLG rutscht nach hinten!
 
es gibt noch de Flag MB_APPLMODAL, Siehe MSDN dazu:
Zitat:

The user must respond to the message box before continuing work in the window identified by the hWnd parameter. However, the user can move to the windows of other threads and work in those windows.
Depending on the hierarchy of windows in the application, the user may be able to move to other windows within the thread. All child windows of the parent of the message box are automatically disabled, but pop-up windows are not.

MB_APPLMODAL is the default if neither MB_SYSTEMMODAL nor MB_TASKMODAL is specified.

whiteF 2. Jul 2016 15:34

AW: MessageDLG rutscht nach hinten!
 
hi, dieser thread ist zwar schon älter, aber ich bin heute auch auf das problem gestoßen das mein dialog hinter vielen anderen fenstern erschienen ist.
Bei mir liegt es höchstwahrscheinlich daran, dass meine mainform "gehided" ist und mein programm eigentlich nur aus einem trayicon besteht... d.h. es ist keine form sichtbar und nicht auf der taskleiste. höchstwahrscheinlich schaut dialog an welcher position die aufrufende form ist und setzt sich oben drauf ( position + 1 davor). bei mir wird sie jedoch nicht angezeigt.

ich habe das problem auch mit "MB_SETFOREGROUND or MB_SYSTEMMODAL" umgehen können.

VG

himitsu 4. Jul 2016 09:56

AW: MessageDLG rutscht nach hinten!
 
Ein "nicht aktives" Progamm macht sich nunmal standardmäßig nicht selber aktiv.

Das heißt, da dein Programm im Hintergrund liegt, macht Windows dessen Dialoge auch im Hintergrund auf.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:39 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