Zitat von
blade236:
Danke klappt, wieso Global kapier ich aber trotzdem nich.
dann werfen wir dochmal einen blick auf den codeschnipsel
Delphi-Quellcode:
unit WinForm;
interface
uses
System.Drawing, System.Collections, System.ComponentModel,
System.Windows.Forms, System.Data, sysutils;
procedure TWinForm.Timer1_Tick(sender: System.
Object; e: System.EventArgs);
var zahl:integer;
begin
zahl:=zahl+1;
label1.Text:=inttostr(zahl);
end;
procedure TWinForm.Button1_Click(sender: System.
Object; e: System.EventArgs);
begin
timer1.enabled:=true;
end;
end.
in diesem code wird die Variable nach dem Timer1_Tick event definiert.
Delphi-Quellcode:
procedure TWinForm.Timer1_Tick(sender: System.Object; e: System.EventArgs);
var zahl:integer;
Die Variable, die ja nur temporär existiert hat also zuerst mal den wert 0.
Dann wird Zu dem wert 0 der wert 1 dazu addiert.
zahl:=zahl+1;
dann wird der wert 1 in dein panel geschireben
label1.Text:=inttostr(zahl);
und an dieser stelle endet die prozedur und die temporäre variable ist nichtmehr vorhanden.
Sobald dann der nächste "Tick" erfolgt wird die prozedur wiederholt.
Der wert wird "erstellt", auf 0 gesetzt, + 1 addiert und in dein panel geschrieben
das problem ist also nicht der timer sondern dein Wert!
schriebt man den code jetzt etwa so:
Delphi-Quellcode:
unit WinForm;
var
zahl:integer;
interface
uses
System.Drawing, System.Collections, System.ComponentModel,
System.Windows.Forms, System.Data, sysutils;
procedure TWinForm.Timer1_Tick(sender: System.
Object; e: System.EventArgs);
begin
zahl:=zahl+1;
label1.Text:=inttostr(zahl);
end;
procedure TWinForm.Button1_Click(sender: System.
Object; e: System.EventArgs);
begin
timer1.enabled:=true;
end;
end.
existiert die variable ja immer, da sie ja global ist. soll heißen: sie wird nie gelöscht oder neu erstellt.
einfacher wäre es aber den Timer so zu gestalten:
Delphi-Quellcode:
procedure TWinForm.Timer1_Tick(sender: System.Object; e: System.EventArgs);
begin
label1.Text:=inttostr(strtoint(label1.Text)+1);
end;
dann mpsstest du den text auf dem label am anfang nur auf "0" setzen und das selbe würde dabei herauskommen. mit dem unterschied das du keine variablebräuchtest.