En mi aplicación, me estoy dando cuenta que el "visionado" del progreso de
una ProgressBar no se corresponde con el real.
En otras versiones de Windows SI se corresponde perfectamente, pero cuando
corre la misma aplicación en Vista NUNCA termina por estar completa la barra
de progreso, y siempre visualizo un porcentaje que no se corresponde con la
realidad de nValue.
Aunque ponga nValue := nMax y fuerze con un ProcessMessages() sigue si
visualizarme la barra "completa"
Pero si pongo un MSGINFO("") después, parece ser que hace una "pausa" la
aplicación y se completa la barra.
No se si me comprendeis, pero sería bueno si alguien mas puede confirmar
este conportamiento.
Un Saludo,
Xevi.
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.
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.
ProgressBar en Vista
ProgressBar en Vista
Xevi,
> En mi aplicación, me estoy dando cuenta que el "visionado" del progreso de
> una ProgressBar no se corresponde con el real.
> En otras versiones de Windows SI se corresponde perfectamente, pero cuando
> corre la misma aplicación en Vista NUNCA termina por estar completa la
> barra de progreso, y siempre visualizo un porcentaje que no se corresponde
> con la realidad de nValue.
>
> Aunque ponga nValue := nMax y fuerze con un ProcessMessages() sigue si
> visualizarme la barra "completa"
>
> Pero si pongo un MSGINFO("") después, parece ser que hace una "pausa" la
> aplicación y se completa la barra.
>
> No se si me comprendeis, pero sería bueno si alguien mas puede confirmar
> este conportamiento.
Efectívamente, hay algo extraño en el pintado de la progressbar. En el
ejemplo adjunto se puede ver perfectamente cómo el contador llega al 98%
mientras que la barra anda todavía por unos 2/3 de su anchura. Además,
mientras está el MsgInfo() visible, la progressbar sigue incrementando su
anchura hasta llegar al verdadero 98%.
Por lo que he podido intuir, la progressbar en Vista tiene su propio
mecanismo interno de pintado. Utiliza un timer interno para pintarse, de
forma que los valores que se le asignan no se ven hasta que su propio timer
"llega" a ese mismo valor. Este timer interno es también el responsable de
esa especie de onda o reflejo que recorre el control periodicamente. Vamos,
que para un efecto 'chulo' que han conseguido, la han pifiado por otro lado
:-(
Si quitas los temas visuales (en el apartado 'apariencia' de las
'propiedades del proyecto') verás que entonces funciona correctamente.
--
Un saludo,
José F. Giménez
http://www.xailer.com
http://www.xailer.info
--
Attached files PBar.zip (1.9 KB)Â
> En mi aplicación, me estoy dando cuenta que el "visionado" del progreso de
> una ProgressBar no se corresponde con el real.
> En otras versiones de Windows SI se corresponde perfectamente, pero cuando
> corre la misma aplicación en Vista NUNCA termina por estar completa la
> barra de progreso, y siempre visualizo un porcentaje que no se corresponde
> con la realidad de nValue.
>
> Aunque ponga nValue := nMax y fuerze con un ProcessMessages() sigue si
> visualizarme la barra "completa"
>
> Pero si pongo un MSGINFO("") después, parece ser que hace una "pausa" la
> aplicación y se completa la barra.
>
> No se si me comprendeis, pero sería bueno si alguien mas puede confirmar
> este conportamiento.
Efectívamente, hay algo extraño en el pintado de la progressbar. En el
ejemplo adjunto se puede ver perfectamente cómo el contador llega al 98%
mientras que la barra anda todavía por unos 2/3 de su anchura. Además,
mientras está el MsgInfo() visible, la progressbar sigue incrementando su
anchura hasta llegar al verdadero 98%.
Por lo que he podido intuir, la progressbar en Vista tiene su propio
mecanismo interno de pintado. Utiliza un timer interno para pintarse, de
forma que los valores que se le asignan no se ven hasta que su propio timer
"llega" a ese mismo valor. Este timer interno es también el responsable de
esa especie de onda o reflejo que recorre el control periodicamente. Vamos,
que para un efecto 'chulo' que han conseguido, la han pifiado por otro lado
:-(
Si quitas los temas visuales (en el apartado 'apariencia' de las
'propiedades del proyecto') verás que entonces funciona correctamente.
--
Un saludo,
José F. Giménez
http://www.xailer.com
http://www.xailer.info
--
Attached files PBar.zip (1.9 KB)Â