Interval определен как word, поэтому значение 65,535 является максимальным для данного свойства. Не знаю насчет других компонентов, но для использования таймера с интервалом больше минуты, рекомендую следующий код:
var
numOfMinutes: integer;
...
numOfMinutes := 30;
timer1.interval := 60000;
timer1.enabled := true;
...
procedure Timer1Timer;
begin
dec (numOfMinutes);
if numOfMinutes = 0 then begin { делайте все, что вы хотели сделать } end; end; |
unit Alarm; { Авторские права (c) 1996 Eric Nielsen. Все права защищены. Разрешено использовать, копировать, изменять и распространять для НЕКОММЕРЧЕСКИХ или КОММЕРЧЕСКИХ целей, но без гарантии. } interface uses SysUtils, WinTypes, WinProcs, StdCtrls, Controls, Classes, ExtCtrls, Forms; type TForm1 = class(TForm) Timer1: TTimer; Button1: TButton; Label1: TLabel; Label2: TLabel; Edit1: TEdit; procedure Timer1Timer(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } procedure FormAlarm(Sender: TObject); end; var Form1: TForm1; implementation {$R *.DFM} type TAlarm=class(TComponent) private FAlarmTime : TDateTime; FOnAlarm: TNotifyEvent; FTimer : TTimer; FEnabled : Boolean; procedure SetOnAlarm(Value: TNotifyEvent); procedure SetEnabled(Value: Boolean); procedure SetAlarm(Value: TDateTime); procedure AlarmTimer(Sender: TObject); protected procedure Alarm; dynamic; procedure UpdateAlarm; public property AlarmTime : TDateTime read FAlarmTime write SetAlarm; constructor Create(AOwner: TComponent); override; destructor Destroy; override; published property OnAlarm: TNotifyEvent read FOnAlarm write SetOnAlarm; property Enabled: Boolean read FEnabled write SetEnabled default False; end; procedure TAlarm.SetOnAlarm(Value: TNotifyEvent); begin FOnAlarm := Value; UpdateAlarm; end; procedure TAlarm.SetEnabled(Value : Boolean); begin FEnabled := Value; UpdateAlarm; end; procedure TAlarm.SetAlarm(Value: TDateTime); begin FAlarmTime := Value; UpdateAlarm; end; procedure TAlarm.Alarm; begin If Assigned(FOnAlarm) then FOnAlarm(Self); end; procedure TAlarm.UpdateAlarm; begin If Assigned(FOnAlarm) and FEnabled Then FTimer.Enabled := True Else FTimer.Enabled := False; end; constructor TAlarm.Create(AOwner: TComponent); begin FTimer := TTimer.Create(Self); With FTimer do Begin Enabled := False; Interval := 250; OnTimer := AlarmTimer; End; end; destructor TAlarm.Destroy; begin FEnabled := False; UpdateAlarm; FTimer.Free; end; procedure TAlarm.AlarmTimer(Sender: TObject); begin If Now >= FAlarmTime Then Alarm; end; procedure TForm1.Timer1Timer(Sender: TObject); begin Label1.Caption := DateTimeToStr(Now); end; procedure TForm1.Button1Click(Sender: TObject); begin Label2.Caption := 'Ожидание...'; With TAlarm.Create(Self) do begin AlarmTime := StrToDateTime(Edit1.Text); OnAlarm := FormAlarm; Enabled := True; end; end; procedure TForm1.FormAlarm(Sender: TObject); begin (Sender as TAlarm).Free; Label2.Caption := 'Бииииип!'; end; end. |
[001628]