Изменение адреса метода формы
Причем не published!
Например есть две пользовательские процедуры
procedure TForm1.Aproc;
begin
Close;
end;
procedure TForm1.Bproc;
begin
Caption := 'Cannot close';
end;
Необходимо, чтобы при вызове Aproc вызывалась Bproc.
Может такой вариант тебя устроит:
type
// объявление типа заменяемой функции
TFunction = function (Sender : TObject): integer of object;
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
fn : TFunction;
// опимание 2-х различных функций удовл. формату TFunction
function A (Sender : TObject): integer;
function B (Sender : TObject) : integer;
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
{ TForm1 }
function TForm1.A(Sender: TObject): integer;
begin
Halt(0);
end;
function TForm1.B(Sender: TObject): integer;
begin
ShowMessage('Cannot close');
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
fn := B;
fn(Nil);
fn := A;
fn(Nil);
end; :)