FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Problema al seleccionar en un TMainMenu
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"); 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? |
#2
|
||||
|
||||
Hola.
Sinceramente no comprendí a fondo como es la situación pero si en algún punto alteras el valor de la propiedad Tag y luego deseas recuperarlo, tendrás que salvarlo antes. Por ejemplo: Código PHP:
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#3
|
||||
|
||||
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(); } 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. |
#4
|
||||
|
||||
Hola.
No entiendo cual es el motivo de crear una instancia de TMenuItem en el evento RecLisClick ¿ es para resguardar el objeto original ? Por que cuando haces, Código PHP:
Un ejemplo de lo que me refiero: Código PHP:
Código PHP:
Código PHP:
Código PHP:
Pero, como ya te comenté, no sé si entiendo bien la funcionalidad de tu código y la problemática que te está acarreando. Saludos
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#5
|
||||
|
||||
Tienes razón punto por punto en todo lo que me dices. Y todo parte de un error de concepto mio: Estaba convencido que al crear esa nueva instancia, efectivamente, preservaba las propiedades del objeto original. Efectivamente la solución ha sido emplear una variable en la que guardo el valor de Tag. Muchas gracias npor tu ayuda.
|
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
TMainMenu no se muestra | brakaman | Lazarus, FreePascal, Kylix, etc. | 4 | 06-06-2014 12:13:26 |
Problema al comparar y seleccionar Listbox | javier.m866 | Varios | 14 | 14-12-2011 18:02:05 |
Como seleccionar campos de una tabla sin saber cuantos van a seleccionar | david duarte | SQL | 7 | 05-04-2010 21:15:43 |
color TMainMenu | VRO | OOP | 0 | 12-06-2008 17:45:21 |
!TmainMenu Desplegado | Carlosguiland | OOP | 1 | 09-11-2004 19:28:11 |
|