Ver Mensaje Individual
  #2  
Antiguo 20-09-2019
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Reputación: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola a todos,

¿Dónde encuentras el problema? O sea, en qué punto... Sea como sea, la siguiente unidad, aunque de Delphi, acaso pueda ayudarte:

Código Delphi [-]
unit Unit1;

interface

uses
  Vcl.Forms,
  Vcl.Menus;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    // Manejador del evento click de nuestros items
    procedure MenuItemClick(Sender: TObject);
  private
    // Nuestro PopupMenu
    FPopupMenu: TPopupMenu;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

uses
  Vcl.Dialogs;

procedure TForm1.FormCreate(Sender: TObject);
var
  MenuItem: TMenuItem;
begin
  // Creamos el PopupMenu
  FPopupMenu := TPopupMenu.Create(nil);

  // Creamos un item
  MenuItem := TMenuItem.Create(FPopupMenu);
  MenuItem.Caption := 'Opción A';
  MenuItem.OnClick := Self.MenuItemClick;
  FPopupMenu.Items.Add(MenuItem);

  // Creamos otro item
  MenuItem := TMenuItem.Create(FPopupMenu);
  MenuItem.Caption := 'Opción B';
  MenuItem.OnClick := Self.MenuItemClick;
  FPopupMenu.Items.Add(MenuItem);

  // Creamos el tercer item
  MenuItem := TMenuItem.Create(FPopupMenu);
  MenuItem.Caption := 'Opción C';
  MenuItem.OnClick := Self.MenuItemClick;
  FPopupMenu.Items.Add(MenuItem);

  // Asignamos al formulario nuestro PopupMenu
  Self.PopupMenu := FPopupMenu;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  // Destruimos nuestro PopupMenu
  FPopupMenu.Free();
end;

procedure TForm1.MenuItemClick(Sender: TObject);
begin
  // Mostramos el index del item al que se ha hecho click
  ShowMessageFmt('Has pulsado en el item con index: "%d"',
   [FPopupMenu.Items.IndexOf((Sender as TMenuItem))]);
end;

end.
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 23-09-2019 a las 13:28:54.
Responder Con Cita