FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Modificar TMenuItem
Tengo un componente TMenuItem en el que necesito, en función de unos parámetros, que en una de las opciones se cree un submenú. He estado probando esto:
Código:
void __fastcall TForm1::FormCreate(TObject *Sender) { TMenuItem *mItem0 = new TMenuItem(this); TMenuItem *mItem1 = new TMenuItem(this); for (int nItem = 0; nItem < MainMenu1->Items->Count; nItem ++) { if (StringReplace(MainMenu1->Items->Items[nItem]->Caption, "&", "", TReplaceFlags() << rfReplaceAll) == "Opción 8") { mItem0 = (TMenuItem *)this->Components[nItem]; mItem0->Add(mItem1); mItem1->Caption = "Prueba 1"; mItem0 = (TMenuItem *)this->Components[nItem]; mItem0->Add(mItem1); mItem1->Caption = "Prueba 2"; mItem0 = (TMenuItem *)this->Components[nItem]; mItem0->Add(mItem1); mItem1->Caption = "Prueba 3"; break; } } } Cita:
|
#2
|
||||
|
||||
Vale. Parte del problema lo he solucionado. Simplemente se me había olvidado crear el nuevo TMenuItem.
Sin embargo, me sigue creando el submenú en la opción anterior a la que me interesa: Código:
void __fastcall TForm1::FormCreate(TObject *Sender) { TMenuItem *mItem0 = new TMenuItem(this); TMenuItem *mItem1 = new TMenuItem(this); for (int nItem = 0; nItem < MainMenu1->Items->Count; nItem ++) { mItem0 = (TMenuItem *)this->Components[nItem]; if (StringReplace(MainMenu1->Items->Items[nItem]->Caption, "&", "", TReplaceFlags() << rfReplaceAll) == "Opción 8") { mItem1 = new TMenuItem(mItem0); mItem0->Add(mItem1); mItem1->Caption = "Prueba 1"; mItem1 = new TMenuItem(mItem0); mItem0->Add(mItem1); mItem1->Caption = "Prueba 2"; mItem1 = new TMenuItem(mItem0); mItem0->Add(mItem1); mItem1->Caption = "Prueba 3"; break; } } } |
#3
|
||||
|
||||
Hola Angel.Matilla
Cita:
Código PHP:
Saludos
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#4
|
||||
|
||||
Sí, el primer elemento es cero.
No tiene sentido el error, porque comparas directamente con el caption "opción 8". El error debe estar por otro lado. Por cierto, las dos primeras líneas sobra el "= new TMenuItem...", porque mItem0 lo vas a usar como puntero a un elemento ya creado. El mItem1, lo creas manualmente. No pasa mucho porque has puesto que el dueño (Owner) será el Form, así que él lo destruirá cuando termine, pero no tiene sentido dejarlo así. ¿Para qué todo eso? Entiendo que hace, pero no sé por qué lo haces. Yo por ejemplo no me guiaría del caption de los menúes (es muy común que una vez terminada la aplicación, quieras cambiar un Caption, porque es más descriptivo que el original, hay 2 muy parecidos, etc), yo más bien: - asignaría el "mItem0->Name" por código y es lo que usaría para buscar con FindComponent - o simplemente mantendría un puntero al elemento que tendrá submenues, así no tienes que buscarlo en tiempo de ejecución (evitas el bucle principal por el TMainMenu). Pero eso depende de qué flexibilidad quiere que tengas tus menús. Podrías guardar el Name, Caption y Owner.name en la Base de datos, en un .ini o como quieras, evitas bucles y la programación es más simple. Saludos.
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
#5
|
||||
|
||||
Gracias a los dos por los comentarios. Me han ayudado mucho.
Cita:
Es que en función de otras opciones que se seleccionan en el formulario varían las opciones del menú. Una alternativa sería habilitar o no (Enabled true o false) las que se puedan elegir. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
TMenuItem en tiempo de ejecución | PaFernan99 | OOP | 2 | 06-07-2008 13:30:23 |
Error en TmenuItem | pmtzg | Varios | 1 | 28-11-2007 20:29:32 |
modificar con sql | Cosgaya | SQL | 5 | 20-12-2005 00:27:51 |
ActiveX Form & TMenuItem | neon | Internet | 0 | 15-11-2005 14:52:27 |
Invalid call typecast - As TMenuItem | dmguridi | Varios | 4 | 14-01-2005 15:49:32 |
|