PDA

Ver la Versión Completa : Como saber que SubMenu se ejecuto


rjsitruiz
14-07-2004, 21:55:02
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.

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
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:

procedure TForm1.MenuClick(Sender: TObject);
begin
if Sender is TMenuItem Then
Caption := TMenuItem(Sender).Caption;
end;