Hola mlara.
Me llama la atención que no funcione... debería. Por lo que hice una prueba simple y me funciona bién.
Aunque no lo aclaras, creo que no te dá un error sino que simplemente no se ejecuta el código...
Me parece que el problema lo tenés en la evaluación del
Tag.
Probá esto:
.Un PopupMenu asignado a la propiedad PopupMenu del Form.
.En el PopupMenu,tres Menuitems 'nil', 'OnChange1', 'Onchange2' y en sus eventos OnClick asignado: itOnChangeClick
.Por último un Edit.
Código Delphi
[-]
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms, Dialogs, StdCtrls, Menus;
type
TForm1 = class(TForm)
Edit: TEdit;
PopupMenu1: TPopupMenu;
itNil: TMenuItem;
itOnChange1: TMenuItem;
itOnChange2: TMenuItem;
procedure itOnChangeClick(Sender: TObject);
private
procedure EditChange1(Sender: TObject);
procedure EditChange2(Sender: TObject);
public
end;
var
Form1: TForm1;
implementation {$R *.dfm}
procedure TForm1.EditChange1(Sender: TObject);
begin
ShowMessage('OnChange 1')
end;
procedure TForm1.EditChange2(Sender: TObject);
begin
ShowMessage('OnChange 2');
end;
procedure TForm1.itOnChangeClick(Sender: TObject);
begin
case TMenuItem(Sender).Tag of
1: Edit.OnChange:= nil;
2: Edit.OnChange:= EditChange1;
3: Edit.OnChange:= EditChange2;
end;
end;
end.
Tecleá en el edit seleccionando las opciones del PopupMenu...
Saludos.