Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi ProgressBar ohne sleep aber mit delay (https://www.delphipraxis.net/70045-progressbar-ohne-sleep-aber-mit-delay.html)

Faceman 24. Mai 2006 08:32


ProgressBar ohne sleep aber mit delay
 
Hi.

Ich hab ein Problem und komme nicht weiter, bin auch noch Anfänger. Und zwar habe ich eine ProgressBar auf meiner Form, die nach 10 sekunden voll sein soll.
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
  var i : Integer;
begin
  ProgressBar1.Min:=0;
  ProgressBar1.Max:=100;
  for i:=0 to 100 do
    begin
      ProgressBar1.Position:=i;
      Sleep(100);
    end;
end;
Das Problem ist nur hierbei, dass das Programm diese 10 sekunden lang lahm gelegt ist und man nichts machen kann. Ich habe irgendwo gelesen, dass man das mit delay machen kann, aber ich kenn mich da nicht mit aus. Schließlich will ich ja in den 10 sekunden noch das Programm bedienen bzw. etwas anklicken. Könnt ihr den Quelltext verbessern?

mbamler 24. Mai 2006 08:36

Re: ProgressBar ohne sleep aber mit delay
 
Zitat:

Zitat von Faceman
Hi.

Ich hab ein Problem und komme nicht weiter, bin auch noch Anfänger. Und zwar habe ich eine ProgressBar auf meiner Form, die nach 10 sekunden voll sein soll.
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
  var i : Integer;
begin
  ProgressBar1.Min:=0;
  ProgressBar1.Max:=100;
  for i:=0 to 100 do
    begin
      ProgressBar1.Position:=i;
      Sleep(100);
    end;
end;
Das Problem ist nur hierbei, dass das Programm diese 10 sekunden lang lahm gelegt ist und man nichts machen kann. Ich habe irgendwo gelesen, dass man das mit delay machen kann, aber ich kenn mich da nicht mit aus. Schließlich will ich ja in den 10 sekunden noch das Programm bedienen bzw. etwas anklicken. Könnt ihr den Quelltext verbessern?


[delphi]procedure TForm1.FormCreate(Sender: TObject);
var i : Integer;
begin
ProgressBar1.Min:=0;
ProgressBar1.Max:=100;
for i:=0 to 100 do
begin
ProgressBar1.Position:=i;
Application.ProzessMessages;
Sleep(100);
end;
end;

Gruß
Matthias

Klaus01 24. Mai 2006 08:37

Re: ProgressBar ohne sleep aber mit delay
 
schau mal nach delay in der codelib, das macht das was Du willst.

Grüße
Klaus

mbamler 24. Mai 2006 08:41

Re: ProgressBar ohne sleep aber mit delay
 
Zitat:

Zitat von Faceman
Hi.

Ich hab ein Problem und komme nicht weiter, bin auch noch Anfänger. Und zwar habe ich eine ProgressBar auf meiner Form, die nach 10 sekunden voll sein soll.
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
  var i : Integer;
begin
  ProgressBar1.Min:=0;
  ProgressBar1.Max:=100;
  for i:=0 to 100 do
    begin
      ProgressBar1.Position:=i;
      Sleep(100);
    end;
end;
Das Problem ist nur hierbei, dass das Programm diese 10 sekunden lang lahm gelegt ist und man nichts machen kann. Ich habe irgendwo gelesen, dass man das mit delay machen kann, aber ich kenn mich da nicht mit aus. Schließlich will ich ja in den 10 sekunden noch das Programm bedienen bzw. etwas anklicken. Könnt ihr den Quelltext verbessern?

Sorry ...
es muss natürlich so lauten

procedure TForm1.FormActivate(Sender: TObject);
var
i : Integer;
begin
ProgressBar1.Min:=0;
ProgressBar1.Max:=100;
for i:=0 to 100 do
begin
ProgressBar1.Position:=i;
Application.ProcessMessages;
Sleep(100);
end;
end;


Gruß
Matthias

Faceman 24. Mai 2006 08:43

Re: ProgressBar ohne sleep aber mit delay
 
Danke erstmal, werde es gleich ma ausprobieren, melde mich vielleicht später nochmal wenn es geklappt hat.

Faceman 24. Mai 2006 10:56

Re: ProgressBar ohne sleep aber mit delay
 
Ich hab schon ne andere Lösung gefunden, aber trotzdem tritt wieder einmal ein Problem auf, das ich ganz und gar nicht verstehen kann.
Hier mein Quelltext
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
timer3.Enabled:=true;
end;

procedure TForm1.Timer3Timer(Sender: TObject);
begin
progressbar1.Position := progressbar1.Position + 1;
if progressbar1.position=97 then label16.caption:='3...';
if progressbar1.position=98 then label16.caption:='2...';
if progressbar1.position=99 then label16.caption:='1...';
  if progressbar1.Position = 100 then begin
    timer3.Enabled := false;
    close;
    end;
end;

procedure TForm1.Button14Click(Sender: TObject);
begin
timer3.Enabled:=false;
end;

procedure TForm2.Timer4Timer(Sender: TObject);
begin
progressbar2.Position := progressbar2.Position + 1;
if progressbar2.position=97 then label16.caption:='3...';
if progressbar2.position=98 then label16.caption:='2...';
if progressbar2.position=99 then label16.caption:='1...';
  if progressbar2.Position = 100 then begin
    timer4.Enabled := false;
    close;
    end;
end;

procedure TForm2.FormCreate(Sender: TObject);
begin
timer4.Enabled:=true;
end;
Ich habe 2 Formulare. Im ersten habe ich eine Progressbar1 und im zweiten Progressbar2, trotzdem zeigt er mir im zweiten Formular den gleichen Fortschritt wie in Formular1 an, obwohl ich ganz andere Timer und ProgressBars benutze. Und im ersten Formular schalte ich den timer3 durch enabled:=false aus. Warum habe ich denn immer noch den gleichen Fortschritt, ich versteh das einfach nicht. Liegt es vielleicht daran, dass das Formular1 die MAINFORM ist?

Faceman 24. Mai 2006 11:03

Re: ProgressBar ohne sleep aber mit delay
 
:?: Kann mir keiner dabei helfen?

freak4fun 24. Mai 2006 11:05

Re: ProgressBar ohne sleep aber mit delay
 
Auch wenn es nicht ganz zum Thema passt:

Delphi-Quellcode:
procedure TForm1.Timer3Timer(Sender: TObject);
begin
  with Progressbar1 do
    begin
      Position := Position + 1;
      Case Position of
        97 : Label16.caption := '3...';
        98 : Label16.caption := '2...';
        99 : Label16.caption := '1...';
        100: Timer3.Enabled := False;
      end;
    end;
  if not Timer3.Enabled then
    Close;
end;
[edit] :mrgreen:
Hab dann doch noch was zum Thema xD.

Delphi-Quellcode:
procedure TForm2.FormCreate(Sender: TObject);
begin
timer4.Enabled:=true;
end;
Wird beim starten des Programms ausgeführt. Du solltest das Timer4.Activate; im OnShow-Event des 2. Formulars machen. ;)

[/edit]

MfG
freak

Faceman 24. Mai 2006 12:09

ProgressBAr mit timer und zwei Formularen
 
Habt ihr nicht irgendeine Lösung für mein Problem? Ich hab nämlich keine Ahnng voran das liegen könnte. Bitte um Hilfe.

smudo 24. Mai 2006 12:37

Re: ProgressBar ohne sleep aber mit delay
 
Hallo,

die Lösung mit dem Timer von freak4fun ist doch ok.

Ansonsten könntest du natürlich noch mit Threads arbeiten. Aber das ist für dieses kleine Problemchen wohl überdimensioniert.

René


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:02 Uhr.
Seite 1 von 2  1 2      

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