Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi ProgressBar für Anfänger (https://www.delphipraxis.net/23311-progressbar-fuer-anfaenger.html)

rossinie00 1. Jun 2004 12:14


ProgressBar für Anfänger
 
ProgressBar für Anfänger

Wie kann ich die Progressbar benutzen find keine richtige anleitung
danke

MathiasSimmack 1. Jun 2004 12:19

Re: ProgressBar für Anfänger
 
Progressbar auf die Form, und dann:
Delphi-Quellcode:
for i := 1 to 100 do
 Progressbar1.Position := i;
Als einfachstes aller Beispiele.

rossinie00 1. Jun 2004 12:22

Re: ProgressBar für Anfänger
 
ich hab ne text ausgabe in nem memofeld.
natürlich ist die ausgabe schon in einem bruchteil von ner sekunde da aber ich hätte gern so eine progress bar die 2 sek braucht um sich zu füllen und dann den text erst ausgibt :duck:

Meflin 1. Jun 2004 12:24

Re: ProgressBar für Anfänger
 
dazu könntest du einen timer verwenden, mit interval 2000, den du bevor du den text einfügst enablest. der kann dann die bar füllen und anschließend den text einfügen!

rossinie00 1. Jun 2004 12:25

Re: ProgressBar für Anfänger
 
das geht auch wenn das teil zum txt füllen in ner schleife ist?

Nicodius 1. Jun 2004 12:26

Re: ProgressBar für Anfänger
 
nein der interval ist da nicht entscheidend!

--> interval ist nur für die zeit wo die aktionen im timer ablaufen!!
..
dumusst das dann so machen das du von 1..2000(1000 millisekunden = 1 Sek.) zählst

Meflin 1. Jun 2004 12:28

Re: ProgressBar für Anfänger
 
käse. intervall ist die zeit wann der timer das ontimerevent auslöst. also ist das sehr wichtig :roll:

rossinie00 1. Jun 2004 12:30

Re: ProgressBar für Anfänger
 
Code:
procedure TForm1.Button1Click(Sender: TObject);
var
  i, j, Zufallszahl, eingabe, summe: integer;
  durchschnitt: real;
begin
  RANDOMIZE;
  eingabe := strtoint(edit1.text);
  Memo1.Lines.Clear;
  for i := 1 to 10 do
  begin
    timer
    Zufallszahl := Random(eingabe);
    memo1.Lines.Add(inttostr(Zufallszahl));
    summe := summe + ZufallsZahl;
    Progressbar1.Position := i;
  end;
  durchschnitt := summe / 10;
  for j := 0 to 3 do
    begin
      memo1.Lines.Add('');
    end;
  memo1.Lines.Add(FloatToStr(durchschnitt));
end;
und nu :-D

Nicodius 1. Jun 2004 12:31

Re: ProgressBar für Anfänger
 
"--> interval ist nur für die zeit wo die aktionen im timer ablaufen!! "

das hab ich doch gesagt ....

Meflin 1. Jun 2004 12:32

Re: ProgressBar für Anfänger
 
Delphi-Quellcode:
Zufallszahl := Random(eingabe);
memo1.Lines.Add(inttostr(Zufallszahl));
summe := summe + ZufallsZahl;
Progressbar1.Position := i;
das müsste ins onTimer event deines timers, aber das mit der progressbarposition stimmt nicht, da die dann nur einmal in 2 sekunden ausgeführt würde

Meflin 1. Jun 2004 12:33

Re: ProgressBar für Anfänger
 
Zitat:

Zitat von Nicodius
"--> interval ist nur für die zeit wo die aktionen im timer ablaufen!! "

das hab ich doch gesagt ....

du sagtest vor allem das intervall ncht entscheidend währe und das ist kompletter schwachsinn!

Nicodius 1. Jun 2004 12:34

Re: ProgressBar für Anfänger
 
naja man kanns so oder so nehmen

bei deiner kan man auch gleich eine Actionslist machen ;)

Meflin 1. Jun 2004 12:37

Re: ProgressBar für Anfänger
 
nein, weil dann fehlen wieder die 2 sekunden verzögerung. die müsste man dann mit sleep reinmachen und das wär ja auch ziemlich blöd oder?

Stanlay Hanks 1. Jun 2004 12:38

Re: ProgressBar für Anfänger
 
Hi. Also wenn du in der Delphi Hilfe nachschaust (F1 drücken ;) ), dann findet sich da denke ich, eine ganze Menge.

Aber trotzdem ;) :

Die ProgressBar wird meistens für Fortschrittsanzeigen verwendet. Wenn du also zum Beispiel eine Schleife (For Schleife) hast, kannst du mit der ProgressBar dem Anwender zeigen, bei welchem Durchlauf die Schleife gerade ist.

Dazu sind eigentlich für den Anfang nur 2 (und eine "kleine") Eigenschaften und eine Prozedur wichtig:
  • Max: Max ist ein Integer Wert, der angibt, wann die ProgressBar zu 100 % ausgefüllt ist. Ist Max also z.B. 50, kann die ProgressBar in 50 Schritten voll ausgefüllt werden. Das hat aber nichts mit den "Kästchen", also den angezeigten Einheiten zu tun. Die werden je nach Breite der ProgressBar gleichmäßig verteilt.
  • Position: Position ist ebenfalls ein Integerwert, der angibt, bei welchem Schritt die ProgressBar sich gerade befindet. Wenn also Max z.B. wie im Normalfall 100 ist, und Position den Wert 50 hat, ist die ProgressBar ungefähr zur Hälfte ausgefüllt.
  • StepIt: StepIt ist eine Prozedur, die den Wert von "Position" erhöht. Im Normalfall wird Position durch "StepIt" um zehn erhöht.

    StepIt ist also eigentlich nur eine "Abkürzung" für

    Delphi-Quellcode:
    ProgressBar.Position := ProgressBar.Position + x; //Im Normalfall ist x 10
  • Step: Step ist ein Integerwert, der Angibt, um wieviel die Prozedur "StepIt" die Eigenschaft Position erhöht. Setzt du also Step auf 20, wird bei jedem "StepIt" die Eigenschaft Position um 20 erhöht.

    Alternativ zu "StepIt" und "Step" kann man auch die Funktion "StepBy(x)" verwenden. "x" muss dann ein Integerwert sein. Mit StepBy kannst du Position um die in Klammern angegebene Zahl hinauf, oder hinunter setzen (dann eben mit einer negativen Zahl)

Zum Abschluss vielleicht noch ein kleines Beispiel:
Du hast eine ListBox und möchtest jeden Eintrag in eine zweite Listbox kopieren. Dabei soll der Fortschritt in einer ProgressBar angezeigt werden.

Delphi-Quellcode:
var i, anz: Integer; //i ist die Zählvariable für die For Schleife und anz (Für Anzahl) ist eine Variable, in der wir zur Vereinfachung die Anzahl der Einträge in der Listbox zwischenspeichern.

begin
  anz := ListBox1.Items.Count; //Anzahl der Einträge wird zwischengespeichert
  ProgressBar.Position := 0; //ProgressBar wird auf 0 gesetzt.
  ProgressBar.Max := anz; //Max wird auf die Anzahl der Listbox Einträge gesetzt
  ProgressBar.Step := 1; //Die Anzahl der Schritte für StepIt wird festgelegt

  For i := 0 to anz -1 do //-1, da der Index von Lilstboxeinträgen bei 0 anfängt und so andernfalls ein Schritt zuviel da wäre.
    begin
      ListBox2.Items.Add(ListBox1.Items[i]); //Der ListBox wird ein neuer Eintrag hinzugefügt und
      ProgressBar.StepIt; //Position wird um eins nach oben gesetzt.
    end;

  ProgressBar.Position := 0;
end;
So, ich hoffe, dass dir das etwas weitergeholfen hat.

Man liest sich, Stanlay :hi:

[Edit] Also als ich zu schreiben angefangen hab, waren da noch keine Antworten. Aber so is das halt in der DP :mrgreen:[/Edit]

Meflin 1. Jun 2004 12:42

Re: ProgressBar für Anfänger
 
Liste der Anhänge anzeigen (Anzahl: 1)
ich hab jetzt auch ein besp gemacht:

rossinie00 1. Jun 2004 13:02

Re: ProgressBar für Anfänger
 
der füllt bei mir aber nur 2 kästchen aus :-(
also etwa 1/10 von der ganzen bar

Meflin 1. Jun 2004 14:13

Re: ProgressBar für Anfänger
 
meinst du meins? also bei mir hat das gefunzt :gruebel:

rossinie00 1. Jun 2004 14:13

Re: ProgressBar für Anfänger
 
bei mir :-(

Meflin 1. Jun 2004 14:19

Re: ProgressBar für Anfänger
 
Liste der Anhänge anzeigen (Anzahl: 1)
ich habs nochmal probiert, es geht, hier die exe dazu:


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