Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Como saber que SubMenu se ejecuto (https://www.clubdelphi.com/foros/showthread.php?t=12389)

rjsitruiz 14-07-2004 21:55:02

Como saber que SubMenu se ejecuto
 
Hola:

Tengo un MainMenu con un SubMenu de dos Items... cada Items ejecuta un mismo formulario. Como puedo saber que SubMenu fue el que llamo a mi formulario.

Saludos

delphi.com.ar 14-07-2004 22:00:48

Utilizando el parámetro sender del evento OnClick. En este parámetro vendrá el objeto que disparó el evento.

Saludos!

roman 14-07-2004 22:03:44

Podrías declarar una propiedad pública del formulario a la que le asignas un valor que identifique el item. Tal asignación la haces antes de mostrar el formulario. Así, el formulario mira el valor de dicha propiedad (por ejemplo en su evento OnShow) para saber quién lo llamó.

// Saludos

rjsitruiz 14-07-2004 22:04:54

Ahi es donde esta la cosa... no sé como sacar del Evento OnClick el parámetro que me dices.

jachguate 14-07-2004 22:07:16

No tenes que sacarlo de ningun lado...

Simplemente "pasa" al evento.

Código Delphi [-]
Procedure TForm1.button1click(sender : TObject);

Begin
  // aqui podes invocar a sender sin problemas!
  if Sender is TButton Then
    ShowMessage('botón');
end;

Hasta luego.

;)

rjsitruiz 14-07-2004 22:25:19

Pues mira pa' eso.. yo creia que era mas complicado...

Una vez mas gracias

delphi.com.ar 14-07-2004 22:33:04

Código Delphi [-]
type
  TForm1 = class(TForm)
    MainMenu1: TMainMenu;
    Menu1: TMenuItem;
    Menu2: TMenuItem;
    procedure MenuClick(Sender: TObject);
  private
  public
  end;

implementation

{$R *.DFM}

procedure TForm1.MenuClick(Sender: TObject);
begin
  if Sender = Menu1 Then
    ..
  else
    ..
end;

También podrías hacer un cast del sender, para tratar a todos los objetos de un tipo por igual:
Código Delphi [-]
procedure TForm1.MenuClick(Sender: TObject);
begin
  if Sender is TMenuItem Then
    Caption := TMenuItem(Sender).Caption;
end;


La franja horaria es GMT +2. Ahora son las 22:28:47.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi