Página 1 de 1

TSysAnimate

Publicado: Dom Mar 12, 2006 7:57 pm
por miguel
Hola.
::oSysAnimate:lActive := .T. // TSysAnimate Instanciado en el IDE ,
nCommonAvi := aviFIND
with object ::oArrayArti // TArrayBrowse Instanciado en el IDE
:aArrayData := oSQLSource:QueryArray( cSelect )
:refresh()
end
::oSysAnimate:lActive := .F.
La idea de estas lineas de codigo es que durante se hace la consulta en el
servidor SQL se muestre el objeto en movimiento, el programa funciona pero
hay un instante que se mueve y se para de inmediato.
Si se elimina la linea lActivate := .F. , cuando termina el query queda en
movimiento.
Saludos.

TSysAnimate

Publicado: Lun Mar 13, 2006 9:27 am
por jfgimenez
Miguel,
lo siguiente está sacado de la documentación del API:
One common use for an animation control is to indicate system activity
during a lengthy operation. This is possible because the operation thread
continues executing while the AVI clip is displayed. For example, the Find
dialog box of Microsoft Windows Explorer displays a moving magnifying glass
as the system searches for a file.
Note If you are using ComCtl32.dll version 6 the thread is not supported,
therefore make sure that your application does not block the UI or the
animation will not occur.
Por lo tanto, se supone que la animación debería continuar aunque estés
haciendo algo que consuma todo el tiempo de CPU (como es el caso), pero en
XP con temas no es así: la animación se para. Vamos, que M$ en vez de ir
avanzando, en algunas cosas va hacia atrás :-(
--
Un saludo,
José F. Giménez

TSysAnimate

Publicado: Lun Mar 13, 2006 5:40 pm
por miguel
Jose F. Gimenez" jfgimenez[ NO-SPAM,
Gracias por la respuesta, quitados los temas funciona correctamente, pero
no entiendo como otras aplicaciones con temas esto funciona. Y en el propio
windows tambien, el API es el mismo , ¿o no?
> Miguel,
>
> lo siguiente está sacado de la documentación del API:
>
> One common use for an animation control is to indicate system activity
> during a lengthy operation. This is possible because the operation
> thread continues executing while the AVI clip is displayed. For
> example, the Find dialog box of Microsoft Windows Explorer displays a
> moving magnifying glass as the system searches for a file.
>
> Note If you are using ComCtl32.dll version 6 the thread is not
> supported, therefore make sure that your application does not block
> the UI or the animation will not occur.
>
> Por lo tanto, se supone que la animación deberí­a continuar aunque
> estés haciendo algo que consuma todo el tiempo de CPU (como es el
> caso), pero en XP con temas no es así­: la animación se para. Vamos,
> que M$ en vez de ir avanzando, en algunas cosas va hacia atrás :-(
>
> José F. Giménez
>

TSysAnimate

Publicado: Lun Mar 13, 2006 6:52 pm
por jfgimenez
Miguel,
> Gracias por la respuesta, quitados los temas funciona correctamente, pero
> no entiendo como otras aplicaciones con temas esto funciona. Y en el
> propio windows tambien, el API es el mismo , ¿o no?
Para que funcione también con temas hay que llamar a ProcessMessages()
periodicamente.
--
Un saludo,
José F. Giménez

TSysAnimate

Publicado: Lun Mar 13, 2006 7:35 pm
por miguel
Jose F. Gimenez" jfgimenez[ NO-SPAM,
> Miguel,
>
>> Gracias por la respuesta, quitados los temas funciona correctamente,
>> pero no entiendo como otras aplicaciones con temas esto funciona. Y
>> en el propio windows tambien, el API es el mismo , ¿o no?
>>
> Para que funcione también con temas hay que llamar a ProcessMessages()
> periodicamente.
>
> José F. Giménez
>
Con temas esto tampoco funciona
::oSysAnimate:lActive := .T.
ProcessMessages()
with object ::oArrayArti
:aArrayData := oSQLSource:QueryArray( cSelect )
:refresh()
end
::oSysAnimate:lActive := .F.