Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   messagebox hinter modularen Fenstern (https://www.delphipraxis.net/179495-messagebox-hinter-modularen-fenstern.html)

stalkingwolf 11. Mär 2014 07:56

messagebox hinter modularen Fenstern
 
Guten Morgen zusammen.

Es kommt immer wieder einmal vor, das messagebox bei modularen Fenstern hinter diesem Fenster erscheinen.
Das Problem daran ist, dass der normale Benutzer damit ziemlich überfordert ist und immer der Meinung ist das Programm würde "hängen", da im aktiven Fenster keinerlei Eingaben mehr Möglich sind.
Da oft Fenster größer als die messagebox ist, sieht der Benutzer diesen Dialog auch nicht.
Mit ein wenig ALT+TAB erscheint die messagebox zwar, aber wie oben erwähnt für den Normalen Benutzer oft nicht nachvollziehbar.
Es kann sogar passieren, dass das vorherige Fenster Eingaben erlaubt, obwohl die messagebox modal sein sollte.

Das Phänomen haben wir seit Jahrne und in der Häufigkeit auch nur bei Delphi Applikationen gesehen.
Kennt ihr das Problem, oder habt sogar eine Lösung für das Problem?
Wir hatten teilweise sogar das Problem das die Druckerfenster von Windows selber im Hintergrund geöffnet wurden.
Es tritt auch auf jeder Windows Version auf. XP, 7, 2008 RC2 Server, 2013 Server ( Win 8 noch nicht intensiv getestet ).
Ein Schema habe ich bisher nicht erkannt.

LG
Sven

baumina 11. Mär 2014 07:59

AW: messagebox hinter modularen Fenstern
 
Zitat:

Zitat von stalkingwolf (Beitrag 1251482)
Kennt ihr das Problem, oder habt sogar eine Lösung für das Problem?

Ja, ich habe das Problem auch immer wieder aber leider keine Lösung dafür.

DeddyH 11. Mär 2014 08:15

AW: messagebox hinter modularen Fenstern
 
Vielleicht hilft es: http://www.detlef-heibing.de/program...und-holen.html

himitsu 11. Mär 2014 08:23

AW: messagebox hinter modularen Fenstern
 
Dann verwende eben keine direkte WinAPI-MSDN-Library durchsuchenMessageBox, sondern die Delphi-VCL-Varianten ala Delphi-Referenz durchsuchenShowMessage und Co.

Oder
Delphi-Quellcode:
  Application.MessageBox('Hallo', 'Titel');


Oder du versucht es z.B. so
Delphi-Quellcode:
  Application.NormalizeAllTopMosts;
  try
    MessageBox(Application.ActiveFormHandle, PChar('Hallo'), PChar('Titel'), MB_OK);
  finally
    Application.RestoreTopMosts
  end;
Oder man spielt mal mit Delphi-Referenz durchsuchenApplication.OnModalBegin und Delphi-Referenz durchsuchenApplication.OnModalEnd rum.

stalkingwolf 11. Mär 2014 08:27

AW: messagebox hinter modularen Fenstern
 
Das ist egal. Das passiert bei messagedlg, messagebox.
Showmessage fällt wohl raus, da man keine Abfragen damit abbilden kann.

Und ich will nicht spielen, wie haben eine produktives System. Ich will mir nicht immer einen Kopf machen müssen, wenn ich eine Frage dem Anwender stellen will.

Ich schau mir einmal das oben genannte Beispiel an.

baumina 11. Mär 2014 08:28

AW: messagebox hinter modularen Fenstern
 
Zitat:

Zitat von himitsu (Beitrag 1251487)
Dann verwende eben keine direkte WinAPI-MSDN-Library durchsuchenMessageBox, sondern die Delphi-VCL-Varianten ala Delphi-Referenz durchsuchenShowMessage und Co.

Bei mir passiert es mit VCL.Dialogs.MessageDlg

himitsu 11. Mär 2014 08:30

AW: messagebox hinter modularen Fenstern
 
Man könnte auch mal verraten um welche Delphi-Version es geht.

Denn irgendwo zwischen Delphi 7 und XE wurde die Behandlung der Fensterreihenvolge verändert.

baumina 11. Mär 2014 08:36

AW: messagebox hinter modularen Fenstern
 
Bei einem Delphi2007-Programm habe ich es definitiv. Bei meinen XE-Programmen fällt mir gerade kein Fall ein, evtl. wurde das da tatsächlich behoben.

himitsu 11. Mär 2014 09:23

AW: messagebox hinter modularen Fenstern
 
Bei den eigenen Kapselungen der VCL-Dialoge, ist bei uns ein NormalizeTopMost, bzw. NormalizeAllTopMosts drumrum. (ich weiß jetzt aber nicht ob das erst mit der Umstellunge auf XE rein kam, oder schon bei D7 so war)

Bei den Dialogen des Eurekalog, welche fast immer hinter anderen Fenstern fest hingen, wurde das über unter Anderem über OnModalBegin/OnModalEnd gelöst.
Was aber später dann Folgendes durch ersetzt wurde.
Delphi-Quellcode:
procedure THauptForm.EurekaLog1ExceptionActionNotify(EurekaExceptionRecord: TEurekaExceptionRecord; EurekaAction: TEurekaActionType; var Execute: Boolean);
begin
  if not (edoShowInTopMostMode in CurrentEurekaLogOptions.ExceptionDialogOptions) then
    CurrentEurekaLogOptions.ExceptionDialogOptions := CurrentEurekaLogOptions.ExceptionDialogOptions + [edoShowInTopMostMode];

 if EurekaAction = atShowingExceptionInfo then
   Application.NormalizeTopMosts;
 if EurekaAction = atShowedExceptionInfo then
   Application.RestoreTopMosts;
end;

samso 11. Mär 2014 13:10

AW: messagebox hinter modularen Fenstern
 
Ich habe dieses Problem bei Delphi 2007 bei eingeschaltetem Application.MainFormOnTaskbar nicht mehr beobachtet. Allerdings habe ich die Forms.pas modifiziert um diverse bekannte Bugs (aus der QC) zu beseitigen. Möglicherweise habe ich dabei auch dieses Problem beseitigt (ist jetzt auch schon etwas her). Wer diese modifizierte Version haben möchte, kann sich ja per pm bei mir melden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:16 Uhr.
Seite 1 von 2  1 2      

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-2025 by Thomas Breitkreuz