AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Edit-Felder bei jedem Schleifendurchlauf aktualisieren
Thema durchsuchen
Ansicht
Themen-Optionen

Edit-Felder bei jedem Schleifendurchlauf aktualisieren

Ein Thema von johny · begonnen am 15. Sep 2003 · letzter Beitrag vom 2. Feb 2004
Antwort Antwort
johny

Registriert seit: 12. Aug 2003
Ort: Koblenz
32 Beiträge
 
#1

Edit-Felder bei jedem Schleifendurchlauf aktualisieren

  Alt 15. Sep 2003, 14:30
Hallo,

vielleicht kann mir hier jemand weiterhelfen. Ich habe ein Problem mit Schleifen mal zu folgendem Beispiel vereinfacht:

Auf einer Form sind
- ein Button
- zwei Edit-Felder
- ein GaugeBar

Klickt man auf den Button, werden die Schleifen ausgeführt und in den Edit-Felder sollen die Variablen iCount1 und iCount2 angezeigt werden.
Desweiteren wird der Wert der while-Schleife noch durch ein GaugeBar angezeigt.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
 iCount1 : integer; // Counter für die for-Schleife
 iCount2 : integer; // Counter für die while-Schleife
begin
 iCount2 := 0;
 for iCount1 := 0 to 10 do
 begin
 Edit2.Text := IntToStr(iCount1); // Zahl der for-Schleife in Edit2 anzeigen
  while iCount2 < 5 do
  begin
   Edit1.Text := IntToStr(iCount2); // Zahl der while-Schleife in Edit1 anzeigen
   Gauge1.Progress := iCount2; // Gleichzeitig durch Gauge visualisieren
   iCount2 := iCount2+1; // Counter erhöhen
   sleep(250); // Warten, so dass man auch was sieht ;)
  end;
 end;
end;
Der GaugeBar wird bei jedem Schleifendurchlauf aktualisiert, so dass der Balken richtig angezeigt wird, sich also ständig erhöht. Die Einträge der Edit -Felder werden aber erst dann angezeigt, wenn alle Schleifen fertig durchlaufen sind, so dass zum Zeitpunkt des Durchlaufs nichts angezeigt wird, dann erscheint die letzte Zahl.

Ist es möglich, die aktuellen Werte der Edit-Felder sofort anzuzeigen, so dass in diesen hochgezählt wird?
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Edit-Felder bei jedem Schleifendurchlauf aktualisieren

  Alt 15. Sep 2003, 14:37
Setz in die inner Schleife mal ein Application.processmessages. Du mußt deinem Fenster auch die Chance geben sich zu aktualisieren.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Nalincah
Nalincah

Registriert seit: 18. Jul 2003
898 Beiträge
 
Delphi 6 Professional
 
#3

Re: Edit-Felder bei jedem Schleifendurchlauf aktualisieren

  Alt 15. Sep 2003, 14:37
Probiers mal mit

Application.ProcessMessages
Sebastian
Ehemals bekannt als General2004
  Mit Zitat antworten Zitat
roderich
(Gast)

n/a Beiträge
 
#4

Re: Edit-Felder bei jedem Schleifendurchlauf aktualisieren

  Alt 15. Sep 2003, 14:54
Ich würde nicht Application.ProcessMessages verwenden, wenn es auch anders geht. Schließlich wird jede Benutzer-Interaktion (z.B. Alt+F4) bei einem ProcessMessages verarbeitet, was Dein Programm total durcheinanderbringen kann.

Was spricht stattdessen gegen ein simples Edit.Repaint ?

Roderich
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Edit-Felder bei jedem Schleifendurchlauf aktualisieren

  Alt 15. Sep 2003, 14:59
Ich schon. Wenn das Fenster zwischenzeitlich überdenkt wird, werden nur die Edits neugezeichnet, verschieben und so weiter läßt es sich mit deiner Methode auch nicht mehr. Spielt allerdings nur eine Rolle, wenn die Schleife länger braucht. Das mit den Benutzereingaben muß er eben entsprechend verhindern.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
johny

Registriert seit: 12. Aug 2003
Ort: Koblenz
32 Beiträge
 
#6

Re: Edit-Felder bei jedem Schleifendurchlauf aktualisieren

  Alt 15. Sep 2003, 15:28
Klasse, Application.ProcessMessages und Edit.Repaint funktionieren wunderbar. Jetzt muss ich nur noch schauen, was besser geeignet ist. Die Vor- und Nachteile habt ihr ja schon angesprochen.

Vielen Dank, für die Hilfe!
  Mit Zitat antworten Zitat
Schwedenbitter

Registriert seit: 22. Mär 2003
Ort: Finsterwalde
622 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Edit-Felder bei jedem Schleifendurchlauf aktualisieren

  Alt 2. Feb 2004, 09:53
Soweit klar!
Die Frage, welche sich mir jetzt stellt ist aber noch:
Wie kann man es erreichen, daß die Aktualisierung auch von statten geht, während das Fenster verschoben wird oder man während bzw. nach dem Verschieben noch die Maustaste gedrückt hält.
Bei mir ist es bislang so, daß zwar das Fenster schön aktualisiert wird, aber während der Verschiebens usw. eben nicht mehr.
Alex Winzer
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Edit-Felder bei jedem Schleifendurchlauf aktualisieren

  Alt 2. Feb 2004, 10:54
Logisch. Dein Programm kann auch nur wie du eine Sache auf einmal machen. Und wärend du verschiebst, kann es eben die Schleife nicht weiter ausführen, weil ja wegen Application.Processmessages alle Nachrchiten verabreitet werden. Willst du dein gewünschtes Verhalten erreichen, musst du die Schleife in einen Thread packen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort


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 06:02 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