Página 1 de 1

Re: PROBLEMAS CON ProgressDlg

Publicado: Jue Feb 11, 2010 12:30 am
por jrcsistemas
Hola.
Yo realizo una ordenacion de la siguiente forma y la barra se muestra
correctamente. En XP y 7
oBarra es TProgressBar
oArchivo es TLabel
Cargo cOrigen con
Aadd( aOrigen,
{AppData:OrigendeDatos+"AFILIADO","NUMERO","NUMERO+ADHERENTE "})
Aproximadamente con 600 archivos. Tal vez por eso no noto nada mal, porque
el incremento de cada archivo es un porcentaje muy bajo.
Luego:
nCantidad := Len( aOrigen)
::oBarra:nMin := 1
::oBarra:nMax := nCantidad
cActual := ""
For nI := 1 to nCantidad
::oBarra:nValue := nI
cArchivo := aOrigen[nI][1]
cIndice := aOrigen[nI][1]+".CDX"
cTag := aOrigen[nI][2]
cClave := aOrigen[nI][3]
::oArchivo:cText := cArchivo
ProcessMessages()
If cActual != cArchivo // porque hay varios indices para el mismo
DBF
If File( cIndice )
fErase( cIndice )
EndIf
EndIf
cActual := cArchivo
// msgbox( cArchivo+chr(13)+cClave+chr(13)+cTag+chr(13)+cIndice )
If NetdbUSE(cArchivo,"TMP",3,,.T.,.F.)
INDEX ON &(cClave) TAG &(cTag) TO &(cIndice)
EndIf
dbCloseAll()
Next
MsgInfo("Ordenamiento completo","Ordenamiento")
::Close()
Espero que te sirva
Saludos
Juan Castañeda

Re: PROBLEMAS CON ProgressDlg

Publicado: Jue Feb 11, 2010 10:58 am
por jrcpoli-quitar
Saludos:
Si es correcto el avance de la barra se ve perfectamente en Xp y no se
si en siete porque no lo tengo pero en Vista que era la pregunta no se
ve la barra completa nunca.
Esta cuestión ya fue contestada por José F.Gimenez en un hilo de este
foro, a una pregunta que yo hice, solo tienes que poner en búsquedas
"Completar barra de progreso en Windows Vista.", la reproduzco por si
alguno no se acuerda.
el problema de las progressbar en Vista, es que windows no hace caso del
valor que se le asigna, y él por su cuenta utiliza un timer para ir
incrementando la barra a su aire. Por eso, cuando tú le asignas el 100%, él
todaví­a va por donde le venga en gana. La única forma que he encontrado de
forzarlo a mostrar la barra al 100%, es cambiar el lí­mite a 1 y el valor
también a 1. P.ej.:
::oProgressBar1:nMax := 1
::oProgressBar1:nValue := 1
No obstante, se verá un salto de la barra desde el punto donde estuviera,
hasta 100% de golpe.
Juan Castañeda escribió:
> Hola.
> Yo realizo una ordenacion de la siguiente forma y la barra se muestra
> correctamente. En XP y 7
> oBarra es TProgressBar
> oArchivo es TLabel
> Cargo cOrigen con
> Aadd( aOrigen,
> {AppData:OrigendeDatos+"AFILIADO","NUMERO","NUMERO+ADHERENTE "})
> Aproximadamente con 600 archivos. Tal vez por eso no noto nada mal, porque
> el incremento de cada archivo es un porcentaje muy bajo.
>
> Luego:
>
> nCantidad := Len( aOrigen)
> ::oBarra:nMin := 1
> ::oBarra:nMax := nCantidad
> cActual := ""
> For nI := 1 to nCantidad
> ::oBarra:nValue := nI
> cArchivo := aOrigen[nI][1]
> cIndice := aOrigen[nI][1]+".CDX"
> cTag := aOrigen[nI][2]
> cClave := aOrigen[nI][3]
> ::oArchivo:cText := cArchivo
> ProcessMessages()
> If cActual != cArchivo // porque hay varios indices para el mismo
> DBF
> If File( cIndice )
> fErase( cIndice )
> EndIf
> EndIf
> cActual := cArchivo
> // msgbox( cArchivo+chr(13)+cClave+chr(13)+cTag+chr(13)+cIndice )
> If NetdbUSE(cArchivo,"TMP",3,,.T.,.F.)
> INDEX ON&(cClave) TAG&(cTag) TO&(cIndice)
> EndIf
> dbCloseAll()
> Next
> MsgInfo("Ordenamiento completo","Ordenamiento")
> ::Close()
>
> Espero que te sirva
> Saludos
>
>
> Juan Castañeda
>
>
>

Re: PROBLEMAS CON ProgressDlg

Publicado: Sab Feb 13, 2010 6:36 pm
por jfgimenez
José Ramón,
> La única forma que he encontrado de
> forzarlo a mostrar la barra al 100%, es cambiar el lí­mite a 1 y el valor
> también a 1. P.ej.:
>
> ::oProgressBar1:nMax := 1
> ::oProgressBar1:nValue := 1
En Xailer 2.0 ya no hace falta. Nosotros ya añadimos un truco similar dentro
de la clase, por lo que no hay que hacer nada más.
--
Un saludo,
José F. Giménez
http://www.xailer.com
http://www.xailer.info