Элемент управления Edit, реагирующий на событие OnTimer
Как-то раз встала такая проблема: если пользователь какое-то время ничего не вводит в элемент управления Edit, то предупредить его об этом.
unit EditOnTime;
interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls,
Forms, Dialogs, ExtCtrls, StdCtrls;
type
TEditOnTime = class(TEdit)
private
FInterval: integer;
FTimer: TTimer;
FOnTimer: TNotifyEvent;
procedure SetInterval(Interval: integer);
procedure Timer(Sender: TObject);
protectedprocedure KeyPress(var Key: char); override;
publicconstructor Create(AOwner: TComponent); override;
destructor Destroy; override;
publishedproperty Interval: integer read FInterval write SetInterval default 750;
property OnTimer: TNotifyEvent read FOnTimer write FOnTimer;
end;
procedureregister;
implementation//******************* RegisterComponent// Здесь мы регистрируем компонент в IDEprocedureregister;
begin
RegisterComponents('MPS', [TEditOnTime]);
end;
//******************* TEditOnTime.SetInterval// устанавливаем интервал таймераprocedure TEditOnTime.SetInterval(Interval: integer);
begin
FInterval := Interval;
if Assigned(FTimer) then
FTimer.Interval := FInterval;
end;
//******************* TEditOnTime.Createconstructor TEditOnTime.Create(AOwner: TComponent);
begin
FInterval := 750;
inherited Create(AOwner);
ifnot (csDesigning in ComponentState) thentry
FTimer := TTimer.Create(self);
FTimer.Enabled := false;
FTimer.Interval := FInterval;
FTimer.OnTimer := Timer;
except
FreeAndNil(FTimer);
end;
end;
//******************* TEditOnTime.Destroydestructor TEditOnTime.Destroy;
beginif Assigned(FTimer) then
FreeAndNil(FTimer);
inherited Destroy;
end;
//******************* TEditOnTime.OnTimerprocedure TEditOnTime.Timer(Sender: TObject);
begin
FTimer.Enabled := false;
if Assigned(FOnTimer) then
FOnTimer(self);
end;
//******************* TEditOnTime.KeyPressprocedure TEditOnTime.KeyPress(var Key: char);
begin
FTimer.Enabled := false;
inherited KeyPress(Key);
FTimer.Enabled := (Text <> '') and Assigned(FTimer)
and Assigned(FOnTimer);
end;
end.
Статья Элемент управления Edit, реагирующий на событие OnTimer раздела Компоненты и Классы TEdit может быть полезна для разработчиков на Delphi и FreePascal.
Комментарии и вопросы
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.