Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi procedure läuft, und ide buttons sind "tot" (https://www.delphipraxis.net/18781-procedure-laeuft-und-ide-buttons-sind-tot.html)

glkgereon 24. Mär 2004 15:56


procedure läuft, und ide buttons sind "tot"
 
also, wenn ich nen button drücke, und der macht dann was zb bei ner gauge den progress immer um 1 hoch, dazwischen immer 5 msek pause, sind in zeit die buttons tot, das wird zwar erkann, aber die procedure wird nicht ausgeführt! wie umgeh ich das???
hier der code:
Delphi-Quellcode:
 
repeat
gauge1.progress:=gauge1.progress+1;
sleep(5);
until gauge1.progress=100;

rebugger 24. Mär 2004 15:58

Re: procedure läuft, und ide buttons sind "tot"
 
sleep() ist Schwachsinn.
Mach das mit einem Timer mit bestimmten Intervall.

fkerber 24. Mär 2004 16:06

Re: procedure läuft, und ide buttons sind "tot"
 
Hi!

Sleep friert die gesamte anwendung ein

--> DelayDelay

Ciao fkerber

glkgereon 24. Mär 2004 18:37

Re: procedure läuft, und ide buttons sind "tot"
 
delay will der irgendwie nicht, hat mich auch gewundert :gruebel:
mit dem timer hab ich bisher noch nicht kapiert...
kannst du maln beispiel posten?

fkerber 24. Mär 2004 18:42

Re: procedure läuft, und ide buttons sind "tot"
 
Hi!

Warum geht den Delay nicht?
Was geht denn nicht?

Ciao fkerber

rebugger 24. Mär 2004 18:45

Re: procedure läuft, und ide buttons sind "tot"
 
Timer-Beispiel:
1. Setz nen Timer auf die Form.
2. Intervall wird in Millisekunden angegeben.
3. Active auf False setzen
4. onTimer-Event:
Delphi-Quellcode:
begin
  if Gauge1.Position = 100 then
    Timer1.Enabled := False
  else
  begin
    Gauge1.Position := Gauge1.Position + 1; //War doch Position, oder ??? Oder wars Value ?
  end;
end;
5. einen Button setzen, in dessen onClick-Event du schreibst:
Timer1.Enabled := True;

Thats it !

---Bernhard--- 24. Mär 2004 19:15

Re: procedure läuft, und ide buttons sind "tot"
 
Zitat:

Zitat von rebugger
Delphi-Quellcode:
begin
  if Gauge1.Position = 100 then
    Timer1.Enabled := False
  else
  begin
    Gauge1.Position := Gauge1.Position + 1; //War doch Position, oder ??? Oder wars Value ?   <--
  end;
end;

Nein, Progress ! :lol: :wink:

Zum Thema kann ich leider nicht viel sagen... :roll:

himitsu 24. Mär 2004 20:53

Re: procedure läuft, und ide buttons sind "tot"
 
Und nun noch was zum eigentlichen Problem.

solange eine Prozeedur/Funktion läuft, dann ist natürlich das Programm gestoppt - das ist nun mal so, wenn alles nur in einem Thread abläuft, da kann halt nur einwas gemacht werden.

Also wenn du unbedingt so arbeiten willst, dann solltest du unbedingt dem Hauptthread mal ab und zu die Kontrolle geben.

Code:
[b]Repeat[/b]
  Gauge1.Progress := Gauge1.Progress + 1;
  [color=red]Application.ProcessMessages;[/color]
  Sleep(5);
[b]Until[/b] Gauge1.Progress = 100;

Luckie 25. Mär 2004 19:28

Re: procedure läuft, und ide buttons sind "tot"
 
Zitat:

Zitat von himitsu
Also wenn du unbedingt so arbeiten willst, dann solltest du unbedingt dem Hauptthread mal ab und zu die Kontrolle geben.

Nicht ganz Koreskt, die Schleife liegt ja auch im Hauptthread und hat somit auch die Kontrolle. Richtiger wäre zu sagen, "den Hauptthread mal die Nachrichten-Schlage von Windows für das assozierte Fenster abzufragen und ab zu arbeiten".


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