Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi ProgressBar endlosschleife (https://www.delphipraxis.net/104064-progressbar-endlosschleife.html)

Clane 26. Nov 2007 20:03


ProgressBar endlosschleife
 
was ist an dem code falsch ?? ich will das die prograssbar inner endlosschleife läuft .... geht aba net und so wirklich versteh kann ichs net

Delphi-Quellcode:
procedure TSplashScreen.Timer1Timer(Sender: TObject);
begin
   if i = 100 then i := 0 else i := i + 1;
   Progressbar1.Position := i;
end;
PS: i ist als integer als globale var declariert

lbccaleb 26. Nov 2007 20:08

Re: ProgressBar endlosschleife
 
Delphi-Quellcode:
procedure TSplashScreen.Timer1Timer(Sender: TObject);
begin
  if Progressbar1.position > 100 then
    progressbar1.position := 0;
  else
    progressbar1.position := progressbar1.position + 1;
end;

das sollte so eigentlich funzen aus dem stehgreif ;-)



edit:

hatte mein probleme mit dem begin und end ;-)

edit2:

ps du brauchst in dieser version die var i nicht mehr...
ausserdem könntest du auch

Delphi-Quellcode:
  if Progressbar1.position > 99 then
nehmen, das musst du ausprobieren wie du es besserbrauchst..


edit3:

ok, hab das fehlerhafte inc entfernt, so viel edits, ist schon wieder spät am abend, man man ;-)


edit4: so nun aber und jetzt geh ich pennen, langer arbeitstag ;-)

mfg

Neutral General 26. Nov 2007 20:09

Re: ProgressBar endlosschleife
 
Zitat:

Zitat von lbccaleb
Delphi-Quellcode:
procedure TSplashScreen.Timer1Timer(Sender: TObject);
begin
  if Progressbar1.position > 100 then
    progressbar1.position := 0;
  else
    inc(progressbar1.position);
end;

das sollte so eigentlich funzen aus dem stehgreif ;-)


mfg

Bis auf das inc ;)

inc funktioniert nur bei Variablen, nicht bei Properties ;)

Gruß
Neutral General

Pfoto 26. Nov 2007 20:17

Re: ProgressBar endlosschleife
 
vielleicht ist ja auch die "Marquee"-Progressbar-Art
interessant für dich (da läuft dann nur ein kurzer Streifen
durch...

Hier das habe ich bei den Schweizern gefunden:
http://www.swissdelphicenter.ch/de/showcode.php?id=1680


Gruß
Pfoto

Namenloser 26. Nov 2007 20:17

Re: ProgressBar endlosschleife
 
Zitat:

Zitat von lbccaleb
Delphi-Quellcode:
    progressbar1.position + 1;

Ich glaub, da ist noch ein Edit fällig :mrgreen:. [delphi]progressbar1.position := progressbar1.position+1;[7delphi]

sirius 26. Nov 2007 20:19

Re: ProgressBar endlosschleife
 
Man könnte auch die Methode "stepby" verwenden, wenn ihr schon am editieren seid.

Clane 26. Nov 2007 20:28

Re: ProgressBar endlosschleife
 
ich muss euch enttäuschen ... es funzt net eine sache am rande das ganze ist in einem spashscreen und das porg was dahinter läd ist .... sagen wir mal rechenintensiv

dominikkv 26. Nov 2007 21:17

Re: ProgressBar endlosschleife
 
dann versuchs mal mit nem Application.Processmessages; in dem Timer.

Crazy Ivan 26. Nov 2007 21:54

Re: ProgressBar endlosschleife
 
ist es nicht eher so?

Delphi-Quellcode:
procedure TSplashScreen.Timer1Timer(Sender: TObject);
begin
  if Progressbar1.position > 99
    then progressbar1.position := 0;
  progressbar1.position := progressbar1.position + 1;
end;
(ohne else, sonst wird nicht endlos, oder?)

Deep-Sea 27. Nov 2007 07:34

Re: ProgressBar endlosschleife
 
Zitat:

Zitat von Crazy Ivan
(ohne else, sonst wird nicht endlos, oder?)

Doch wird es, aber es "überspringt" sonst immer den Wert 0, da dieser der ProgressBar nie zugewiesen wird :wink:


Zitat:

Zitat von Clane
ich muss euch enttäuschen ... es funzt net eine sache am rande das ganze ist in einem spashscreen und das porg was dahinter läd ist .... sagen wir mal rechenintensiv

Was funktioniert nicht?
Rechenintensiv sollte eig. kein Problem darstellen, solange du keine großen Schleifen ohne Application.ProcessMessages hast. Ansonsten solltest du den Splashscreen vlt. mit einem Thread machen (oder geht auch die WinAPI Funktion timeSetEvent? Die arbeitet ja mittels Callback ...)(dumm nur, das die VCL net Threadsicher ist)

PS: Repaint aufzurufen ist je nach Lage auch unabdingbar...


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