Ver Mensaje Individual
  #6  
Antiguo 24-08-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
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.

Última edición por ecfisa fecha: 24-08-2010 a las 01:01:11.
Responder Con Cita