![]() |
Message erhalten während modaler Dialog offen
weiß nicht ob das Topic hier reingehört.... :gruebel:
Normalfall: Programm A hat zahlreche Fenster (nichtmodal) offen, mit Show angezeigt Programm B schickt ans Hauptformular von Programm A eine Message In A wird beim Empfangen dieser Message eine Reaktion auslöst, mehrere Fenster auf/zu etc. usw. Problemfall: In A hat der User ein modales Fenster offen (evtl. sogar mehrere, d.h. verschachtelt) A erhält nun die besagte Message Obige Reaktion mit Öffnen neuer Fenster (nichtmodal) -> Problem: die neu geöffneten Fenster sind quasi auch modal, d.h. sie müssen nach Schließen des ersten modalen Fensters auch erst geschlossen werden, bevor der User weitermachen kann. Meine Frage an die Gurus: kann ich beim Empfang einer Message feststellen, ob gerade ein Fenster (oder Dialog) modal geöffnet ist ? Dann könnte ich die Message einfach ignorieren. Roderich |
Re: Message erhalten während modaler Dialog offen
Setz doch eine boolean variable, wenn ein Button geklickt wird, um ein modales Fenster zu öffnen.
|
Re: Message erhalten während modaler Dialog offen
Oder nutze einfach diesen simple Code:
Delphi-Quellcode:
...:cat:...
procedure TForm1.Button1Click(Sender: TObject);
var I: Integer; begin for I := 0 to Pred(Screen.FormCount) do if fsModal in Screen.Forms[I].FormState then ShowMessage('modal form found'); end; |
Re: Message erhalten während modaler Dialog offen
@Luckie: geht schlecht, habe zu viele Möglichkeiten, was modales aufzumachen. Könnte ein Form sein (davon hab ich viele...), aber auch irgendein Dialog irgendwo (davon hab ich auch viele...).
@Sakura: hört sich an als wär das genau das Richtige. Weißt Du aus dem Kopf, ob Standard-Dialoge auch in Screen.Forms drin sind ? vielen Dank für die schnelle Antwort (wie immer... :dp:) Roderich |
Re: Message erhalten während modaler Dialog offen
Zitat:
...:cat:... |
Re: Message erhalten während modaler Dialog offen
schaut gut aus:
Zitat:
nochmals vielen Dank, hat mir sehr geholfen! Roderich |
Re: Message erhalten während modaler Dialog offen
Yepp, die letzten drei Worte klingen recht optimistisch.
...:cat:... |
Re: Message erhalten während modaler Dialog offen
Guten Morgen Roderich!
Hab eben versucht, Dein Szenario mit einem Timer(Message), einem OpenDialog und einer weiteren Form nachzuspielen. Also bei mir sieht das ganz nett aus. Wenn man einen kleinen Blick in die Unit Forms wirft und sich dort die Funktionen DisableTaskWindows und DoDisableWindow betrachtet, ist das eigentlich ganz schlüssig.
Delphi-Quellcode:
Wenn´s was bringt freut sich ...
procedure TForm1.Button1Click(Sender: TObject);
begin OpenDialog.Execute; end; procedure TForm1.Timer1Timer(Sender: TObject); begin If Not IsWindowEnabled(Self.handle) Then // Hier liegt der Hase im Pfeffer Label1.Caption:='Disabled'; end; procedure TForm1.Button2Click(Sender: TObject); begin form2.Showmodal; end; OLLI Ps.: Nicht die Property Enabled nutzen. Das ist nur "VCL Schnickschnack". |
Re: Message erhalten während modaler Dialog offen
danke Olli !
IsWindowEnabled hört sich laut API-Hilfe auch recht gut an, werd's testen (nicht im Moment, da mein Arbeits-Stack gerade am Überlaufen ist...). Danke + Gruß Roderich |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:44 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