Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Während Prozedur noch läuft, Daten eintragen lassen (https://www.delphipraxis.net/165131-waehrend-prozedur-noch-laeuft-daten-eintragen-lassen.html)

michael.funcke 15. Dez 2011 16:37

Während Prozedur noch läuft, Daten eintragen lassen
 
Hallo, :)

mein Programm durchläuft einen großen Loop immer und immer wieder. Darin schreibt er öfters neue Daten in die .Text-Eigenschaft von TEdit-Feldern.

Wenn ich das Programm jetzt kompiliere und den Loop durch einen Button-Click starte, bleibt der Button eingedrückt (was ja heißt, dass er die Prozedur noch ausführt, oder?) und die Anfangswerte für .Text der Editfelder bleiben stehen, obwohl er sie eigentlich die ganze Zeit ändert.

Kann es sein, dass das daran liegt, dass die Prozedur noch nicht zuende gelaufen ist und er die UI erst auf die endgültigen Werte "updated", wenn die Prozedur komplett durchgelaufen ist?
Wie kann ich es hinkriegen, dass er mir jedes Mal, wenn er den Text ändert, dies auch sofort auf der UI sichtbar macht?

Danke, ihr schlauen Delphi-Cracks da draußen!! :D

Liebe Grüße

Micha

Klaus01 15. Dez 2011 16:41

AW: Während Prozedur noch läuft, Daten eintragen lassen
 
Hallo,

Du könntest in der Schleife alle 100 Durchgänge ein
application.processMessages einbauen.

Oder alles auf Threads umstellen.

Grüße
Klaus

michael.funcke 15. Dez 2011 16:48

AW: Während Prozedur noch läuft, Daten eintragen lassen
 
TOP!!!

application.processMessages funktioniert einwandfrei! Dankeschön!

Frohe Weihnachten dir! :thumb:

SirThornberry 15. Dez 2011 16:52

AW: Während Prozedur noch läuft, Daten eintragen lassen
 
Bedenke das durch Application.Processmessages nicht nur die Nachrichten für das Zeichnen verarbeitet werden sondern auch ButtonClicks abgearbeitet werden. In deinem Fall kann es also passieren das jemand nochmal auf den Button klickt während der Code im Buttonclick noch ausgeführt wird.
Ebenso kann es sein das jemand das Programm schließen will. Du solltest also sicherstellen das nicht irgendwelche ButtonClicks ausgeführt werden während in dem Buttonclick etwas passiert und du solltest im besten Fall in deiner Schleife im Buttonclick prüfen ob die Anwendung beendet werden soll und entsprechend die Schleife abgebrochen werden soll.

michael.funcke 15. Dez 2011 16:55

AW: Während Prozedur noch läuft, Daten eintragen lassen
 
Zitat:

Bedenke das durch Application.Processmessages nicht nur die Nachrichten für das Zeichnen verarbeitet werden sondern auch ButtonClicks abgearbeitet werden.
Ist kein Problem! Der Button wird disabled, sobald auf ihn geklickt wird. Aber danke für den Hinweis!


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