In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

tUpDown y tEdit (y familia)

Foro de Xailer profesional en español
Responder
joseluis
Mensajes: 642
Registrado: Jue Sep 08, 2005 12:54 pm

tUpDown y tEdit (y familia)

Mensaje por joseluis »

Hola,
Tengo un tMaskEdit (o cualquiera de la familia) con un tUpdown y el
onchange del tMaskedit.
Parece ser que cuando se crea el formulario, al llegar al tupdown, éste
dispara el onchange del maskedit. Y eso es un problema por que hay
controles que sencillamente no se han creado todaví­a.
Os dejo un proyecto. Si utilizais el form4.prg todo funciona bien (no
hay updown). En el form2.prg sale un error de que no existe un
componente del formulario.
Espero haberme explicado bien.
Saludos,
José Luis Capel
--
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5718
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

tUpDown y tEdit (y familia)

Mensaje por jfgimenez »

José Luis,
> Tengo un tMaskEdit (o cualquiera de la familia) con un tUpdown y el
> onchange del tMaskedit.
>
> Parece ser que cuando se crea el formulario, al llegar al tupdown, éste
> dispara el onchange del maskedit. Y eso es un problema por que hay
> controles que sencillamente no se han creado todavía.
>
> Os dejo un proyecto. Si utilizais el form4.prg todo funciona bien (no
> hay updown). En el form2.prg sale un error de que no existe un
> componente del formulario.
>
> Espero haberme explicado bien.
Me temo que este tipo de problemas estarán siempre presentes. No podemos
parar los eventos durante la creación del formulario porque hay eventos que
interesa que se disparen. Pero por otro lado, algunos eventos convendría que
no se dispararan. Pero me temo que no es posible seleccionar a priori qué
eventos se deja pasar y cuales no.
En el ejemplo en cuestión, es el control TUpDown (a nivel del API) el que
provoca que se dispare el OnChange del TMaskEdit. La solución pasa por
controlar que ::oMaskEdit2 != Nil, o asignar el evento en el OnInitialize
del formulario, donde ya están creados todos los controles.
--
Un saludo,
José F. Giménez
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
joseluis
Mensajes: 642
Registrado: Jue Sep 08, 2005 12:54 pm

tUpDown y tEdit (y familia)

Mensaje por joseluis »

José
>
> Me temo que este tipo de problemas estarán siempre presentes. No podemos
> parar los eventos durante la creación del formulario porque hay eventos que
> interesa que se disparen. Pero por otro lado, algunos eventos convendrí­a que
> no se dispararan. Pero me temo que no es posible seleccionar a priori qué
> eventos se deja pasar y cuales no.
>
Ostras... eso es un problemilla... Pensaba que el CreateForm del
formulario era como un punto donde no se disparaban eventos hasta que
todo estaba creado.
> En el ejemplo en cuestión, es el control TUpDown (a nivel del API) el que
> provoca que se dispare el OnChange del TMaskEdit. La solución pasa por
> controlar que ::oMaskEdit2 != Nil, o asignar el evento en el OnInitialize
> del formulario, donde ya están creados todos los controles.
>
Me quedo con la última opción. No obstante serí­a interesante saber a
priori cuales controles (en su creación) disparan eventos. Más que nada
por que para averiguar qué estaba ocurriendo me he pasado un ratillo
viendo como se disparan eventos y en cual orden (lo cual me ha venido de
perlas, todo hay que decirlo).
Un saludo y gracias,
José Luis Capel
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5718
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

tUpDown y tEdit (y familia)

Mensaje por jfgimenez »

José Luis,
> Ostras... eso es un problemilla... Pensaba que el CreateForm del
> formulario era como un punto donde no se disparaban eventos hasta que todo
> estaba creado.
No, el CreteForm() es donde se crean el propio formulario y todos los
componentes y controles que contiene. Pero los eventos se siguen disparando.
Si los bloquearamos no tendrían sentido eventos como OnCreate en cada
control.
Repasa el artículo:
http://levante3000.org/blog/blogs/index ... tecnicas_a vanzadas_con_xailer_que_ocurre&more=1&c=1&tb=1&a mp;pb=1
> Me quedo con la última opción. No obstante sería interesante saber a
> priori cuales controles (en su creación) disparan eventos. Más que nada
> por que para averiguar qué estaba ocurriendo me he pasado un ratillo
> viendo como se disparan eventos y en cual orden (lo cual me ha venido de
> perlas, todo hay que decirlo).
No hay nada como conocer qué ocurre exactamente en cada momento para saber
cómo resolver los problemas ;-)
--
Un saludo,
José F. Giménez
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
Responder