Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Progressbar Wert geben (https://www.delphipraxis.net/126886-progressbar-wert-geben.html)

Affemitwaffe93 4. Jan 2009 09:55


Progressbar Wert geben
 
Hallo Leute,

also ich habe folgendes Problem:

Ich habe in meinem Projekt 2 Formulare. Jetzt will ich das ein beliebiger Wert den Man in ein Edit eingibt, als Maximum für die Progressbar dient.

Das Ganze sieht dann so aus bei mir:

1. Form:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
form2.show;
zahl1:= strtoint (edit1.text);
form2.Button1.enabled:=true;
form2.Timer1.enabled:=true;
form2.Timer2.Enabled:=true;
form2.ProgressBar1.Enabled:=true;
form2.Label1.Enabled:=true;
end;

end.
und in der 2. Form:

Delphi-Quellcode:
procedure TForm2.FormCreate(Sender: TObject);
begin
progressbar1.Min:=0;
progressbar1.Max:= (Zahl1) ;
progressbar1.Position:=0;
progressbar1.step:= +1;
end;

end.
ich weiß schon das der Wert in die 2. Form übergeben wird da ich das mit einem Button der dann diesen Wert anzeigt überprüft habe, allerdings tut sich an der Progressbar im Moment gar nicht. Wenn ich allerdings das (Zahl1) wieder durch eine normale Zahl ersetze, dann funktioniert alles Perfekt.

Klaus01 4. Jan 2009 10:01

Re: Progressbar Wert geben
 
Guten Morgen,

erstellst Du die Form2 den immer dynamisch wenn Du zahl1 geändert hast?
Der create Prozeß einer Form wird nur dann durchlaufen wenn sie erstellt wird.
Wenn Form2 also statisch eingebunden ist, wird onCreate einmal ausgeführt.

Grüße
Klaus

Helmi 4. Jan 2009 10:04

Re: Progressbar Wert geben
 
Hallo,

du weisst die verkehrte Variable der ProgressBar zu.
In der Form1 beschreibst du eine Variable "zahl1" der Form1, in der Form2 fragst du aber die Variable "zahl1" der Form2 ab.
Zwischen diesen zwei Variablen besteht keine Verbindung!

Du brauchst die Variable "zahl1" in der Form2 aber gar nicht.
Mach einfach folgendes:
Zitat:

Zitat von Affemitwaffe93
1. Form:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
form2.show;
zahl1:= strtoint (edit1.text);
form2.Button1.enabled:=true;
form2.Timer1.enabled:=true;
form2.Timer2.Enabled:=true;
form2.ProgressBar1.Enabled:=true;
form2.ProgressBar1.Max := zahl1;        //<== NEU
form2.Label1.Enabled:=true;
end;

end.
und in der 2. Form:

Delphi-Quellcode:
procedure TForm2.FormCreate(Sender: TObject);
begin
progressbar1.Min:=0;
//progressbar1.Max:= (Zahl1) ;          //musst du weglassen
progressbar1.Position:=0;
progressbar1.step:= +1;
end;

end.

Un um dem Verständnis halber:
Form OnCreate wird nur beim Erzeugen der Form durchlaufen. Das würde jetzt in deinem Fall bedeuten, dass der Wert der Variable "zahl1" der Form2 nur einmal der Progressbar zugewiesen werden würde.

Teekeks 4. Jan 2009 10:06

Re: Progressbar Wert geben
 
Packe das ganze mal in OnShow rein. dann wirds auch nur ausgeführt wenn deine Form angezeigt wird und nicht nur dann wenn sie erzeugt wird (also dann wenn zahl1 noch = nil ist).

Helmi 4. Jan 2009 10:08

Re: Progressbar Wert geben
 
Zitat:

Zitat von Teekeks
Packe das ganze mal in OnShow rein. dann wirds auch nur ausgeführt wenn deine Form angezeigt wird und nicht nur dann wenn sie erzeugt wird (also dann wenn zahl1 noch = nil ist).

Das bringt auch nichts, da die zwei Variablen keine Verbindung zueinander haben (wenn die Variablen jeweils in der jeweiligen Form deklariert sind)

Teekeks 4. Jan 2009 10:10

Re: Progressbar Wert geben
 
ach stimt ja. hab ich garnicht gesehen das da bei Form2 "zahl1" und nicht "Form1.zahl1" steht. In dem falle hast du tatsächlich recht ^^

Sharky 4. Jan 2009 10:13

Re: Progressbar Wert geben
 
Hai Waffen Affe ;-)

ich würde das ganze über ein eigens Property von TForm2 lösen. Zum Beispiel so:

Delphi-Quellcode:
type
  TForm2 = class(TForm)
    ProgressBar1: TProgressBar;
    Timer1: TTimer;
    procedure Timer1Timer(Sender: TObject);
  private
    { Private-Deklarationen }
    fprogessmax: Integer;
    procedure SetProgressmax(const Value: Integer);
  public
    { Public-Deklarationen }
    property progessmax: Integer read fprogessmax write SetProgressmax;
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}

procedure TForm2.SetProgressmax(const Value: Integer);
begin
  fprogessmax := Value;
  ProgressBar1.Max := fprogessmax;
end;

procedure TForm2.Timer1Timer(Sender: TObject);
begin
  ProgressBar1.Position := ProgressBar1.Position + 1;
end;
Delphi-Quellcode:
procedure TForm1.btn_1Click(Sender: TObject);
begin
  Form2.Show;
  Form2.progessmax := strtoint(edt1.text);
end;

Affemitwaffe93 4. Jan 2009 10:16

Re: Progressbar Wert geben
 
also jetzt erst mal danke an alle die schnellen antworten ^^

ich hab das jetzt mal so gemacht wie Helmi gesagt hat weil das am wenigsten :wiejetzt: bei mir auslößt :-D , das sieht jetzt so aus:

Delphi-Quellcode:
var
  Form1: TForm1;
  Zahl1: Integer;
  Zahl2: Integer;


implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
form2.show;
zahl1:= strtoint (edit1.text);
form2.Button1.enabled:=true;
form2.Timer1.enabled:=true;
form2.Timer2.Enabled:=true;
form2.ProgressBar1.Enabled:=true;
form2.Label1.Enabled:=true;

form2.progressbar1.Max:= zahl1 ;
end;
das funktioniert aber auch irgendwie nicht.

Helmi 4. Jan 2009 10:16

Re: Progressbar Wert geben
 
Die DP-Hai (Sharky) :-) Lösung wär natürlich noch schöner und proffesioneller....

Helmi 4. Jan 2009 10:17

Re: Progressbar Wert geben
 
Zitat:

Zitat von Affemitwaffe93
das funktioniert aber auch irgendwie nicht.

wie wirkt sich das aus?


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