Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Warte-Fenster anzeigen (https://www.delphipraxis.net/89340-warte-fenster-anzeigen.html)

BillieJoe90 29. Mär 2007 18:41


Warte-Fenster anzeigen
 
Hallo,
ich würde gerne, während mein Programm etwas macht, dem Benutzer ein kleines Wartefenster anzeigen, wenn es etwas länger dauert. Meine Idee war folgende:

Delphi-Quellcode:
procedure SoUndSo;
begin
  pleaseWait.showAdvice('CD-Laufwerke werden überprüft...');
  refreshDrives;
  pleaseWait.hideAdvice;
end;
Delphi-Quellcode:
procedure TpleaseWait.showAdvice(advice:String);
begin
  lblAdvice.Caption := advice;
  self.Position := poMainFormCenter;
  MainForm.Enabled := false;
  self.show;
end;

procedure TpleaseWait.hideAdvice;
begin
  MainForm.Enabled := true;
  self.hide;
end;
Das funktioniert aber nicht... Das Fenster bekommt man gar nicht zu sehen, auch wenn das Programm einige Sekunden mit refreshDrives beschäftigt ist.

Wie kann ich das Wartefenster so lange an zeigen lassen, wie das Programm für refreshDrives braucht?

Danke schonmal!

Johannes

Matze 29. Mär 2007 18:44

Re: Warte-Fenster anzeigen
 
Hi,

evtl. kannst du irgendwo ein Delphi-Referenz durchsuchenApplication.ProcessMessages einbauen, doch ich würde dir empfehlen, das Einlesen der Laufwerke in einen Thread auszulagern.

BillieJoe90 29. Mär 2007 18:51

Re: Warte-Fenster anzeigen
 
Zitat:

Zitat von Matze
doch ich würde dir empfehlen, das Einlesen der Laufwerke in einen Thread auszulagern.

Und dann wäre das möglich?

igel457 29. Mär 2007 18:54

Re: Warte-Fenster anzeigen
 
Ich denke, das folgendes...
Delphi-Quellcode:
procedure TpleaseWait.showAdvice(advice:String);
begin
  lblAdvice.Caption := advice;
  self.Position := poMainFormCenter;
  MainForm.Enabled := false;
  self.show;
  Application.ProccesMessages;
end;
schon reicht...

BillieJoe90 29. Mär 2007 21:16

Re: Warte-Fenster anzeigen
 
Ja, es klappt!
Danke! :)

BillieJoe90 29. Mär 2007 21:31

Re: Warte-Fenster anzeigen
 
Eine Frage hätte ich allerdings noch:
Währenddessen können keine anderen Befehle "gewollt" ausgeführt werden, oder? In pleaseWait befindet sich nämlich ein Timer, der etwas machen soll... :?

Matze 30. Mär 2007 05:34

Re: Warte-Fenster anzeigen
 
Hi,

es kommt darauf an, wie deine Funktion zum Aktualisieren der Laufwerke ausschaut. Falls das eine Schleife ist, würde ich dort ebenfalls, wie ich oben genannt habe, ProcessMessages ausfüren, bzw. versuchen, ob's dann klappt. Aber wenn das Aktualisieren lang dauert, würde ich wirklich einen Thread nutzen, dann läuft die Sache eigenständig im Hintergrund ab.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:32 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