FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
Caption de un menú
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; } //--------------------------------------------------------------------------- Código:
Query->ParamByName("Literal")->AsString = mOpcLis->Items[cOpcion.c_str()[0] - 48]->Caption; En esencia ¿Cómo pudo acceder al caption de las opciones de nivel superior en un TPopUpMenu? |
#2
|
|||
|
|||
Con el parent puedes acceder al elemento padre y asi hasta encontrar la raiz.
ShowMessage(TMenuItem(Sender).Parent.Parent.Caption); Adicional tendrias que validar que exista ese elemento para que no te tire error. Saludos. |
#3
|
||||
|
||||
Lo siguiente asigna el Caption del formulario con el Caption del ItemMenu padre de toda la lista de submenús:
Código PHP:
Saludos. |
#4
|
||||
|
||||
Simplificando, no es necesario realizar tanto cast y se puede escribir así:
Código PHP:
Saludos. |
#5
|
||||
|
||||
Gracias por las respuestas. 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; Código:
Query->ParamByName("Literal")->AsString = Menu->Items->Items[cOpcion.c_str()[0] - 48]->Caption; Última edición por Angel.Matilla fecha: 09-02-2017 a las 09:53:13. |
#6
|
||||
|
||||
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. |
#7
|
||||
|
||||
Sí, no te lo niego. El problema es que el menú es dinámico y sus valores dependen de una serie de opciones que no tienen por qué repetirse; por eso es el follón de usar los tag de las opciones.
|
#8
|
||||
|
||||
Par no variar tenías razón en tu sugerencia; es muchísimo más sencilla.
|
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Usar la tecla menú del movil para mostrar un menú | cocute | Desarrollo en Delphi para Android | 0 | 06-06-2014 13:59:08 |
iconos para el el menu main o pop menu... | vroa74 | Gráficos | 0 | 06-10-2008 15:54:56 |
Cambiar Caption | Caral | Varios | 13 | 08-02-2008 14:22:13 |
Imagen o texto sobre el menu / menu con align / menu movible | dajaji | Varios | 12 | 21-09-2007 00:30:19 |
Agregar un item de menu al "System Menu" | Neftali [Germán.Estévez] | Trucos | 0 | 30-06-2006 17:59:41 |
|