Ver Mensaje Individual
  #1  
Antiguo 08-02-2017
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Reputación: 19
Angel.Matilla Va por buen camino
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;
}
//---------------------------------------------------------------------------
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?
Responder Con Cita