TProgress en Windows Vista
- Alfredo Arteaga
- Posts: 326
- Joined: Sun Oct 09, 2005 5:22 pm
- Location: Mexico
- Contact:
TProgress en Windows Vista
Sera que tengo que abandonar el uso de TProgress en Windows Vista?
. No presenta el pintado total del control.
. Activa un parpadeo molesto y permanece hasta que no se cierra el dialogo o control que la contiene.
Estuve revisando la clase y buscando documentación, veo que hay más de un mensaje que no está implementado entre otros PBM_SETRANGE32.
Me pregunto si habrá alguna solución ya implementada y no la conozco o si tendré que deshabilitar ese control para WV?
. No presenta el pintado total del control.
. Activa un parpadeo molesto y permanece hasta que no se cierra el dialogo o control que la contiene.
Estuve revisando la clase y buscando documentación, veo que hay más de un mensaje que no está implementado entre otros PBM_SETRANGE32.
Me pregunto si habrá alguna solución ya implementada y no la conozco o si tendré que deshabilitar ese control para WV?
- Alfredo Arteaga
- Posts: 326
- Joined: Sun Oct 09, 2005 5:22 pm
- Location: Mexico
- Contact:
Re: TProgress en Windows Vista
Seré el único que habrá visto eso?
- Alfredo Arteaga
- Posts: 326
- Joined: Sun Oct 09, 2005 5:22 pm
- Location: Mexico
- Contact:
Re: TProgress en Windows Vista
La opinión de un experto me deja mas tranquilo o sin ánimos de seguir buscando.
"No es error de fiveWin, efectivamente Windows Vista no completa los
progress bar a menos que esten asignados a un valor bastante grande.
... hemos retocado la clase para que "force" el repintado, pero es
una chapuza, de todas formas no te preocupes, no error de tu programa,
es un tema de Windows Vista que no si solucionaran algun dia."
Gracias!.
"No es error de fiveWin, efectivamente Windows Vista no completa los
progress bar a menos que esten asignados a un valor bastante grande.
... hemos retocado la clase para que "force" el repintado, pero es
una chapuza, de todas formas no te preocupes, no error de tu programa,
es un tema de Windows Vista que no si solucionaran algun dia."
Gracias!.
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: TProgress en Windows Vista
Alfredo,
Lo curioso es que sin temas funciona perfectamente.
De todas formas nosotros publicamos un ejemplo aqui en los foros que se comportaba bastante bien. Ando buscándolo para mostrártelo
Lo curioso es que sin temas funciona perfectamente.
De todas formas nosotros publicamos un ejemplo aqui en los foros que se comportaba bastante bien. Ando buscándolo para mostrártelo
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: TProgress en Windows Vista
Alfredo,
Aqui está el ejemplo:
test.prg
Aqui está el ejemplo:
test.prg
Code: Select all
#include "FiveWin.ch"
function Main()
local oDlg, oProg1, oProg2
DEFINE DIALOG oDlg TITLE "Progress Bars"
@ 1, 1 PROGRESS oProg1 SIZE 80, 12
@ 1, 20 PROGRESS oProg2 SIZE 12, 50 VERTICAL
@ 3, 9 BUTTON "Ok" ACTION oDlg:End()
oDlg:bStart = { || Increase( oProg1, oProg2 ) }
ACTIVATE DIALOG oDlg CENTER ;
ON INIT ( oProg1:SetRange( 0, 100 ), oProg1:SetStep( 1 ),;
oProg2:SetRange( 0, 100 ), oProg2:SetStep( 1 ) )
return nil
function Increase( oProg1, oProg2 )
local n
for n = 1 to 111
// oProg1:StepIt()
// oProg2:StepIt()
oProg1:SetPos( n )
oProg2:SetPos( n )
Sleep( 50 )
SysRefresh()
next
return nil
- Alfredo Arteaga
- Posts: 326
- Joined: Sun Oct 09, 2005 5:22 pm
- Location: Mexico
- Contact:
Re: TProgress en Windows Vista
Gracias Antonio.
Me RINDO!, no puedo hacerlo funcionar como en las versiones previas a WV.
Me RINDO!, no puedo hacerlo funcionar como en las versiones previas a WV.
Re: TProgress en Windows Vista
Alfredo,
prueba a hacer un Sysrefresh() cada tanto, asi lo resolvi yo. (solo que enlentece un poco)
saludos.
prueba a hacer un Sysrefresh() cada tanto, asi lo resolvi yo. (solo que enlentece un poco)
saludos.
Pedro Gonzalez
- Alfredo Arteaga
- Posts: 326
- Joined: Sun Oct 09, 2005 5:22 pm
- Location: Mexico
- Contact:
Re: TProgress en Windows Vista
Gracias Pedro.
Te comento que cuando genero algunos reportes pongo una barra de progreso que muestre el avance y suceden estas dos situaciones:
1. no pinta el control en forma proporcional y
2. al finalizar deja el cursor en un estado intermitente que se vuelve molesto.
He buscado alguna forma para resolverlo (incluyendo el uso de SysRefresh()) y nada.
Te comento que cuando genero algunos reportes pongo una barra de progreso que muestre el avance y suceden estas dos situaciones:
1. no pinta el control en forma proporcional y
2. al finalizar deja el cursor en un estado intermitente que se vuelve molesto.
He buscado alguna forma para resolverlo (incluyendo el uso de SysRefresh()) y nada.
Re: TProgress en Windows Vista
Alfredo,
se me acabaron las ideas
Tengo varios clientes usando windows vista y no me han dicho nada de este problema.
Acabo de controlar que es lo que uso, y no es una progressbar, es un meter, pero hace lo que necesito.
saludos
se me acabaron las ideas
Tengo varios clientes usando windows vista y no me han dicho nada de este problema.
Acabo de controlar que es lo que uso, y no es una progressbar, es un meter, pero hace lo que necesito.
saludos
Pedro Gonzalez
Re: TProgress en Windows Vista
Tenho o mesmo problema que o Alfredo
e tbem nao consegui entender o exemplo q. vem com o Fwh
#include "FiveWin.ch"
function Main()
local oDlg, oProg1, oProg2
DEFINE DIALOG oDlg TITLE "Progress Bars"
@ 1, 1 PROGRESS oProg1 SIZE 80, 12
@ 1, 20 PROGRESS oProg2 SIZE 12, 50 VERTICAL
@ 3, 9 BUTTON "Ok" ACTION oDlg:End()
oDlg:bStart = { || Increase( oProg1, oProg2 ) }
ACTIVATE DIALOG oDlg CENTER ;
ON INIT ( oProg1:SetRange( 0, 100 ), oProg1:SetStep( 1 ),;
oProg2:SetRange( 0, 100 ), oProg2:SetStep( 1 ) )
return nil
function Increase( oProg1, oProg2 )
local n
Por que aqui no for next é 111 e não é 100 como o setado acima no on init da dialog
----->>>>> oProg1:SetRange( 0, 100 )
for n = 1 to 111
oProg1:SetPos( n )
oProg2:SetPos( n )
Sleep( 50 )
SysRefresh()
next
return nil
e tbem nao consegui entender o exemplo q. vem com o Fwh
#include "FiveWin.ch"
function Main()
local oDlg, oProg1, oProg2
DEFINE DIALOG oDlg TITLE "Progress Bars"
@ 1, 1 PROGRESS oProg1 SIZE 80, 12
@ 1, 20 PROGRESS oProg2 SIZE 12, 50 VERTICAL
@ 3, 9 BUTTON "Ok" ACTION oDlg:End()
oDlg:bStart = { || Increase( oProg1, oProg2 ) }
ACTIVATE DIALOG oDlg CENTER ;
ON INIT ( oProg1:SetRange( 0, 100 ), oProg1:SetStep( 1 ),;
oProg2:SetRange( 0, 100 ), oProg2:SetStep( 1 ) )
return nil
function Increase( oProg1, oProg2 )
local n
Por que aqui no for next é 111 e não é 100 como o setado acima no on init da dialog
----->>>>> oProg1:SetRange( 0, 100 )
for n = 1 to 111
oProg1:SetPos( n )
oProg2:SetPos( n )
Sleep( 50 )
SysRefresh()
next
return nil
Marcelo Ferro da Silveira
Fwh14.04/xHarbour 1.2.3 Simplex / Bcc582 / Pelles 8
SqlLib /xMate/WS
Fwh14.04/xHarbour 1.2.3 Simplex / Bcc582 / Pelles 8
SqlLib /xMate/WS
Re: TProgress en Windows Vista
Nada ?
Marcelo Ferro da Silveira
Fwh14.04/xHarbour 1.2.3 Simplex / Bcc582 / Pelles 8
SqlLib /xMate/WS
Fwh14.04/xHarbour 1.2.3 Simplex / Bcc582 / Pelles 8
SqlLib /xMate/WS
Re: TProgress en Windows Vista
Descobri isso hoje, alguém conseguiu resolver?
Any sugestion?
Obrigado.
Any sugestion?
Obrigado.
Re: TProgress en Windows Vista
Hola a todos,
Con respecto a progress si se quieren usar rangos con valor mayor a 65,535. se debe usar el metodo PBM_SETRANGE32 segun la documentacion del sdk de windows.
Aqui adjunto un parche que agrega el metodo setrange32 a la clase tprogress sin modificar el codigo de esta, solo hay que agregar el siguiente codigo al principio de vuestro programa, luego se debe usar el metodo setrange32 en vez del metodo setrange.
Ojo solo lo he probado con Harbour no con xHarbour y FWH 9.08
Esto soluciona el problema de pintado proporcional con valores mas grandes que 65.535.
Saludos
Lautaro Moreira
Con respecto a progress si se quieren usar rangos con valor mayor a 65,535. se debe usar el metodo PBM_SETRANGE32 segun la documentacion del sdk de windows.
Aqui adjunto un parche que agrega el metodo setrange32 a la clase tprogress sin modificar el codigo de esta, solo hay que agregar el siguiente codigo al principio de vuestro programa, luego se debe usar el metodo setrange32 en vez del metodo setrange.
Ojo solo lo he probado con Harbour no con xHarbour y FWH 9.08
Esto soluciona el problema de pintado proporcional con valores mas grandes que 65.535.
Saludos
Lautaro Moreira
Code: Select all
...
...
local oxprogress
oxprogress:=TProgress() // Crea el manejador de la clase
__objaddmethod(oxprogress,"SETRANGE32",@xsetrange32()) // Agrega el metodo setrange32
oxprogress:=NIL // Destruye el manejador de la clase
...
...
oprogres:setrange32(0,150000)
....
....
return
STATIC PROCEDURE xsetrange32(nmin,nmax)
LOCAL SELF := qself()
DEFAULT nmin:=0
DEFAULT nmax:=100
SendMessage( ::hWnd, PBM_SETRANGE32, nmin, nMax )
::nMin := nMin
::nMax := nMax
RETURN NIL
Re: TProgress en Windows Vista
Antonio, Lautaro
No he encontrado solucion al problema de Totales en la tProgress mayores al 65535.
Lautaro tu solucion no me funciona en xHarbour
...obtengo el siguiente error
Error description: Error BASE/1003 Variable does not exist: PBM_SETRANGE32
en la linea
SendMessage( ::hWnd, PBM_SETRANGE32, nmin, nMax )
ANTONIO. Existe alguna solucion para este problema... es de Enero de este año
Saludos
Desde Chile
Adolfo
No he encontrado solucion al problema de Totales en la tProgress mayores al 65535.
Lautaro tu solucion no me funciona en xHarbour
...obtengo el siguiente error
Error description: Error BASE/1003 Variable does not exist: PBM_SETRANGE32
en la linea
SendMessage( ::hWnd, PBM_SETRANGE32, nmin, nMax )
ANTONIO. Existe alguna solucion para este problema... es de Enero de este año
Saludos
Desde Chile
Adolfo
Ji,ji,ji... buena la cosa... "all you need is code"
http://www.xdata.cl - Desarrollo Inteligente
----------
Lenovo Legion Y520, 16GB Ram, 1 TB NVME M.2, 1 TB SSD, GTX 1050
http://www.xdata.cl - Desarrollo Inteligente
----------
Lenovo Legion Y520, 16GB Ram, 1 TB NVME M.2, 1 TB SSD, GTX 1050
- Daniel Garcia-Gil
- Posts: 2365
- Joined: Wed Nov 02, 2005 11:46 pm
- Location: Isla de Margarita
- Contact:
Re: TProgress en Windows Vista
Adolfo
Code: Select all
#define PBM_SETRANGE32 1030
our best documentation is the source code
Isla de Margarita Venezuela.
danielgarciagil@gmail.com
http://tdolphin.blogspot.com/
https://www.dropbox.com/referrals/NTI5N ... rc=global9
Isla de Margarita Venezuela.
danielgarciagil@gmail.com
http://tdolphin.blogspot.com/
https://www.dropbox.com/referrals/NTI5N ... rc=global9