AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi MessageDlg lässt keine Nachrichtenverarbeitung zu
Thema durchsuchen
Ansicht
Themen-Optionen

MessageDlg lässt keine Nachrichtenverarbeitung zu

Ein Thema von PeterPanino · begonnen am 24. Jul 2006 · letzter Beitrag vom 26. Jul 2006
Antwort Antwort
Seite 1 von 2  1 2      
PeterPanino

Registriert seit: 4. Sep 2004
1.451 Beiträge
 
Delphi 10.4 Sydney
 
#1

MessageDlg lässt keine Nachrichtenverarbeitung zu

  Alt 24. Jul 2006, 19:26
Hallo,

ich habe einen MessageDialog mit einem Hilfe-Button:

MessageDlg('MessageDlg HelpContext', mtInformation, [mbOK, mbHelp], 1000);

Während zur Programm-Laufzeit dieser Dialog angezeigt wird und der Dialog auf die Betätigung des OK-Buttons wartet, kann das Programm offensichtlich keine Nachrichten verarbeiten, denn: Wenn ich auf den Hilfe-Button klicke, wird das Hilfe-Fenster angezeigt; sobald das Hilfe-Fenster dann geschlossen wird, bleibt das Abbild des Hilfe-Fenster aber auf dem Programmfenster erhalten, weil das Programm seine Oberfläche nicht neu zeichnet, weil es ja auf die Rückkehr des Message-Dialogs wartet.

Wie kann man nun erreichen, dass das Programm Nachrichten verarbeitet und seine Oberfläche neu zeichnet, während es auf die Rückkehr des Message-Dialoges wartet? Kann man da irgendwie ein Application.ProcessMessages einbauen, das im Hintergrund die Nachrichten verarbeitet?

Vielen Dank schon mal im Voraus!
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: MessageDlg lässt keine Nachrichtenverarbeitung zu

  Alt 24. Jul 2006, 23:36
Moin Peter,

Zitat von PeterPanino:
sobald das Hilfe-Fenster dann geschlossen wird, bleibt das Abbild des Hilfe-Fenster aber auf dem Programmfenster erhalten, weil das Programm seine Oberfläche nicht neu zeichnet,


da frage ich mich, wie Du das hinbekommen hast...
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.451 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: MessageDlg lässt keine Nachrichtenverarbeitung zu

  Alt 25. Jul 2006, 03:00
Zitat von Christian Seehase:
Moin Peter,



da frage ich mich, wie Du das hinbekommen hast...
so wie ich es beschrieben habe. Was ist daran so ungewöhnlich?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: MessageDlg lässt keine Nachrichtenverarbeitung zu

  Alt 25. Jul 2006, 05:27
Bastel die nen eigenen MessageDialog.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von sh17
sh17

Registriert seit: 26. Okt 2005
Ort: Radebeul
1.594 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: MessageDlg lässt keine Nachrichtenverarbeitung zu

  Alt 25. Jul 2006, 07:26
Der MessageDialog verhält sich wie jeder andere modale Dialog. Die Anwendung wartet bis zur Beendigung des Dialoges.

Man müsste den Dialog in einen Thread auslagern, wobei man da bestimmt noch einige Synchronisationssachen beachten müsste (schätz ich mal).

Allerdings erschließt sich mir der Sinn eines asynchronen modalen Dialoges aus Benutzersicht nicht. Ich würde da eher zu so was wie einem DesktopAlert tendieren. ALso einem popup-Infofenster, was nach gegebener Zeit wieder verschwindet.
Sven Harazim
--
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: MessageDlg lässt keine Nachrichtenverarbeitung zu

  Alt 25. Jul 2006, 08:56
Moin Peter,

Zitat von PeterPanino:
so wie ich es beschrieben habe. Was ist daran so ungewöhnlich?
ich musste bislang nicht in die Trickkiste greifen, damit sich das Hauptfenster zu einer Message neu zeichnet.
Mit einem D2006 Programm habe ich das jetzt nicht explizit ausprobiert, kann mir aber nicht vorstellen, dass es da anders aussieht.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von sh17
sh17

Registriert seit: 26. Okt 2005
Ort: Radebeul
1.594 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: MessageDlg lässt keine Nachrichtenverarbeitung zu

  Alt 25. Jul 2006, 11:59
vieleicht stellt er eine Komponente vor dem Dialog auf BeginUpdate o.ä.
Sven Harazim
--
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.145 Beiträge
 
Delphi 12 Athens
 
#8

Re: MessageDlg lässt keine Nachrichtenverarbeitung zu

  Alt 25. Jul 2006, 14:23
Da du 'ne Pro hast, kann ich dir nur mal 'nen Tipp geben ... schau dir mal an, wie das Borland in seinen Dialogen macht.

also mal ShowModal (von TForm) reinschauen ... eventuell war's auch in einer darin aufgerufenen Funktionen, oder in einer die dann da aufgerufen wurde, oder ... na ja, jedenfalls irgendwo darin findest du eine nette Nachrichtenschleife, welche das Programm sozusagen am Leben erhält, solange deer Dialog aktiv ist ^^
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.451 Beiträge
 
Delphi 10.4 Sydney
 
#9

Re: MessageDlg lässt keine Nachrichtenverarbeitung zu

  Alt 25. Jul 2006, 20:29
Zitat von sh17:
vieleicht stellt er eine Komponente vor dem Dialog auf BeginUpdate o.ä.
Das war's! Das muss wohl die Sommerhitze sein ...!

Vielen Dank jedenfalls für eure Hilfsbereitschaft!

Tut mir leid, dass ich euch deswegen auf Trab gebracht habe - dafür spendier' ich jedem ein virtuelles Bier!

---

Apropos, hat das eigentlich einen Nebeneffekt, wenn nach einem BeginUpdate möglicherweise 2 mal EndUpdate aufgerufen wird? (Oder wenn nach einem 2-maligen BeginUpdate nur 1 mal EndUpdate aufgerufen wird?)
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: MessageDlg lässt keine Nachrichtenverarbeitung zu

  Alt 25. Jul 2006, 21:41
Moin Peter,

wenn ich mir die Sourcen so ansehe:
Die Items werden erst aktualisiert, wenn FUpdateCount = 0 ist.
Bei BeginUpdate wird der Zähler um eins erhöht, bei EndUpdate um eins verringert.

Da kannst Du Dir ausrechnen, was passiert, wenn die Anzahl nicht stimmt.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  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 12:01 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