AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi modales Fenster ohne Benutzerakt. selbst schliessen lassen
Thema durchsuchen
Ansicht
Themen-Optionen

modales Fenster ohne Benutzerakt. selbst schliessen lassen

Ein Thema von DelphiManiac · begonnen am 22. Jan 2007 · letzter Beitrag vom 22. Jan 2007
Antwort Antwort
Seite 1 von 2  1 2      
DelphiManiac

Registriert seit: 5. Dez 2005
742 Beiträge
 
#1

modales Fenster ohne Benutzerakt. selbst schliessen lassen

  Alt 22. Jan 2007, 13:27
Hallo ich stehe vor folgendem Problem:

Ich zeige ein Bitte warten Form an.

Delphi-Quellcode:
  aSCIAuswahl:=TSCIAuswahlGUI.Create(self);
  modalresult:=aSCIAuswahl.ShowModal;
Jetzt muss ich das Formular sich selbst nach einiger Zeit selbst schliessen lassen, aber wo packe ich dass
Self.ModalResult:=mrOK; hin??
Im FormCreate bewirkt es nicht, dass was es soll.. (es bleibt offen).

Danke schonmal
Gruß DelphiManiac
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: modales Fenster ohne Benutzerakt. selbst schliessen lass

  Alt 22. Jan 2007, 13:30
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
  Mit Zitat antworten Zitat
DelphiManiac

Registriert seit: 5. Dez 2005
742 Beiträge
 
#3

Re: modales Fenster ohne Benutzerakt. selbst schliessen lass

  Alt 22. Jan 2007, 13:33
@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?
  Mit Zitat antworten Zitat
Pfoto

Registriert seit: 26. Aug 2005
Ort: Daun
541 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: modales Fenster ohne Benutzerakt. selbst schliessen lass

  Alt 22. Jan 2007, 13:33
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
Jürgen Höfs
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: modales Fenster ohne Benutzerakt. selbst schliessen lass

  Alt 22. Jan 2007, 13:35
Hallo,

im FormActivate ein

Application.ProcessMessages

und nach Abchluss der Arbeiten dort

PostMessage(Handle, WM_CLOSE, 0, 0);


Heiko
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: modales Fenster ohne Benutzerakt. selbst schliessen lass

  Alt 22. Jan 2007, 13:39
Na, wie bekommst du denn mit, ob deine Schnittstelle geantwortet hat?
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
DelphiManiac

Registriert seit: 5. Dez 2005
742 Beiträge
 
#7

Re: modales Fenster ohne Benutzerakt. selbst schliessen lass

  Alt 22. Jan 2007, 13:45
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;
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: modales Fenster ohne Benutzerakt. selbst schliessen lass

  Alt 22. Jan 2007, 13:48
Und genau da kannst du es doch auch hinschreiben.

(manchmal gibt es zum Pollen keine Alternative)
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
DelphiManiac

Registriert seit: 5. Dez 2005
742 Beiträge
 
#9

Re: modales Fenster ohne Benutzerakt. selbst schliessen lass

  Alt 22. Jan 2007, 13:52
Hi, ersteinmal ein Riesen Dank, dass ihr so zeitnah antwortet

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;
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#10

Re: modales Fenster ohne Benutzerakt. selbst schliessen lass

  Alt 22. Jan 2007, 14:14
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
Heiko
  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 05:45 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