Gracias por tu respuesta ecfisa. Ya sabía yo que iba a ser difícil entender la pregunta. Lo cierto es que algo similar a eso lo he intentado.
Código:
void __fastcall TfPersona::RecLisClick(TObject *Sender)
{
TMenuItem *mOpcionLis = new TMenuItem(this);
mOpcionLis = static_cast<TMenuItem *>(Sender);
mOpcMenu = mOpcionLis;
mOpcMenu->Tag = 10 * mOpcionLis->Tag + 2 - Mensaje(2, "¿Desea diferenciar situaciones?", "Sí\nNo"); // Calculo Tag
Application->CreateForm(__classid(TfLisRec), &fLisRec);
[...]
fLisRec->ShowModal();
delete fLisRec;
mOpcionLis->Tag = 0;
this->SetFocus();
}
Sin embargo a pesar de esa línea, cuando vuelve a ejecutarse el evento porque el usuario selecciona una nueva opción no me pone a cero ese valor del Tag y me guarda no ya el del ítem seleccionada si no que guarda el que se ha calculado en
Calculo Tag. Es decir si en el cálculo ha salido que mOpcMenu->Tag vale 110, ese valor me lo traslada a mOpcionLis->Tag. Y ahí si que me pierdo del todo. Y ese Tag, una vez calculado, no lo toco para nada y sólo lo empleo en bucles
switch...case.
Otra de las cosas que he probado es, dado que cuando se entra en el evento hay un new TMenuItem, borrar (
delete mOpcionLis) el objeto, pero me he encontrado que haciendo eso me borra también la opción que está definida en el formulario.