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.

Version 1.3 Problemas

Foro público de Xailer en español
Responder
correo
Mensajes: 109
Registrado: Mar Nov 22, 2005 7:15 pm

Version 1.3 Problemas

Mensaje por correo »

He vuelto a compilar el aplicativo con la nueva versión y he detectado un
comportamiento impropio .
Me explico.
EN los campos TEdit y tDbEdit que son clave de otras tablas de respaldo , he
habilitado el metodo como sigue
En el objeto oCentro y el evento OnKeyDown escribo
METHOD CentroClaveKeyDown( oSender, nKey, nFlags ) CLASS TPacientesFicha
if nKey == VK_F2
oSender:Value := Ges_Ctr( Self, .t., oSender:Value )
::CentroClaveExit( oSender ) //Para poner el nombre del centro
end if
RETURN Nil
Como se aprecia este evento se activa si pulso la tecla F2 ,disparando la
función de llamada a la lista de Centros que me devolverá el valor del
centro buscado
Este procedimiento lo tengo a lo largo de la aplicación en todas las
llamadas a las tablas auxiliares
EL problema es que me lanza la llamada a la función 2 veces
He detectado que la primera vez ,me retorna el valor y me refresca el objeto
oSender correctamente ,pero inexplicablemente me vuelve a lanzar la llamada
una 2ª vez (no se porque no una 3ª o una 4ª) .Espero explicar bien el
problema porque asi no puedo instalar la aplicación .
Un saludo y gracias de antemano.
Xevi
Mensajes: 1706
Registrado: Jue Sep 08, 2005 12:58 pm

Version 1.3 Problemas

Mensaje por Xevi »

Juan José,
Prueba a "borrar" el valor de la última tecla pulsada, retornando 0 en los casos que utilizes una tecla determinada.
METHOD CentroClaveKeyDown( oSender, nKey, nFlags ) CLASS TPacientesFicha
if nKey == VK_F2
oSender:Value := Ges_Ctr( Self, .t., oSender:Value )
::CentroClaveExit( oSender ) //Para poner el nombre del centro
RETURN 0 //Si así­ no funciona prueba a poner nKey := 0
end if
RETURN Nil
Un Saludo,
Xevi.
"Juan José Garcí­a" <correo@jjgsoft.biz> escribió en el mensaje news:4602352b$[email=1@news.xailer.com...]1@news.xailer.com...[/email]
> He vuelto a compilar el aplicativo con la nueva versión y he detectado un
> comportamiento impropio .
> Me explico.
>
> EN los campos TEdit y tDbEdit que son clave de otras tablas de respaldo , he
> habilitado el metodo como sigue
>
> En el objeto oCentro y el evento OnKeyDown escribo
>
> METHOD CentroClaveKeyDown( oSender, nKey, nFlags ) CLASS TPacientesFicha
>
> if nKey == VK_F2
> oSender:Value := Ges_Ctr( Self, .t., oSender:Value )
> ::CentroClaveExit( oSender ) //Para poner el nombre del centro
> end if
>
> RETURN Nil
>
> Como se aprecia este evento se activa si pulso la tecla F2 ,disparando la
> función de llamada a la lista de Centros que me devolverá el valor del
> centro buscado
>
> Este procedimiento lo tengo a lo largo de la aplicación en todas las
> llamadas a las tablas auxiliares
>
> EL problema es que me lanza la llamada a la función 2 veces
>
> He detectado que la primera vez ,me retorna el valor y me refresca el objeto
> oSender correctamente ,pero inexplicablemente me vuelve a lanzar la llamada
> una 2ª vez (no se porque no una 3ª o una 4ª) .Espero explicar bien el
> problema porque asi no puedo instalar la aplicación .
>
> Un saludo y gracias de antemano.
>
>
>
--
correo
Mensajes: 109
Registrado: Mar Nov 22, 2005 7:15 pm

Version 1.3 Problemas

Mensaje por correo »

Al departamento de desarrollo de Xailer :
Efectivamente el problema se resuelve si devuelvo un valor diferente de nil
(por ejemplo retu .t.) . El IDE de Xailer coloca por defecto un retu NIL que
funcionaba correctamente hasta esta versión .
Voy a cambiar todas las llamadas de la aplicación (son muchas) per deberían
valorar si el IDE por defecto debe poner RETU .t. por defecto o hacer el
cambio para que este efecto no se produzca
Un saludo y gracias
"Juan José García" <correo@jjgsoft.biz> escribió en el mensaje
news:4602352b$[email=1@news.xailer.com...]1@news.xailer.com...[/email]
> He vuelto a compilar el aplicativo con la nueva versión y he detectado un
> comportamiento impropio .
> Me explico.
>
> EN los campos TEdit y tDbEdit que son clave de otras tablas de respaldo ,
> he habilitado el metodo como sigue
>
> En el objeto oCentro y el evento OnKeyDown escribo
>
> METHOD CentroClaveKeyDown( oSender, nKey, nFlags ) CLASS TPacientesFicha
>
> if nKey == VK_F2
> oSender:Value := Ges_Ctr( Self, .t., oSender:Value )
> ::CentroClaveExit( oSender ) //Para poner el nombre del centro
> end if
>
> RETURN Nil
>
> Como se aprecia este evento se activa si pulso la tecla F2 ,disparando la
> función de llamada a la lista de Centros que me devolverá el valor del
> centro buscado
>
> Este procedimiento lo tengo a lo largo de la aplicación en todas las
> llamadas a las tablas auxiliares
>
> EL problema es que me lanza la llamada a la función 2 veces
>
> He detectado que la primera vez ,me retorna el valor y me refresca el
> objeto oSender correctamente ,pero inexplicablemente me vuelve a lanzar la
> llamada una 2ª vez (no se porque no una 3ª o una 4ª) .Espero explicar bien
> el problema porque asi no puedo instalar la aplicación .
>
> Un saludo y gracias de antemano.
>
>
>
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9463
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Version 1.3 Problemas

Mensaje por ignacio »

Juan José,
RETURN NIL en un evento nil significa que el mensaje lo sigue procesando
Windows y esto ha sido así desde el principio de Xailer. Nada ha cambiado.
Si ahora tiene un comportamiento distinto de antes es muy probable que
estuviese mal antes.
El hecho de que se procese dos veces la tecla F2 es casi con toda seguridad
de que la está tratando en más de un evento, OnChar y OnKeyDown por ejemplo,
o incluso en un control y también en su formulario contenedor, pues recuerde
que los eventos suben hacia sus controles contenedores por defecto (cuando
se devuelve NIL).
En cualquier caso sin un ejemplo COMPLETO es imposible ayudarle más para
indicarle la causa exacta del error, lo siento.
Un saludo,
--
Ignacio Ortiz de Zúñiga
http://www.xailer.com
"Juan José García" <correo@jjgsoft.biz> escribió en el mensaje
news:4602daff$[email=1@news.xailer.com...]1@news.xailer.com...[/email]
> Al departamento de desarrollo de Xailer :
>
> Efectivamente el problema se resuelve si devuelvo un valor diferente de
> nil (por ejemplo retu .t.) . El IDE de Xailer coloca por defecto un retu
> NIL que funcionaba correctamente hasta esta versión .
> Voy a cambiar todas las llamadas de la aplicación (son muchas) per
> deberían valorar si el IDE por defecto debe poner RETU .t. por defecto o
> hacer el cambio para que este efecto no se produzca
>
> Un saludo y gracias
>
>
> "Juan José García" <correo@jjgsoft.biz> escribió en el mensaje
> news:4602352b$[email=1@news.xailer.com...]1@news.xailer.com...[/email]
>> He vuelto a compilar el aplicativo con la nueva versión y he detectado un
>> comportamiento impropio .
>> Me explico.
>>
>> EN los campos TEdit y tDbEdit que son clave de otras tablas de respaldo ,
>> he habilitado el metodo como sigue
>>
>> En el objeto oCentro y el evento OnKeyDown escribo
>>
>> METHOD CentroClaveKeyDown( oSender, nKey, nFlags ) CLASS TPacientesFicha
>>
>> if nKey == VK_F2
>> oSender:Value := Ges_Ctr( Self, .t., oSender:Value )
>> ::CentroClaveExit( oSender ) //Para poner el nombre del centro
>> end if
>>
>> RETURN Nil
>>
>> Como se aprecia este evento se activa si pulso la tecla F2 ,disparando
>> la función de llamada a la lista de Centros que me devolverá el valor del
>> centro buscado
>>
>> Este procedimiento lo tengo a lo largo de la aplicación en todas las
>> llamadas a las tablas auxiliares
>>
>> EL problema es que me lanza la llamada a la función 2 veces
>>
>> He detectado que la primera vez ,me retorna el valor y me refresca el
>> objeto oSender correctamente ,pero inexplicablemente me vuelve a lanzar
>> la llamada una 2ª vez (no se porque no una 3ª o una 4ª) .Espero explicar
>> bien el problema porque asi no puedo instalar la aplicación .
>>
>> Un saludo y gracias de antemano.
>>
>>
>>
>
>
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5718
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

Version 1.3 Problemas

Mensaje por jfgimenez »

Juan José,
> Voy a cambiar todas las llamadas de la aplicación (son muchas) per
> deberían valorar si el IDE por defecto debe poner RETU .t. por defecto o
> hacer el cambio para que este efecto no se produzca
No, no lo cambies pues entonces te empezarán a fallar otras cosas.
Como te ha comentado Ignacio, al retornar Nil se está indicando que windows
debe seguir procesando ese evento, mientras que cualquier otro valor indica
que ya ha sido totalmente procesado y que windows no debe hacer
absolutamente nada más. En el caso del procesamiento de teclas, lo correcto
es retornar 0 (o algún otro valor) para que no se siga procesando, aunque en
la mayoría de los casos si nadie más procesa esa tecla se puede retornar Nil
sin problemas.
Pero en otros casos, después de hacer lo que necesitemos, tenemos que
pasarle el control a windows, y entonces hay que devolver Nil
necesariamente. Esa es la razón de que el IDE siempre ponga un return Nil al
final de los métodos. La mayoría de las veces debe ser así, y el caso
contrario es la excepción, que puede consultarse en la ayuda de cada evento.
--
Un saludo,
José F. Giménez
http://www.xailer.com
http://www.xailer.info
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
correo
Mensajes: 109
Registrado: Mar Nov 22, 2005 7:15 pm

Version 1.3 Problemas

Mensaje por correo »

Gracias a ambos ,de todas formas he cambiado el retu nil por retu .t. y
funciona perfectamente
Un saludo
"Jose F. Gimenez" <jfgimenez@wanadoo.es> escribió en el mensaje
news:46039b91$[email=1@news.xailer.com...]1@news.xailer.com...[/email]
> Juan José,
>
>> Voy a cambiar todas las llamadas de la aplicación (son muchas) per
>> deberían valorar si el IDE por defecto debe poner RETU .t. por defecto o
>> hacer el cambio para que este efecto no se produzca
>
> No, no lo cambies pues entonces te empezarán a fallar otras cosas.
>
> Como te ha comentado Ignacio, al retornar Nil se está indicando que
> windows debe seguir procesando ese evento, mientras que cualquier otro
> valor indica que ya ha sido totalmente procesado y que windows no debe
> hacer absolutamente nada más. En el caso del procesamiento de teclas, lo
> correcto es retornar 0 (o algún otro valor) para que no se siga
> procesando, aunque en la mayoría de los casos si nadie más procesa esa
> tecla se puede retornar Nil sin problemas.
>
> Pero en otros casos, después de hacer lo que necesitemos, tenemos que
> pasarle el control a windows, y entonces hay que devolver Nil
> necesariamente. Esa es la razón de que el IDE siempre ponga un return Nil
> al final de los métodos. La mayoría de las veces debe ser así, y el caso
> contrario es la excepción, que puede consultarse en la ayuda de cada
> evento.
>
> --
> Un saludo,
>
> José F. Giménez
> http://www.xailer.com
> http://www.xailer.info
>
Responder