Hola.
Y ya que estamos con los punteros a funciones y a métodos, este es el ejemplo anterior implementado con
puntero a método. (como para no dejar las cosas a medias...

)
Código Delphi
[-]
type
TEventoPtr= procedure(Sender: TObject) of object;
TForm1 = class(TForm)
Edit1: TEdit;
PopupMenu1: TPopupMenu;
Nil1: TMenuItem;
ProcA1: TMenuItem;
ProcB1: TMenuItem;
procedure FormCreate(Sender: TObject);
private
procedure Proc_A(Sender: TObject);
procedure Proc_B(Sender: TObject);
public
EventoPtr: TEventoPtr;
procedure MenuItmOnClick(Sender: TObject);
end;
var
Form1: TForm1;
implementation {$R *.dfm}
procedure TForm1.Proc_A(Sender: TObject);
begin
ShowMessage('Proc_A');
end;
procedure TForm1.Proc_B(Sender: TObject);
begin
ShowMessage('Proc_B');
end;
procedure TForm1.MenuItmOnClick(Sender: TObject);
begin
case TMenuItem(Sender).Tag of
1: Edit1.OnChange:= nil;
2: Edit1.OnChange:= Proc_A;
3: Edit1.OnChange:= Proc_B;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
var
i: Integer;
begin
EventoPtr:= MenuItmOnClick;
for i:= 0 to PopupMenu1.Items.Count -1 do
PopupMenu1.Items[i].OnClick:= EventoPtr;
end;
Saludos.