nachdem mir der Ratschlag erteilt wurde mit einem "einfachen" Projekt den einstieg in Lazarus zu wagen, wollte ich mir ein kleines Timer Programm schreiben.
Der Timer soll mit zwei Buttons entweder von 24h auf 0 zählen oder mit dem zweiten Button bei 20min beginnen.
Allerdings Funktioniert die Prozedure "ontimer" nicht und ich komm einfach nicht drauf wieso....
Das Programm wird zwar durch den Kompiler gejagd, sobald ich aber einen Start Button drücke wird die Zeile
procedure TForm1.Timer1Timer(Sender: TObject);
rot unterlegt und keine Funktion durchgeführt.
Wenn jemand mal drüber schauen könnte wäre ich sehr Dankbar!!!
Gruß
Code: Alles auswählen
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls,
StdCtrls;
type
{ TForm1 }
TForm1 = class(TForm)
btnStart1: TButton;
btnStart2: TButton;
btnStop: TButton;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Timer1: TTimer;
procedure btnStart1Click(Sender: TObject);
procedure btnStart2Click(Sender: TObject);
procedure btnStopClick(Sender: TObject);
procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
procedure FormCreate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
Form1: TForm1;
counter:Longword;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.btnStart1Click(Sender: TObject);
begin
Timer1.Enabled:=False; //Falls der Timer noch aktiv ist wird er abgeschaltet
Counter:= 1200; //1200 Sekunden entspricht 20min
Timer1.Interval:=1000; //Interval 1x zählen in 1000ms (1Sekunde)
Timer1.Enabled:=True; //Timer starten
end;
procedure TForm1.btnStart2Click(Sender: TObject);
begin
Timer1.Enabled:=False; //Falls der Timer noch aktiv ist wird er abgeschaltet
Counter:= 86400; //86400 Sekunden entspricht 24h
Timer1.Interval:=1000; //Interval 1x zählen in 1000ms (1Sekunde)
Timer1.Enabled:=True; //Timer starten
end;
procedure TForm1.btnStopClick(Sender: TObject);
begin
Timer1.Enabled:=False;
counter := 86400;
Label3.Caption:='00';
Label2.Caption:='00';
Label1.Caption:='00';
end;
procedure TForm1.FormClose(Sender: TObject; var CloseAction: TCloseAction);
begin
Timer1.Enabled:=False;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Timer1.Enabled:=False;
counter := 86400;
Label3.Caption:='00';
Label2.Caption:='00';
Label1.Caption:='00';
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var
SS,MM,HH:String;
intSS, intMM, intHH:Integer ;
begin
//Integer-Variable Counter um 1 herunterzählen
dec(Counter);
//Stunden, Minuten und Sekunden für die Anzeige berechnen
intHH:=Trunc(Counter/60/60);
intMM:=Trunc((Counter-intHH*60*60)/60);
intSS:=Trunc(Counter- intMM*60 -intHH*60*60);
SS:=IntToStr(intSS);
MM:=IntToStr(intMM);
HH:=IntToStr(intHH);
//Aus optischen Gründen wird hier bei Bedarf eine "0"
//vor die Zeitangabe gesetzt
If Length(SS)=1 Then SS:='0' + SS ;
If Length(MM)=1 Then MM:='0' + MM ;
If Length(HH)=1 Then HH:='0' + HH ;
//Hier wird den Labels die Beschriftung zugewiesen
Label3.Caption:=SS;
Label2.Caption:=MM;
Label1.Caption:=HH;
//Wenn der Counter auf "0" steht, ist die Zeit abgelaufen
//Der Timer wird abgeschaltet und der OnStopTimer-Event ausgelöst
If Counter=0 Then
begin
Timer1.Enabled:=False;
end;
end;
end.