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 asignar valor antes de visualizar el form
Hola a tod@s
Tengo un problema con un form. Tengo un form MDIChild que llamo desde distintos sitios. Para distinguir desde donde lo llamo utilizo la propiedad tag del form, asignandole un valor distinto segun llamo al form. Lo hago así:
Luego consulto el valor de la propidad tag y segun sea cambio los iconos de los botones (uso una toolbar) con el siguiente código:
El problema es que ponga donde ponga este código no funciona, siempre me entra en la primera parte del if sin haber cambiado el valor del tag. He probado en los eventos OnCreate, OnActivate y Onshow (Yo creo que tiene que ir aquí) pero no funciona en ninguno. Primero se ejecutan los eventos y luego se asigna el valor de la propiedad tag, por lo que no se me ejecuta bien el código. ¿Alguna sugerencia? Última edición por dec fecha: 07-01-2009 a las 13:55:23. |
#2
|
||||
|
||||
Prueba a quitar el with, o ponerlo así
__________________
Progress Openedge https://abevoelker.com/progress_open...dered_harmful/ Delphi forever... |
#3
|
|||
|
|||
Gracias por responder.
He probado lo que sugieres y nada. Se ejecuta antes el evento OnShow que la asignacion de la propiedad tag. |
#4
|
||||
|
||||
Hola, en el Onshow debería funcionarte, como te dice defcon1, al parecer se esta confundiendo con el Tag del form Actual, pero también podrías utilizar el Owner del formulario, osea su propietario solo cambiaría la forma en que estas creando el formulario.
y cuando quieras saber el propietario solo preguntas por el Owner, lee este hilo http://www.clubdelphi.com/foros/showthread.php?t=62380 y otra parte que debes considerar es lo que dice el amigo Lepe en el mensaje 6 de ese mismo hilo. Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar. |
#5
|
|||
|
|||
Otra vez, gracias por las respuestas.
He probado el código como ha dicho Caro:
Y me da el error: Código:
Project GestionArchivo.exe raised exception class EAccessViolation with message 'Access violation at address 0046D308 in module 'GestionArchivo.exe'. Read of address 00000048'. Process stopped. Use Step or Run to continue. |
#6
|
||||
|
||||
Cita:
Creo que la forma puede ser utilizando un evento del tipo AFTERSHOW y creárselo al formulario MDI. Aquí tienes un ejemplo de cómo hacerlo, aunque si buscas en los foros, también hemos hablado del tema.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#7
|
||||
|
||||
Hola de nuevo, es verdad pasa lo que indica Neftali sobre el form MDIChild y no me había dado cuenta, pero insisto no sería mas facil utilizar el Owner del formulario, ahora sobre el AccessViolation que te sale es porque estas tratando de acceder a un objeto que no ha sido creado, el codigo que te puse no debería darte error, ejecuta paso a paso e indicanos en que línea te sale el error, ahora si utilizas el Owner ya no necesitas asignar el Tag, directamente podrías hacer esto.
Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar. |
#9
|
||||
|
||||
Esa solución también es buena y debería funcionar. Personalmente me gusta utilizar AFTERSHOW, ya que es útil para otras cosas, pero esta solución de Caro te permitirá hacerlo sin codificar nada de código extra.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#10
|
||||
|
||||
Cita:
Ya sabía yo que habíamos hablado del tema. A este me refería.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#11
|
|||
|
|||
Hola otra vez.
El error me lo da justo al crear el formulario. Estoy intentando probar lo del owner, pero es una propiedad que no he usado nunca, y estoy a ver si lo consigo. Por otro lado, pregunta he estado viendo lo del aftershow, pero creo que no lo he entendido bien, no es un evento como tal ¿No?. ¿Tengo que definirlo yo? Podeís aclararme algo más sobre esto. |
#12
|
||||
|
||||
Aquí te paso un ejemplillo, con ambas maneras de hacerlo. Utilizando el evento AfterShow para detectar diferente TAG (con el que se llama) y también poder detectar desde un formulario cual es el Owner de quien lo llama (en este caso dos posibles formularios o Application).
Supongo que el ejemplo será más clarificador. Cita:
El el caso del AfterShow, lo que estamos haciendo en desde el propio Show del formulario (Román utiliza el evento OnShow, a mi me gusta más utilizar el DoShow) lanzar un mensaje a la cola de mensajes de Windows, que capturamos en el propio formulario. Con ese mensaje que capturamos ejecutamos el procedimiento AfterShow.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#13
|
|||
|
|||
Gracias, sigo probando ...
|
#14
|
||||
|
||||
Y serviria usando el Sender del objeto que abre el formulario?
__________________
La hora de acción no es hora de aprender, es necesario haber aprendido antes |
#15
|
||||
|
||||
Supongo que te refieres al parámetro que llega an OnShow, pero en este caso ese parámetro es el propio formulario, así que creo que no serviría.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#16
|
||||
|
||||
Bueno, tal vez no entendi bien la pregunta con lo del llamado de diferentes sitios.
Me imagino que es que lo abres con una opcion de menu o con un boton de una ToolBar Si es asi, funciona usando el sender
En este caso lo hago cambiando el caption de un label, pero puede servir tambien para modificar cualquier objeto del formulario antes que se abra Si los sitios desde donde mandas a abrir el formulario no son esos, entonces detallame mejor desde donde lo haces. O donde esta la imagen que quieres cambiar? en form1 o en fSalidas
__________________
La hora de acción no es hora de aprender, es necesario haber aprendido antes Última edición por JoAnCa fecha: 09-01-2009 a las 21:47:59. |
#17
|
||||
|
||||
Cita:
Sobre tu pregunta, la imagen que quiere cambiar esta en FSalidas que cambia según al formulario que lo llama. Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar. |
#18
|
||||
|
||||
Cita:
El problema es que es ecódigo funciona como se espera con formularios normales. Si en el OnShow del formulario 2 colocas el código:
Verás que para cada opción aparece un caption diferente. Pero no así si son formularios MDI, ya que el OnShow se ejecuta directamente desde el create antes de poder hacer las asignaciones. Más bien el problema no es asignar los valores, sino en qué eventos "rescatarlos".
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#19
|
||||
|
||||
Ok, ahora si ya entiendo lo que quiere hacer el amigo drykea
Tengo que pensar un poco mas, en concreto es buscar en que evento poner el codigo para que funcione bien
__________________
La hora de acción no es hora de aprender, es necesario haber aprendido antes Última edición por JoAnCa fecha: 10-01-2009 a las 16:56:47. |
#20
|
||||
|
||||
Y para eso va perfecto el AfterShow, que comentábamos...
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Calcular un valor antes de guardar en una tabla | FGarcia | Varios | 11 | 21-11-2007 05:22:07 |
Saber el valor auto_increment antes del insert | cahosoft | PHP | 9 | 13-10-2006 09:46:47 |
Codigo antes de mostrar form - Maximizar | lafirma | Varios | 20 | 03-08-2006 23:46:30 |
Asignar valor a un DBLOOKUPCOMBOBOX | lucasarts_18 | OOP | 3 | 30-10-2005 23:35:21 |
Visualizar el valor de un autoincremental | jbaleriola | MySQL | 3 | 23-06-2004 23:26:47 |
|