![]() |
modales Fenster ohne Benutzerakt. selbst schliessen lassen
Hallo ich stehe vor folgendem Problem:
Ich zeige ein Bitte warten Form an.
Delphi-Quellcode:
Jetzt muss ich das Formular sich selbst nach einiger Zeit selbst schliessen lassen, aber wo packe ich dass
aSCIAuswahl:=TSCIAuswahlGUI.Create(self);
modalresult:=aSCIAuswahl.ShowModal;
Delphi-Quellcode:
hin??
Self.ModalResult:=mrOK;
Im FormCreate bewirkt es nicht, dass was es soll.. (es bleibt offen). Danke schonmal Gruß DelphiManiac |
Re: modales Fenster ohne Benutzerakt. selbst schliessen lass
Hallo,
das Warten ist ja wohl kein Selbstzweck. Also schließt du die Form nicht im FormCreate() sondern nach Beendigung deiner Arbeit. Grüße vom marabu |
Re: modales Fenster ohne Benutzerakt. selbst schliessen lass
@marabu
Ja ich warte in meinem Fenster auf eine Antwort der Schnittstelle. Aber wo packe ich das Warten auf meine Antwort hin? Angenommen (so wie es zZ. ist, ich packe es ins FormCreate) dann kann ich es ja nicht sich selbst schliessen lassen... Vielleicht hast du eine Idee? |
Re: modales Fenster ohne Benutzerakt. selbst schliessen lass
Hallo!
Ich mache es so: Das "Bitte-Warten-Fenster" mit .Show starten, das Anwendungsfenster auf .enabled:= false setzten. Dann den Prozess im Hauptfenster vornehmen. Während dieser Abarbeitung kannst du auf diese Weise auch den aktuellen Fortschritt über eine Progressbar ausgeben. Schließlich das Extra-Fenster mit .Close schließen. das Hauptfenster dann auf .enabled:= true setzen. Gruß Pfoto |
Re: modales Fenster ohne Benutzerakt. selbst schliessen lass
Hallo,
im FormActivate ein Application.ProcessMessages und nach Abchluss der Arbeiten dort PostMessage(Handle, WM_CLOSE, 0, 0); Heiko |
Re: modales Fenster ohne Benutzerakt. selbst schliessen lass
Na, wie bekommst du denn mit, ob deine Schnittstelle geantwortet hat?
|
Re: modales Fenster ohne Benutzerakt. selbst schliessen lass
Indem ich in meinem Fenster 'Bitte warten' anzeige
und beim Empfang von 25 Bytes (das überpüfen mache ich in einer Schleife (ja ich weiss pollen ist unschön... :? ) aus meiner Überprüfungsschleife rausspringe.. Es soll dann das Fenster durch 2 Situationen geschlossen werden. 1. 25 Byte sind da (raus aus der blöden Schleife) =>ModalResult:=mrOK; 2. Der Benutzer klickt abbrechen => ModalResult:=mrCancel; |
Re: modales Fenster ohne Benutzerakt. selbst schliessen lass
Und genau da kannst du es doch auch hinschreiben.
(manchmal gibt es zum Pollen keine Alternative) |
Re: modales Fenster ohne Benutzerakt. selbst schliessen lass
Hi, ersteinmal ein Riesen Dank, dass ihr so zeitnah antwortet :-D
Ich habe das auch gemacht und poste meiner Form die WM_Close Nachricht, dannach schliesst es, so wollte ich das auch, aber mein Button Abbrechen funktioniert dann nicht, zurzeit habe ich es so:
Delphi-Quellcode:
procedure TWaitForLoaderGUI.FormActivate(Sender: TObject);
begin while (aSCI.GetQBytes <> 25) do begin Application.ProcessMessages; Sleep(1); if Self.ModalResult <> mrNone then exit; if Application.Terminated then exit; end; Self.ModalResult:=mrOk; PostMessage(Self.Handle, WM_CLOSE, 0, 0); end; procedure TWaitForLoaderGUI.BitBtn1Click(Sender: TObject); begin Self.ModalResult:=mrCancel; // Hier soll er das Form schliessen... end; |
Re: modales Fenster ohne Benutzerakt. selbst schliessen lass
Hallo,
setzte im OnButtonClick eine Form-Variable (bUserCancel), die wird im FormCreate auf False gesetzt, und checke die in deiner Schleife zusätzlich mit. Heiko |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:15 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