A ver si soy capaz de explicarme. Estoy trabajando con BCB 6 y tengo un TMainMenu con unas opciones que van al mismo evento OnCLick ya que las cuatro posibilidades son para generar un listado con diferentes opciones; en la definición del TMainMenu cada una de ellas tiene asignado un valor para Tag: 11, 12, 21 y 22.
Al entrar en el evento tengo puesto esto:
Código:
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");
mOpcMenu es un TMenuItem y
Mensaje es una fución definida por mi como una mejora de un MessageDlg. Si por ejemplo selecciono la primera de las cuatro posibles opciones y al ejecutarse esa última línea si contesto con un
Sí a la pregunta el valor de mOpcMenu->Tag será 110 y a partir de aquí genero el listado que me interesa.
El problema lo tengo si el usuario selecciona luego cualquiera de las opciones otra vez. En ese caso mOpcLis->Tag se queda con el valor calculado antes; es decir: vale, para el ejemplo, 110 y tras ejecutar otra vez esa última línea pasaría a valer, por ejemplo 1100 y por lo tanto los listados ya no hacen lo que deben.
He probado haciendo
delete mOpcionLis al completar el listado, pero he visto que si hago eso me borra la opción del menú definido en el formulario. He probado poniendo static_cast y dinamic_cast o haciendo
mOpcionLis->Tag = 0 al terminar, pero da lo mismo. ¿ALguna idea?