AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

MessageBox/Dlg per Programm schließen

Ein Thema von Kraisel · begonnen am 10. Mär 2014 · letzter Beitrag vom 13. Mär 2014
Antwort Antwort
Benutzerbild von Kraisel
Kraisel

Registriert seit: 19. Mär 2012
Ort: Bochum-Linden
64 Beiträge
 
Delphi 12 Athens
 
#1

AW: MessageBox/Dlg per Programm schließen

  Alt 10. Mär 2014, 18:58
Danke himitsu, danke sirius,

nein, nein, ich benötige MessageBox und MessageDlg denn:

MessageBox: ist länderspezifisch (also Yes anstatt ja usw.) und es kann in DLLs und bereits in initialization von Units genutzt werden, wenn alles andere noch gar nicht intitialisiert ist.
MessageDlg: ist eine normale Form, die mit CreateMessageDialog generiert wird. Aber von außen kommt man nicht heran, bzw. ich habe es nicht gefunden.

Das Ganze ist notwendig, wenn eine Meldung dazu führen soll, dass ein Mitarbeiter zwingend manuell z.B. einen Knopf im Schaltschrank drücken muss. Wenn dieser Knopf dann gedrückt ist, sollte die Meldung vom Schirm verschwinden.

Aber ich wiederhole: SendMessage(Application.ActiveFormHandle, WM_CLOSE, 0, 0) funktioniert einwandfrei. Ich möchte aber aus diversen Gründen die Fenster direkt und ohne MessageQueue schließen.

Ich habe hier im Forum keine Hinweise, die mich weiterbringen, gefunden.

Vielen Dank.
Peter Kaisler
Das einzig Komplizierte ist zu begreifen wie einfach es ist.
  Mit Zitat antworten Zitat
Rul

Registriert seit: 13. Mär 2014
10 Beiträge
 
#2

AW: MessageBox/Dlg per Programm schließen

  Alt 13. Mär 2014, 18:50
Aber ich wiederhole: SendMessage(Application.ActiveFormHandle, WM_CLOSE, 0, 0) funktioniert einwandfrei.
Ich möchte aber aus diversen Gründen die Fenster direkt und ohne MessageQueue schließen.
Die Applikation?

SendMessage(Applicatiom.Handle, WM_CLOSE, 0, 0);

oder nur das Meldungsfenster aus der Applikation?

Rul
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.824 Beiträge
 
Delphi 12 Athens
 
#3

AW: MessageBox/Dlg per Programm schließen

  Alt 13. Mär 2014, 19:03
Ich möchte aber aus diversen Gründen die Fenster direkt und ohne MessageQueue schließen.
Alles was du in einer Single-Thread-Anwendung machst, ist am Ende das Abarbeiten von Nachrichten aus der MessageQueue.

Je nachdem welcher Dialog intern aufgerufen wird, hast du gar keine andere Wahl als eine Message an das Fenster zu senden. So wird z.B. bei Verwendung der alten Dialoge der Aufruf von MessageDlg in einem ShowModal landen - genauer in einer solchen Schleife:

Delphi-Quellcode:
        repeat
          Application.HandleMessage;
          if Application.Terminated then ModalResult := mrCancel else
            if ModalResult <> 0 then CloseModal;
        until ModalResult <> 0;
Du kannst allenfalls der Form-Instanz einen passenden ModalResult mitgeben. Allerdings wird das nichts, wenn die neuen Vista-und-höher-Dialoge aufgerufen werden - da gibt es keine Form-Instanz. Die MessageQueue ist hier die einzig sinnvolle Möglichkeit.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 11:19 Uhr.
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