So hier (nicht auf die bedürfnisse des OP sondern nur als beispiel)
Delphi-Quellcode:
unit Interceptors;
interface
uses
{hier die original unit(s) rein die man intercepten möchte}
Vcl.StdCtrls;
// es wird bestimmt was fehlen zum kompilieren, ich habe nur das wichtigste per copy/paste eingefügt um zu demonstrieren was ich meine
type
TButton =
class(
Vcl.StdCtrls.TButton)
strict private
fLastClickTime: TDateTime;
fClickWaitPeriod: Int64;
fEnableClickWaitPeriod: Boolean;
public
constructor Create(AOwner: TComponent);
override;
procedure Click;
override;
public
property ClickWaitPeriod: Int64
read fClickWaitPeriod
write fClickWaitPeriod;
property EnableClickWaitPeriod: Boolean
read fEnableClickWaitPeriod
write fEnableClickWaitPeriod;
end;
implementation
{ TButton }
constructor TButton.Create(AOwner: TComponent);
begin
fClickWaitPeriod := 1;
fLastClickTime := Now;
fEnableClickWaitPeriod := True;
inherited Create(AOwner);
end;
procedure TButton.Click;
begin
if (EnableClickWaitPeriod
and (SecondsBetween(Now, fLastClickTime) >=
ClickWaitPeriod))
then
begin
fLastClickTime := Now;
inherited Click;
end
else if not EnableClickWaitPeriod
then
inherited Click
else
Beep;
end;
end.
Wenn man nun in einem projekt diese
unit als letztes einbindet, funktioniert der button etwas anders.
So sollte man doch auch sein Event abändern können, oder?