Add(MainForm,2953706,175,119)
{
}
Add(Edit,13545452,245,119)
{
Left=75
Top=145
Width=215
Point(PHandle)
}
Add(InlineCode,7379325,252,175)
{
@Hint=#10:SRData 2.0|
DataPoints=#5:dtPH_|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|21:uses kol,Share,Debug;|0:|5:type |53: TOldOnDestroy = procedure (Sender: PObj) of object;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|24: fControl: PControl;|34: fOldOnDestroy: TOldOnDestroy;|40: procedure _OnDestroy(Sender: PObj);|10: public |21: dtPH_: THI_Event;|19: procedure Init;|23: constructor Create;|5: end;|0:|14:implementation|0:|27:procedure THiAsmClass.Init;|5:begin|42: fControl := nil; fOldOnDestroy := nil; |36: fControl := ReadControl(dtPH_,'');|75: if Assigned(fControl.OnDestroy) then fOldOnDestroy := fControl.OnDestroy;|35: fControl.OnDestroy := _OnDestroy;|4:end;|0:|31:constructor THiAsmClass.Create;|5:begin|19: inherited Create;|17: InitAdd(Init); |4:end;|0:|33:procedure THiAsmClass._OnDestroy;|5:begin|96: _debug('Тут собственно и должен выполнятся код, причём Sender и будет указателем на контрол');|34: //_debug(PControl(Sender).Text);|55: // ну собственно и вызываем родной метод если он есть|57: if Assigned(fOldOnDestroy) then fOldOnDestroy(Sender); |4:end;|0:|4:end.|
link(dtPH_,13545452:PHandle,[])
}
в hiEdit сделай сам метод:
private
...
procedure _OnDestroy(Sender: PObj);
...
procedure THIEdit.Init;
begin
...
inherited;
Control.Perform(em_LimitText,_prop_MaxLenField, 0);
Control.OnChange := _OnChange;
Control.OnDestroy := _OnDestroy; // <-
...
end;
ну и сам метод типа
procedure THIEdit._OnDestroy;
begin
_debug ('это старый метод события перед деструктором');
end;