Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Label.Caption mit/durch ProgressBar ändern?!? (https://www.delphipraxis.net/113045-label-caption-mit-durch-progressbar-aendern.html)

xShadowBoZz 1. Mai 2008 19:41


Label.Caption mit/durch ProgressBar ändern?!?
 
also habe momentan folgendes problem.
ich will das wenn ich eine ProgressBar zum laufen bring durch einen button click das sich ein label nach jeder runde mitverändert.
die progressbar bring ich mit einem timer zum laufen.

ich zeig euch ma wie ich es bis jetzt probiert habe (habs schon mehrmals und unterschiedlich probiert, allerdings funktioniert das fast am besten)
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  Timer1.Enabled:=True;
end;
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
var b: Integer;
begin
  b:=1;
  ProgressBar1.StepBy(1);
  application.ProcessMessages;
  label3.Caption:= label3.Caption +IntToStr(b);
end;
habs in diesem fall enfach mal so gemacht, das die progressbar max. 60 und min.0 hat.
durch den timer wird die Progressbar aktiviert mit einser schritten.
label3.caption sollte eigentlich dann von (sekunde) 0 bis 60 hochlaufen.
stattdessen siht label3.caption so aus (nach jeder runde):
1
11
111
1111
...
also es wird nicht 1+1 gerechnet sondern einfach eine 1dazu getan.
bräuchte halt einfach eine lösung dafür? vllt. ein commando zum addieren?
(falls das basis kenntnise sind, dann habe ich vergessen wie man addiert, also mit einem commando).

danke falls ihr helfen könnt.

Klaus01 1. Mai 2008 19:44

Re: Label.Caption mit/durch ProgressBar ändern?!?
 
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
var b: Integer; // das dann auch weg
begin
  b:=1; // solltest Du ausserhalb des Timer auf 1 setzen
  ProgressBar1.StepBy(1);
  application.ProcessMessages;
  inc(b)
  label3.Caption:= IntToStr(b);
end;
Grüße
Klaus

himitsu 1. Mai 2008 19:47

Re: Label.Caption mit/durch ProgressBar ändern?!?
 
du mußt nur Label.Caption vorher in einen Integer umwandeln (TryStrToInt oder StrToIntDef), dann 1 dazurechnen und per IntToStr wieder in einen Integer umwandeln.


Du könntest auch (falls nur bis 60/59 gezählt werden soll) ProgressBar1.Position in einen String umwandeln und anzeigen.


PS: 0 bis 60 = 61 Sekunden
0 bis 59 = 60 Sekunden :zwinker:

Mikender 1. Mai 2008 19:51

Re: Label.Caption mit/durch ProgressBar ändern?!?
 
Oder ohne die Variable b würde es auch so gehen

Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  ProgressBar1.StepBy(1);
  application.ProcessMessages;
  inc(b)
  label3.Caption:= IntToStr(StrToInt(Label3.Caption)+1);
// Vorsicht das ist ein Pseudo Code (Fehler vorbehalten) :-D

[Edit] Sorry hat himitsu auch gleichzeitig geschrieben (seltsam kam gar keine Melung über "neuer Beitrag hinzugekommen" [/EDIT]

himitsu 1. Mai 2008 19:55

Re: Label.Caption mit/durch ProgressBar ändern?!?
 
@Mikender:
StrToInt und im Label keine Zahl = Exception

@[Edit] tja, bei mir kam eine, nur wurde kein neuer Beitrag (der von Klaus01) angezeigt :?

Mikender 1. Mai 2008 20:01

Re: Label.Caption mit/durch ProgressBar ändern?!?
 
[OT]Tja wieder ein Mysterium in der DP :gruebel: :-D [/OT]

Und die Exception kannst du ja mit Try...except oder if...then abfangen

toms 1. Mai 2008 20:08

Re: Label.Caption mit/durch ProgressBar ändern?!?
 
Zitat:

Zitat von himitsu
du mußt nur Label.Caption vorher in einen Integer umwandeln (TryStrToInt oder StrToIntDef), dann 1 dazurechnen und per IntToStr wieder in einen Integer umwandeln.

Oder mit dem Tag arbeiten

Delphi-Quellcode:
Label3.Tag := Label3.Tag + 1;
label3.Caption:= IntToStr(Label3.Tag);

xShadowBoZz 1. Mai 2008 20:22

Re: Label.Caption mit/durch ProgressBar ändern?!?
 
ok danke erstmal.

mikender's methode funktioniert, allerdings kommt halt ne exeption wenn keine zahl(integer) drin steht,
allerdings kann ich des so machen: das in den einstellunge Caption= 0 ist und Visible=False.
in der procedure stell ich dann erst visible= true ein und alles startet.

@ toms:
funktioniert perfekt auch ohne integer in der caption.
ich weiß zwar eigenltih net was tag heist, also wofür des genutzt wird, aba es geht.
thx

mkinzler 1. Mai 2008 20:25

Re: Label.Caption mit/durch ProgressBar ändern?!?
 
Zitat:

ich weiß zwar eigenltih net was tag heist, also wofür des genutzt wird, aba es geht.
.Tag ist eine Eigenschaft einer Komponente, die der Programmierer mit Integerwerten belegen kann.

himitsu 1. Mai 2008 20:28

Re: Label.Caption mit/durch ProgressBar ändern?!?
 
Tag hat keine Funktion und es ist für den Programmierer vorgesehn, also du selbst kannst entscheiden, was damit gemacht wird. (nahezu alle Delpi-VCL-Komponenten haben dieses Property)


Zitat:

Zitat von xShadowBoZz
... allerdings kommt halt ne exeption wenn keine zahl(integer) drin steht

TryToStr, oder StrToIntDef mit 0 als Default. :angel:

[edit] war mkinzler schonwieder zu schnell :shock:


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:54 Uhr.

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