Такой вопросик. Можно ли создав свой класс на основе TTimer написать свой обработчик процедуры onTimer. Как это сделать, что то у меня выскакивают ошибки при использовании моего класса.
Код:
type
TLabelTimer = class(TTimer)
private
A:boolean;
T1:TTimer;
protected
procedure onTimer(Component: TLabeledEdit);
procedure Ed_L_Style_Red(Component: TLabeledEdit);
procedure Ed_L_Style_Custom(Component: TLabeledEdit);
public
constructor Create(mSec:Integer;Form:TForm;LabelEdit:TComponent);
published
end;
THintTimer = class(TTimer)
private
procedure HintTLabeledEdit(Component: TLabeledEdit;S:String;Form:TForm);
protected
H:THintWindow;
Lab:TLabelTimer;
HintRec:TRect;
procedure onTimer(Component: TLabeledEdit);
procedure Hint_Clear();
public
constructor Create(mSec:Integer;Form:TForm;LabelEdit:TComponent);// override;
procedure Start(Massage:string);
// destructor Destroy; override;
published
end;
Код:
{ THintTimer }
constructor TLabelTimer.Create(mSec:Integer;Form:TForm;LabelEdit:TComponent);
begin
inherited Create(Form);
Self.Interval:=mSec;
A:=false;// ïåðåêëþ÷àëêà
end;
procedure TLabelTimer.Ed_L_Style_Custom(Component: TLabeledEdit);
begin
Component.EditLabel.Font.Color:=$00000000;
Component.EditLabel.Font.Style:=Component.EditLabel.Font.Style-[fsBold];
end;
procedure TLabelTimer.Ed_L_Style_Red(Component: TLabeledEdit);
begin
Component.EditLabel.Font.Color:=$000000FF;
Component.EditLabel.Font.Style:=Component.EditLabel.Font.Style+[fsBold];
end;
procedure TLabelTimer.onTimer(Component: TLabeledEdit);
begin
inherited Timer;
if A then
begin
Ed_L_Style_Red(Component);
A:=false;
end
else
begin
Ed_L_Style_Custom(Component);
A:=true;
end;
end;
procedure THintTimer.onTimer(Component: TLabeledEdit);
begin
Hint_Clear;
Lab.Ed_L_Style_Custom(Component);
Destroy;
end;
procedure THintTimer.Hint_Clear;
begin
if h<>nil then
H.ReleaseHandle;
end;
procedure THintTimer.Start(Massage:string);
begin
H.ActivateHint(HintRec,Massage);
Self.Enabled:=true;
Lab.Enabled:=true;
end;
{ THintTimer }
constructor THintTimer.Create(mSec:Integer;Form:TForm;LabelEdit:TComponent);
begin
inherited Create(Form);
H:=THintWindow.Create(Form);
Lab:=TLabelTimer.Create(mSec,Form,LabelEdit);
end;
procedure THintTimer.HintTLabeledEdit(Component: TLabeledEdit;S:String;Form:TForm);
begin
HintRec.Left:=Form.Left+Component.Left;
HintRec.Top:=Form.Top+Component.Top-20;
HintRec.Right:=Form.Left+Component.Left+Length(S)*5;
HintRec.Bottom:=Form.Top+Component.Top+10;
end;
Кто знает, может по другому надо этот компонент обявлять? Я его обявляю так
Код:
var Hint:THintTimer;
Hint.Start('gggggggggggggg');
Hint.OnTimer(Self);