Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

¿Cómo sé qué opcíón del menú he elegido?

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: ¿Cómo sé qué opcíón del menú he elegido? Responder citando

Buenas a todos. Con código que encontré en el foro organizo un PopupMenu con el contenido de una tabla de la siguiente forma:
Código:
TMenuItem *mItem;
mCorreo->Items->Clear();
Query->Close();
Query->SQL->Text = "SELECT Aviso, Concepto FROM Avisos WHERE Menu = 'S' ORDER BY Concepto DESC";
Query->Open();
while (!Query->Eof)
{
          mItem = NewItem(Trim(Query->FieldByName("Concepto")->AsString), NULL, false, true, NULL, 0, FormatFloat("'Aviso'0", Query->FieldByName("Aviso")->AsInteger));
          mItem->Tag = Query->FieldByName("Aviso")->AsInteger;
          mItem->OnClick = PreCor;
          mCorreo->Items->Insert(0, mItem);
          Query->Next();
}

mItem = NewItem("-", NULL, false, true, NULL, 0, "Separador");
mCorreo->Items->Insert(0, mItem);

mItem = NewItem("Redactar", NULL, false, true, NULL, 0, "Redactar");
mItem->OnClick = Redactar;
mCorreo->Items->Insert(0, mItem);

Ahora me asalta una duda: Cuando se ejecuta el evento OnClick efectivamente va a la función declarada, pero ¿cómo hago para saber que opción del menú se ha pinchado? Todas las opciones hacen lo mismo: mandar un mensaje por correo electrónico pero cada una con un texto diferente que se guarda en la tabla Avisos.
_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

En el Onclick mira el tag:
int nV = (dynamic_cast<TMenuItem>(Sender))->Tag;
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

No me funciona. Y seguro que algo estoy haciendo mal. Embarassed El evento OnClick apunta a una función que he definido, igual para todos, en la que decidiré la acción a ejecutar en función del ítem elegido en el menú; sin embargo, no logro que compile.

Si pongo la instrucción tal cual me ha sugerido Juanma
Código:
(dynamic_cast<TMenuItem>(Sender))->Tag

me responde:
Cita:
E2031 Cannot cast from 'TObject *' to 'TMenuItem'

Y si pongo el nombre del menú donde voy introduciendo las opciones (mCorreo), entonces me dice:
Cita:
E2303 Type name expected

¿Qué puedo estar haciendo mal?
_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Lo siento, lo escribí mal...
Prueba con:
Código:
int nV = (dynamic_cast<TMenuItem>(Sender))->Tag;

(me comí el *)
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Código:
int nV = (dynamic_cast<TMenuItem>(Sender))->Tag;

en realidad se lo comió esto, porque ha vuelto a fallar.
Por si acaso lo reescribo, despues del TMenuItem esta el *
( dynamic_cast <TMenuItem>( Sender ) )->Tag;
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

¡Perfecto! Gracias Juanma. Por cierto: se te volvió a olvidar el asterisco Wink
_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Tambien funciona de la siguiente manera aun que lo que hacemos aqui es "Reinterpretar" un tipo de datos al que deseas y heredando (inherit) las funciones y atributos miembro de la clase recipiente

Código:
(reinterpret_cast<TMenuItem*>(Sender))->Tag

_________________
Cool
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.