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 

Caption de un menú

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Caption de un menú Responder citando

Tal vez os parezca un poco enrevesado el método, pero no se me ha ocurrido uno mejor.

Tengo el menú de la imagen (es un TPopUpMenu que monto de forma dinámica en función de un TRadioGroup), por ejemplo:

Cada una de las opciones del mismo tiene un valor Tag diferente dependiendo del contenido de la opción (70, 7111, 7112, etc.); el primer dígito indica él ItemIndex del TRadioGroup, el segundo la primera opción del menú (Desconocida, etc.) y los otros, si los hay, la opción de cada uno de los siguiente submenús. Parece un poco complejo, pero es fácil en serio.

Por necesidades de la aplicación, para no tener que estar añadiendo código complejo e innecesario, me intesaría poder sacar el caption de la primera opción del menú. Por ejemplo: si he seleccionado Banco > Ctas. correctas > Por entidad me interesa quedarme con el valor Banco. Hay que tener en cuenta que las opciones pueden variar de una ejecución a otra.

En el evento OnClick del menú tengo definido esto:
Código:
void __fastcall TfLisPer::MenuClick(TObject *Sender)
{
     TMenuItem *mOpcLis = ((TMenuItem *)Sender);
     RadioGroup1->Tag = mOpcLis->Tag;
     RadioGroup1Exit(NULL);
     return;
}
//---------------------------------------------------------------------------

pero cuando voy a coger el caption con
Código:
Query->ParamByName("Literal")->AsString = mOpcLis->Items[cOpcion.c_str()[0] - 48]->Caption;

Ese cOpcion guarda el tag del TMenuItem seleccionado como un AnsiString. Al pasar por esa línea de código me da un error Menu index out of range.

En esencia ¿Cómo pudo acceder al caption de las opciones de nivel superior en un TPopUpMenu?
_________________
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 siguiente asigna el Caption del formulario con el Caption del ItemMenu padre de toda la lista de submenús:

Código:

void __fastcall TForm1::tres1Click(TObject *Sender)
{
  TMenuItem *I = static_cast<TMenuItem*>(Sender);
  while(I->Parent->Parent)
    I = I->Parent;
  Caption = I->Caption;
} 



Saludos.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Gracias por la respuesta. Ayer, después de poner el mensaje y según apgaba el PC, me di cuenta de donde estaba equivocándome: Estaba buscando el Caption en la opción seleccionada y no en el menú definido. Por eso aparece el mensaje de error. En vez de
Código:
Query->ParamByName("Literal")->AsString = mOpcLis->Items[cOpcion.c_str()[0] - 48]->Caption;

tengo que poner
Código:
Query->ParamByName("Literal")->AsString = Menu->Items->Items[cOpcion.c_str()[0] - 48]->Caption;

_________________
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

El código que te puse localice el caprino que buscas sin liarte con valores guardados en tu tag, requiere menos código y sirve para cualquier situación.

Saludos.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
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.