unit TimerUnit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, mmSystem, ComCtrls, AppEvnts, Menus, IniFiles;
type
TForm1 = class(TForm)
DownTimer: TTimer;
ZeitEdit: TEdit;
StartButton: TButton;
ZeitLabel: TLabel;
UpTimer: TTimer;
ProgressBar: TProgressBar;
ApplicationEvents: TApplicationEvents;
TrayIcon: TTrayIcon;
PopupMenu: TPopupMenu;
OpenItem: TMenuItem;
CloseItem: TMenuItem;
Wert1Item: TMenuItem;
Wert2Item: TMenuItem;
Wert3Item: TMenuItem;
Trennlinie: TMenuItem;
EinstellungenItem: TMenuItem;
procedure StartButtonClick(Sender: TObject);
procedure DownTimerTimer(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Abbruch(Sender: TObject);
procedure UpTimerTimer(Sender: TObject);
procedure ZeitLabelClick(Sender: TObject);
procedure Minimieren(Sender: TObject);
procedure Wiederherstellen(Sender: TObject);
procedure CloseItemClick(Sender: TObject);
procedure OpenItemClick(Sender: TObject);
procedure Wert1ItemClick(Sender: TObject);
procedure Wert2ItemClick(Sender: TObject);
procedure Wert3ItemClick(Sender: TObject);
procedure EinstellungenItemClick(Sender: TObject);
procedure EinstLesen(Sender: TObject);
procedure WerteUebertr(Sender: TObject);
procedure EinstLad(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
Min, Sek, Zeit, Schnell1, Schnell2, Schnell3: Integer;
Ini: TIniFile;
Ladebalken: Boolean;
implementation
uses TimerUnit2;
{$R *.dfm}
/////////////////////////
///// Start & Timer /////
/////////////////////////
procedure TForm1.FormCreate(Sender: TObject);
begin
EinstLesen(Sender);
WerteUebertr(Sender);
EinstLad(Sender);
end;
procedure TForm1.StartButtonClick(Sender: TObject);
begin
Min:=StrToInt(ZeitEdit.Text);
ProgressBar.Max:=Min*60;
if Min>=0 then
if Min=0 then
begin
UpTimer.Enabled:=True;
ZeitLabel.Caption:=Format('%dm %ds', [0, 0]);
TrayIcon.Hint:=Format('%dm %ds', [0, 0]);
Sek:=0;
StartButton.Visible:=False;
ZeitEdit.Visible:=False;
ZeitLabel.Visible:=True;
end
else
begin
DownTimer.Enabled:=True;
ZeitLabel.Caption:=Format('%dm %ds', [Min, 0]);
TrayIcon.Hint:=Format('%dm %ds', [Min, 0]);
Sek:=60;
Dec(Min);
StartButton.Visible:=False;
ZeitEdit.Visible:=False;
ZeitLabel.Visible:=True;
end
else
ShowMessage('D=N');
end;
procedure TForm1.UpTimerTimer(Sender: TObject);
begin
Inc(Sek);
Form1.Text:=Format('%dm %ds', [Min, Sek]);
ZeitLabel.Caption:=Format('%dm %ds', [Min, Sek]);
TrayIcon.Hint:=Format('%dm %ds', [Min, Sek]);
if (Sek=59) then
begin
Sek:=-1;
Inc(Min);
end;
end;
procedure TForm1.DownTimerTimer(Sender: TObject);
begin
Dec(Sek);
Form1.Text:=Format('%dm %ds', [Min, Sek]);
ZeitLabel.Caption:=Format('%dm %ds', [Min, Sek]);
TrayIcon.Hint:=Format('%dm %ds', [Min, Sek]);
ProgressBar.StepIt;
if (Sek=0) and (Min=0) then
begin
Abbruch(Sender);
SndPlaySound('Bong.wav', Snd_Async);
TrayIcon.ShowBalloonHint;
end;
if (Sek=0) then
begin
Sek:=60;
Dec(Min);
end;
end;
/////////////////////////
///////// Abort /////////
/////////////////////////
procedure TForm1.Abbruch(Sender: TObject);
begin
DownTimer.Enabled:=False;
UpTimer.Enabled:=False;
ZeitEdit.Text:='';
ZeitLabel.Caption:='';
Form1.Text:='Timer';
ZeitEdit.Visible:=True;
StartButton.Visible:=True;
ZeitLabel.Visible:=False;
ZeitEdit.SetFocus;
ProgressBar.Position:=0;
end;
procedure TForm1.ZeitLabelClick(Sender: TObject);
begin
Abbruch(Sender);
end;
/////////////////////////
// Minimize & Restore ///
/////////////////////////
procedure TForm1.Minimieren(Sender: TObject);
begin
ShowWindow(Handle, sw_hide);
end;
procedure TForm1.Wiederherstellen(Sender: TObject);
begin
ShowWindow(Handle, sw_show);
Application.Restore;
Application.BringToFront;
end;
/////////////////////////
/////// PopupMenu ///////
/////////////////////////
procedure TForm1.OpenItemClick(Sender: TObject);
begin
ShowWindow(Handle, sw_show);
Application.Restore;
Application.BringToFront;
end;
procedure TForm1.CloseItemClick(Sender: TObject);
begin
Close;
end;
procedure TForm1.Wert1ItemClick(Sender: TObject);
begin
Abbruch(Sender);
ZeitEdit.Text:=IntToStr(Schnell1);
StartButtonClick(Sender);
end;
procedure TForm1.Wert2ItemClick(Sender: TObject);
begin
Abbruch(Sender);
ZeitEdit.Text:=IntToStr(Schnell2);
StartButtonClick(Sender);
end;
procedure TForm1.Wert3ItemClick(Sender: TObject);
begin
Abbruch(Sender);
ZeitEdit.Text:=IntToStr(Schnell3);
StartButtonClick(Sender);
end;
/////////////////////////
///// Einstellungen /////
/////////////////////////
procedure TForm1.EinstellungenItemClick(Sender: TObject);
begin
Form2.Visible:=True;
end;
procedure TForm1.EinstLesen(Sender: TObject);
begin
Ini:=TIniFile.Create('.\Einstellungen.ini');
try
Schnell1:=Ini.ReadInteger('Schnellwahl', 'Wert1', 5);
Schnell2:=Ini.ReadInteger('Schnellwahl', 'Wert2', 10);
Schnell3:=Ini.ReadInteger('Schnellwahl', 'Wert3', 15);
Ladebalken:=Ini.ReadBool('Aussehen', 'Balken', True);
finally
Ini.Free;
end;
end;
procedure TForm1.WerteUebertr(Sender: TObject);
begin
Wert1Item.Caption:=Format('%d Minuten', [Schnell1]);
Wert2Item.Caption:=Format('%d Minuten', [Schnell2]);
Wert3Item.Caption:=Format('%d Minuten', [Schnell3]);
end;
procedure TForm1.EinstLad(Sender: TObject);
begin
if Ladebalken=True then
begin
Form1.Height:=90;
Form1.ProgressBar.Visible:=True;
end
else
begin
Form1.Height:=62;
Form1.ProgressBar.Visible:=False;
end;
end;
end.