Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Verzögerung während Prozedur läuft.... (https://www.delphipraxis.net/155266-verzoegerung-waehrend-prozedur-laeuft.html)

litsa 15. Okt 2010 12:07

Delphi-Version: 2006

Verzögerung während Prozedur läuft....
 
Hallo,

ich habe ein Programm bei dem ich auf einen Button klicke, der so einiges startet/macht (es werden Dateien gelesen, Daten gesammelt, Tabellen gefüllt, neue Dateien geschrieben...). Das klappt auch alles ganz gut aber eine Kleinigkeit nicht:

Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
begin

  Label1.Caption := 'Daten werden geladen...'; //Das hier will nicht...
  ComboChange;
  WerteEinlesen;

end;
Ich hatte das Label1 vorher in WerteEinlesen ganz am Anfang und da der Text nicht erschien habe ich es rausgenommen aber der Text wird immer noch nicht angezeigt (nur zur Info: wenn ich die beiden procedures weglasse erscheint der Text). Außerdem wird der Text auch nirgendwo im Code auf '' gesetzt. In WerteEinlesen habe ich eine ProgressBar die ganz normal den Fortschritt zeigt, wollte halt noch einen Text dadrunter packen. Kann ich mir den Text trotzdem irgendwie anzeigen lassen?

Danke, Eva

Tonic1024 15. Okt 2010 12:09

AW: Verzögerung während Prozedur läuft....
 
Hi...

Mach vor ComboChange mal ein
Delphi-Quellcode:
Application.Processmessages;
rein.

Gruß,

Toni

DeddyH 15. Okt 2010 12:10

AW: Verzögerung während Prozedur läuft....
 
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
begin

  Label1.Caption := 'Daten werden geladen...'; //Das hier will nicht...
  Application.ProcessMessages; //das hier einfügen
  ComboChange;
  WerteEinlesen;

end;

himitsu 15. Okt 2010 12:11

AW: Verzögerung während Prozedur läuft....
 
Wenn der Text vom Label geändert wird, dann wird nur eine "zeichne dich bitte mal neu"-Message an dein Label/Programm gesendet.
Und ohne eine Verarbeitung dieser Nachricht wird nichst gezeichnet.

Delphi-Quellcode:
  Label1.Caption := 'Daten werden geladen...';
  ComboChange;
  Application.ProcessMessages; <<< Nachrichten verarbeiten
  WerteEinlesen;
[edit]
da war zwar wer schneller, aber egal :angle2:
ich würde sowieso noch die Änderungen an der ComboBox abwarten, bevor ich zeichnen lasse, jedenfalls wenn das ComboChange nicht zu lange dauert.

litsa 15. Okt 2010 12:15

AW: Verzögerung während Prozedur läuft....
 
Ok, beides hat geklappt!

Vielen Dank, Eva

Luckie 15. Okt 2010 12:25

AW: Verzögerung während Prozedur läuft....
 
Warum eigentlich immer gleich die Holzhammermethode? Reicht nicht auch die Methode Repaint oder Refresh?

Sir Rufo 15. Okt 2010 12:27

AW: Verzögerung während Prozedur läuft....
 
Wobei man sagen sollte, dass so ein "langwieriger" Teil besser in einem Thread aufgehoben ist.


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