007
2003-10-11, 22:25:18
Hab mir vorgenommen zur Übung einen kleinen Wecker zu fabrizieren, der dann nach und nach ausgebaut wird, momentan ist er noch recht simpel gehalten. Wenn ich das Programm starte krieg ich nach kurzer Zeit die Fehlermeldung die unten angehängt ist. Bitte helft mir...
unit wecker;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, Grids;
type
TUhrFormular = class(TForm)
Panel1: TPanel;
AlarmEdit: TEdit;
TimeText: TLabel;
FontButton: TButton;
Label2: TLabel;
FontDialog: TFontDialog;
Timer: TTimer;
AlarmActive: TCheckBox;
AlarmList: TStringGrid;
SizeButton: TButton;
procedure TimerTimer(Sender: TObject);
procedure FontButtonClick(Sender: TObject);
procedure SizeButtonClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure AlarmListKeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
SmallSize: Boolean;
function IsTimeOver(Alarm: string): Boolean;
procedure AlarmMessage(Alarm: string);
procedure SetBigSize;
procedure SetSmallSize;
public
{ Public declarations }
end;
var
UhrFormular: TUhrFormular;
implementation
{$R *.dfm}
function TUhrFormular.IsTimeOver(Alarm: string):Boolean;
var
AlarmTime: TDateTime;
begin
Result := False;
if Alarm <> '' then begin
AlarmTime := StrToTime(Alarm);
Result := Time > AlarmTime;
end;
end;
procedure TUhrFormular.AlarmMessage(Alarm: string);
begin
Application.BringToFront;
MessageBeep($FFFF);
ShowMessage('Alarm');
end;
procedure TUhrFormular.TimerTimer(Sender: TObject);
var
i: Byte;
FoundAlarm: string;
begin
TimeText.Caption := TimeToStr(Time);
try
if AlarmActive.Checked then begin
if IsTimeOver(AlarmEdit.Text) then begin
FoundAlarm := AlarmEdit.Text;
AlarmEdit.Text := '';
AlarmMessage('Primärer Alarm: '+FoundAlarm);
end;
for i := 1 to AlarmList.RowCount-1 do
if IsTimeOver(AlarmList.Cells[0, i]) then begin
FoundAlarm := AlarmList.Cells[0, i];
AlarmList.Cells[0, i] := '';
FoundAlarm := 'Alarmzeit: '+FoundAlarm+' ('+AlarmList.Cells[1, i]+')';
AlarmMessage(FoundAlarm);
end;
end;
except
on E: EConvertError do begin
AlarmActive.Checked := False;
MessageDlg('Ungültige Eingabe, bitte korrigieren:'#13#10 + E.Message, mtError, [mbOk], 0);
end;
end;
end;
procedure TUhrFormular.FontButtonClick(Sender: TObject);
begin
FontDialog.Font := TimeText.Font;
FontDialog.Execute;
TimeText.Font := FontDialog.Font
end;
procedure TUhrFormular.SetBigSize;
begin
ClientWidth := AlarmList.Left+AlarmList.Width+10;
ClientHeight := Panel1.Top+Panel1.Height+10;
SmallSize := false;
SizeButton.Caption := '<<<<';
AlarmList.Enabled := true;
AlarmEdit.Enabled := true;
AlarmActive.Enabled := true;
end;
procedure TUhrFormular.SetSmallSize;
begin
ClientHeight := Panel1.Top-1;
ClientWidth := AlarmList.Left-1;
SmallSize := true;
SizeButton.Caption := 'Wecker >>>>';
end;
procedure TUhrFormular.SizeButtonClick(Sender: TObject);
begin
if SmallSize then SetBigSize
else SetSmallSize;
end;
procedure TUhrFormular.FormCreate(Sender: TObject);
begin
AlarmList.Cells[0,0] := 'Alarmzeit';
AlarmList.Cells[1,0] := 'Alarmhinweis';
SetSmallSize;
end;
procedure TUhrFormular.AlarmListKeyPress(Sender: TObject; var Key: Char);
begin
AlarmActive.Checked := False;
end;
end.
Wo ist mein Fehler *nixmehrkapier*
unit wecker;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, Grids;
type
TUhrFormular = class(TForm)
Panel1: TPanel;
AlarmEdit: TEdit;
TimeText: TLabel;
FontButton: TButton;
Label2: TLabel;
FontDialog: TFontDialog;
Timer: TTimer;
AlarmActive: TCheckBox;
AlarmList: TStringGrid;
SizeButton: TButton;
procedure TimerTimer(Sender: TObject);
procedure FontButtonClick(Sender: TObject);
procedure SizeButtonClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure AlarmListKeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
SmallSize: Boolean;
function IsTimeOver(Alarm: string): Boolean;
procedure AlarmMessage(Alarm: string);
procedure SetBigSize;
procedure SetSmallSize;
public
{ Public declarations }
end;
var
UhrFormular: TUhrFormular;
implementation
{$R *.dfm}
function TUhrFormular.IsTimeOver(Alarm: string):Boolean;
var
AlarmTime: TDateTime;
begin
Result := False;
if Alarm <> '' then begin
AlarmTime := StrToTime(Alarm);
Result := Time > AlarmTime;
end;
end;
procedure TUhrFormular.AlarmMessage(Alarm: string);
begin
Application.BringToFront;
MessageBeep($FFFF);
ShowMessage('Alarm');
end;
procedure TUhrFormular.TimerTimer(Sender: TObject);
var
i: Byte;
FoundAlarm: string;
begin
TimeText.Caption := TimeToStr(Time);
try
if AlarmActive.Checked then begin
if IsTimeOver(AlarmEdit.Text) then begin
FoundAlarm := AlarmEdit.Text;
AlarmEdit.Text := '';
AlarmMessage('Primärer Alarm: '+FoundAlarm);
end;
for i := 1 to AlarmList.RowCount-1 do
if IsTimeOver(AlarmList.Cells[0, i]) then begin
FoundAlarm := AlarmList.Cells[0, i];
AlarmList.Cells[0, i] := '';
FoundAlarm := 'Alarmzeit: '+FoundAlarm+' ('+AlarmList.Cells[1, i]+')';
AlarmMessage(FoundAlarm);
end;
end;
except
on E: EConvertError do begin
AlarmActive.Checked := False;
MessageDlg('Ungültige Eingabe, bitte korrigieren:'#13#10 + E.Message, mtError, [mbOk], 0);
end;
end;
end;
procedure TUhrFormular.FontButtonClick(Sender: TObject);
begin
FontDialog.Font := TimeText.Font;
FontDialog.Execute;
TimeText.Font := FontDialog.Font
end;
procedure TUhrFormular.SetBigSize;
begin
ClientWidth := AlarmList.Left+AlarmList.Width+10;
ClientHeight := Panel1.Top+Panel1.Height+10;
SmallSize := false;
SizeButton.Caption := '<<<<';
AlarmList.Enabled := true;
AlarmEdit.Enabled := true;
AlarmActive.Enabled := true;
end;
procedure TUhrFormular.SetSmallSize;
begin
ClientHeight := Panel1.Top-1;
ClientWidth := AlarmList.Left-1;
SmallSize := true;
SizeButton.Caption := 'Wecker >>>>';
end;
procedure TUhrFormular.SizeButtonClick(Sender: TObject);
begin
if SmallSize then SetBigSize
else SetSmallSize;
end;
procedure TUhrFormular.FormCreate(Sender: TObject);
begin
AlarmList.Cells[0,0] := 'Alarmzeit';
AlarmList.Cells[1,0] := 'Alarmhinweis';
SetSmallSize;
end;
procedure TUhrFormular.AlarmListKeyPress(Sender: TObject; var Key: Char);
begin
AlarmActive.Checked := False;
end;
end.
Wo ist mein Fehler *nixmehrkapier*