Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Procressbar zählen (https://www.delphipraxis.net/39874-procressbar-zaehlen.html)

Knotti2015 8. Feb 2005 15:06


Procressbar zählen
 
Hallo ich suche einen Code für eine Procressbar diese soll nachdem auf einen Button geklickt wurde die Zeit abzählen welche sie aus einen Edit Feld ausließt ist das möglich udn wie leutet dann der Code?

Thorben86 8. Feb 2005 15:16

Re: Procressbar zählen
 
Also ich gehe mal davon aus, das du Delphi meinst.
Zum runterzählen kannst du doch einfach einen timer nehmen.

Dann schau dir bei der Progressbar die Eigenschaften Min,Max und Position an.

Knotti2015 8. Feb 2005 15:20

Re: Procressbar zählen
 
Kannst du das genau schreiben, ja meine Delphi, bin ein ziemlicher Noob.

So besser ?

CReber 8. Feb 2005 16:35

Re: Procressbar zählen
 
Zitat:

Hallo ich suche einen Code für eine Procressbar diese soll nachdem auf einen Button geklickt wurde die Zeit abzählen welche sie aus einen Edit Feld ausließt ist das möglich udn wie leutet dann der Code?
Vielleicht solltest du erstmal an deiner Formulierung arbeiten... Tipp: Kommasetzung ;) Das erleichtert das lesen ungemein :)

Wie mir scheint hast du wirklich noch gar keine Ahnung von Delphi. Ich möchte Dir ein paar Tipps geben ;) Zum ersten solltest du verstehen, was sich hinter den ganzen Ereignissen verbirgt. In deinem Fall bräuchtest du das Ereignis OnClick bei einem Button. In dem Moment musst du den Wert aus dem Editfeld auslesen.

Dann solltest du den Maximalbereich der ProgressBar einstellen. Der maximale Wert ist ja logischerweise deine Zahl aus dem Editfeld.

Jetzt benötigst du eine Delay-Routine (dazu steht genug hier im Forum). Diese wartet dann immer eine Sekunde und dann wird die ProgressBar um eins erhöht. Fertig bist du...

Delphi-Quellcode:
procedure Wait(Time : Integer);
.
.
.

procedure TForm1.Button1OnClick(Sender: TObject);
  var CountDown : Integer;
      i        : Integer;
begin
  CountDown := StrToInt(Edit1.Text);
  ProgressBar1.Max := CountDown;
  for i := 0 to CountDown do begin
    Wait(1000);
    ProgressBar1.Position := i;
  end;
end;

Knotti2015 8. Feb 2005 21:15

Re: Procressbar zählen
 
TForm.Wait ?? Fehler

Erzeugen
[Fehler] Unit1.pas(33): Ungenügende Forward- oder External-Deklaration: 'TForm1.Wait'
[Fataler Fehler] Project1.dpr(5): Verwendete Unit 'Unit1.pas' kann nicht compiliert werden

Nikolas 8. Feb 2005 21:49

Re: Procressbar zählen
 
Wait ist eine eigene Prozedur, die du selbst schreiben müsstest. Ich weiss nicht genau, was Christian damit wollte, ersetze es einfach durch 'sleep' das sollte den gleichen Effekt haben, nämlich einfach nach jedem Schritt kurz eine Pause einzulegen, also :
Delphi-Quellcode:
procedure TForm1.Button1OnClick(Sender: TObject);
  var CountDown : Integer;
      i        : Integer;
begin
  CountDown := StrToInt(Edit1.Text);
  ProgressBar1.Max := CountDown;
  ProgressBar1.Min := 0; // Sollte auch nicht fehlen.
  for i := 0 to CountDown do
    begin
    Sleep(1000);
    ProgressBar1.Position := i;
    end;
end;

DP-Maintenance 8. Feb 2005 22:16

DP-Maintenance
 
Dieses Thema wurde von "sakura" von "Programmieren allgemein" nach "Sonstige Fragen zu Delphi" verschoben.

Minz 9. Feb 2005 00:05

Re: Procressbar zählen
 
Als Alternative mit Timer


Delphi-Quellcode:
procedure TForm1.Button1OnClick(Sender: TObject);
begin
     Progressbar1.Position:=Progressbar1.Min;
     Progressbar1.Max:=strtoint(edit1.text);
     Timer1.enabled:=true;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
     if Progressbar1.Position<Progressbar1.Max then Progressbar1.StepIt
     else enabled:=false;
end;

Knotti2015 9. Feb 2005 09:14

Re: Procressbar zählen
 
Es geht ja um die procedur Wait ... wenn ich es da durch sleep ersetzte bekome ich den selben fehler udn mit timer geht es nicht das fänst schon ohne buttonkloick an zu zählen.

fkerber 9. Feb 2005 09:20

Re: Procressbar zählen
 
Hi!

Du kannst einfach den leeren Prozedurkopf löschen, dann gibt es keine Probleme mehr damit.

Allerdings ist es besser DelayDelay zu verwenden.


Ciao Frederic

Minz 9. Feb 2005 10:23

Re: Procressbar zählen
 
@Knotti

sieh dir mein Beispiel mal genau an, dann wirst du feststellen, dass das ButtonClick berücksichtigt wurde !

Jelly 9. Feb 2005 10:31

Re: Procressbar zählen
 
Zitat:

Zitat von Knotti2015
Es geht ja um die procedur Wait ... wenn ich es da durch sleep ersetzte bekome ich den selben fehler udn mit timer geht es nicht das fänst schon ohne buttonkloick an zu zählen.

Sagmal, liest du auch manchmal was du schreibst :zwinker:

fkerber 9. Feb 2005 10:35

Re: Procressbar zählen
 
Hi!

Du musst im OI vorher beim Timer enabled auf false setzen, dann beginnt er erst mit ButtonClick


Ciao Frederic

Knotti2015 10. Feb 2005 16:02

Re: Procressbar zählen
 
(@) Jelly ähm jo ...

Delphi-Quellcode:
procedure TForm1.Button1OnClick(Sender: TObject);
begin
     Progressbar1.Position:=Progressbar1.Min;
     Progressbar1.Max:=strtoint(edit1.text);
     Timer1.enabled:=true;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
     if Progressbar1.Position<Progressbar1.Max then Progressbar1.StepIt
     else enabled:=false;
end;
Das habe ich verwendet Danke.
nun habe ich noch ein anderes Problem umd zwar is das Programm während dieser Zeit wo die Procressbar zählt nicht ansprechbar sodass ich einen anderen button drücken könnte ..

mr47 10. Feb 2005 16:26

Re: Procressbar zählen
 
Mach einfach in den Timer ein
Delphi-Quellcode:
application.processMesssages;
das sollte gehen

Jelly 10. Feb 2005 19:36

Re: Procressbar zählen
 
Zitat:

Zitat von mr47
Mach einfach in den Timer ein
Delphi-Quellcode:
application.processMesssages;
das sollte gehen

Da hat in dem Fall damit nix zu tun.

1. Auf welchem Wert steht denn Interval vom Timer... Gezählt wird in ms
2. Wenn du StepIt verwendest, wird jedes mal die Position der Progressbar um den Wert Step erhöht... Wie hoch ist der bei dir.

mr47 10. Feb 2005 19:46

Re: Procressbar zählen
 
Zitat:

Zitat von Knotti2015
(@) Jelly ähm jo ...


[...]
nun habe ich noch ein anderes Problem umd zwar is das Programm während dieser Zeit wo die Procressbar zählt nicht ansprechbar sodass ich einen anderen button drücken könnte [...]

:gruebel: Also ich hab auch mal sleep(xxx) eingesetzt. Und wenn man davor noch ein app.processmessages; setzt gefriert das Programm nicht ein!? Ich glaube da war das Problem, oder hab ich was falsch verstanden :?: :gruebel:

:hi:

Knotti2015 10. Feb 2005 21:23

Re: Procressbar zählen
 
CountDown := StrToInt(Edit3.Text);
ProgressBar1.Max := CountDown;
ProgressBar1.Min := 0; // Sollte auch nicht fehlen.
for i := 0 to CountDown do
begin
Sleep(1000);
ProgressBar1.Position := i;
end;

entsculdigt ich habe es do so gelöst gibt es dafür auch ein code?

Knotti2015 10. Feb 2005 21:25

Re: Procressbar zählen
 
Zitat:

Zitat von Jelly
Zitat:

Zitat von mr47
Mach einfach in den Timer ein
Delphi-Quellcode:
application.processMesssages;
das sollte gehen

Da hat in dem Fall damit nix zu tun.

1. Auf welchem Wert steht denn Interval vom Timer... Gezählt wird in ms
2. Wenn du StepIt verwendest, wird jedes mal die Position der Progressbar um den Wert Step erhöht... Wie hoch ist der bei dir.

application.processMesssages; -> undefinierter bezeichner


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