unit mPinguTimer;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, jpeg, StdCtrls, ShellAPI, Menus, mmSystem, Buttons,
MPlayer, ShlObj;
type
TfrmMain =
class(TForm)
Label1: TLabel;
Timer1: TTimer;
Image2: TImage;
Image1: TImage;
btReset: TButton;
Timer2: TTimer;
SpeedButton1: TSpeedButton;
Label2: TLabel;
SpeedButton2: TSpeedButton;
Button1: TButton;
MediaPlayer1: TMediaPlayer;
procedure FormDestroy(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure Image2Click(Sender: TObject);
procedure btResetClick(Sender: TObject);
procedure Timer2Timer(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure SpeedButton2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure FormClose(Sender: TObject;
var Action: TCloseAction);
private
h, Minuten, Sekunden : Integer;
t : Real;
Lautlos : Boolean;
TaskBarNewReg : DWORD;
IconData: TNotifyIconData;
public
procedure WndProc(
var Msg: TMessage);
override;
procedure WMSysCommand(
var Message: TWMSysCommand);
message WM_SYSCOMMAND;
end;
var
frmMain: TfrmMain;
implementation {$R *.dfm}
procedure TfrmMain.WndProc(
var Msg: TMessage);
var Point: TPoint;
begin
// WM_USER + 20 ist unsere TNA Icon Nachricht
if Msg.Msg = WM_USER + 20
then
begin
// im lParam steht die Nachricht
case Msg.lParam
of
// linke Taste
WM_RBUTTONDOWN:
begin
MessageDLG('
Restzeit: ' + Formatfloat('
00', Minuten) + '
:'
+ Formatfloat('
00', Sekunden), mtInformation, [mbOk], 0);
end;
// Doppelklick
WM_LBUTTONDBLCLK:
begin
// Fenster anzeigen
frmMain.Show;
// Icon entfernen
Shell_NotifyIcon(NIM_DELETE, @IconData);
end;
end;
end
// Taskbar wurde im System registriert, Icon einfügen
else if Msg.Msg = TaskBarNewReg
then
begin
Shell_NotifyIcon(NIM_ADD, @IconData);
end;
inherited;
end;
procedure TfrmMain.WMSysCommand(
var Message: TWMSysCommand);
begin
// Fenster wurde minimiert
if Message.CmdType
and $FFF0 = SC_MINIMIZE
then
begin
Hide;
// Icon in der TNA anzeigen
Shell_NotifyIcon(NIM_ADD, @IconData);
end
else
inherited;
end;
procedure TfrmMain.FormDestroy(Sender: TObject);
begin
Shell_NotifyIcon(NIM_DELETE, @IconData);
end;
//*****************************************************************************
procedure TfrmMain.Timer1Timer(Sender: TObject);
var Faktor : Integer;
begin
Faktor := 10;
if t >= (Faktor*2)
then t := 0;
t := t + 0.5;
h := round( -( (t-Faktor)*(t-Faktor) ) + Faktor*Faktor);
Image2.Top := 150 - h;
end;
procedure TfrmMain.FormCreate(Sender: TObject);
begin
frmMain.DoubleBuffered := True;
//*******************************
// Message ID für Message merken, die gesendet wird, wenn die Taskbar im
// System registriert wird.
TaskBarNewReg := RegisterWindowMessage('
TaskbarCreated');
// IconData Struktur füllen
IconData.cbSize := SizeOf(IconData);
IconData.Wnd :=
Handle;
IconData.uID := 100;
IconData.uFlags := NIF_MESSAGE + NIF_ICON + NIF_TIP;
IconData.uCallBackMessage := WM_USER + 20;
IconData.hIcon := Application.Icon.Handle;
IconData.szTip := '
Pingu-Timer';
// Icon einfügen. Bei Bedarf sofort
//Shell_NotifyIcon(NIM_ADD, @IconData);
end;
procedure TfrmMain.Image2Click(Sender: TObject);
begin
t := 0;
Minuten := 60; Sekunden := 00;
Timer2.Enabled := true;
Timer1.Enabled := true;
Image2.Enabled := false;
btReset.Enabled := true;
end;
procedure TfrmMain.btResetClick(Sender: TObject);
begin
btReset.Enabled := false;
Label1.Caption := '
Klick auf den Pingu zum Starten';
Image2.Enabled := true;
Timer1.Enabled := false;
Timer2.Enabled := false;
Image2.Top := 150;
end;
procedure TfrmMain.Timer2Timer(Sender: TObject);
begin
if Sekunden <> 0
then Sekunden := Sekunden - 1
else begin
if Minuten <> 0
then begin
Minuten := Minuten - 1;
Sekunden := 59;
end
else begin
Minuten := 59; Sekunden := 59;
if Lautlos = false
then MessageBeep(MB_ICONEXCLAMATION);
end;
end;
Label1.Caption := '
Verbleibende Zeit: ' + Formatfloat('
00', Minuten) + '
:' + Formatfloat('
00', Sekunden);
end;
procedure TfrmMain.SpeedButton1Click(Sender: TObject);
begin
if Lautlos = true
then begin
Lautlos := false;
SpeedButton1.Caption := '
Ton ist an'
end
else begin
Lautlos := true;
SpeedButton1.Caption := '
Ton ist aus'
end;
end;
procedure TfrmMain.SpeedButton2Click(Sender: TObject);
begin
Messagedlg('
Musik: Pokémon Plinfa'#13'
Bilder sind dem Spiel NosTale.de entnommen', mtInformation, [mbOk], 0);
end;
procedure TfrmMain.Button1Click(Sender: TObject);
begin
MediaPlayer1.Close;
mediaplayer1.Open;
end;
procedure TfrmMain.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
mediaplayer1.Close;
end;
end.