| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Sab 06 Feb, 2016 10:33 am Asunto: Modificar TMainMenu |
|
|
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;
}
}
} |
Pero al tratar de insertar la segunda opción del submenú (Prueba 2) me salta este error:
| Cita: | | exception class EMenuError with message 'Menu inserted twice' |
Además ese ítem Prueba 1 me lo inserta en la Opción 7 del TMainMenu en vez de en la que me interesa. _________________ Un saludo
Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Ultima edición por Angel el Sab 06 Feb, 2016 10:41 am, editado 1 vez |
|
| Volver arriba |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Sab 06 Feb, 2016 10:40 am Asunto: |
|
|
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;
}
}
} |
Ahora no me da el error, pero sigue colgando el submenú de Opción 7. El primer elemento del menú ¿no es el ítem 0? _________________ Un saludo
Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA) |
|
| Volver arriba |
|
 |
escafandra Master

Registrado: 29 Nov 2007Mensajes: 625Ubicación: Madrid - España
|
Publicado: Vie 12 Feb, 2016 1:15 am Asunto: |
|
|
| Código: |
void __fastcall TForm1::FormCreate(TObject *Sender)
{
TMenuItem *mItem0;
TMenuItem *mItem1;
for(int nItem = 0; nItem < MainMenu1->Items->Count; nItem ++){
if(StringReplace(MainMenu1->Items->Items[nItem]->Caption, "&", "", TReplaceFlags() << rfReplaceAll) == "Opción 8"){
mItem0 = MainMenu1->Items->Items[nItem];
mItem1 = new TMenuItem(mItem0);
mItem1->Caption = "Prueba 1";
mItem0->Add(mItem1);
mItem1 = new TMenuItem(mItem0);
mItem1->Caption = "Prueba 2";
mItem0->Add(mItem1);
mItem1 = new TMenuItem(mItem0);
mItem1->Caption = "Prueba 3";
mItem0->Add(mItem1);
break;
}
}
}
|
Saludos. |
|
| Volver arriba |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
|
| Volver arriba |
|
 |
|