Page 1 of 1

Barra de progreso oMeter - Inde ON con FiveLinux

PostPosted: Thu Apr 07, 2011 6:22 pm
by jgayoso
Al realizar la instrucción siguiente, el archivo no se indexa pasa de largo y la barra de progreso no avanza:
Index On &cKey Tag &cTag To &filex EVAL (oMeter:Set( recno() ) )

igual que con esta instrucción:
Index On &cKey Tag &cTag To &filex EVAL (oMeter:Set( recno() ) , SysRefresh() )

Al realizar la instrucción siguiente, el archivo se indexa, pero no tengo barra de progreso:
Index On &cKey Tag &cTag To &filex

Al realizar la instrucción siguiente, el archivo se indexa, tengo barra de progreso pero debo estar presionando una tecla por cada registro:
Index On &cKey Tag &cTag To &filex EVAL (oMeter:Set( recno() ), alert('Paso') )

Favor si alguien sabe como arreglar mi problema se agradeceria.

Jorge Gayoso

Re: Barra de progreso oMeter - Inde ON con FiveLinux

PostPosted: Fri Apr 08, 2011 12:48 am
by Antonio Linares
Jorge,

Hay que hacer el siguiente cambio en la Clase TDialog:
Code: Select all  Expand view

METHOD Activate( lCentered, bValid, bLClicked, bRClicked, lModal ) CLASS TDialog
   ...
   
   ::AEvalWhen()
   ::Show()

   if ! Empty( ::bStart )
      Eval( ::bStart, Self )
   endif  

   // Listbox controls initialization workaround
   ...
 

Y añadir esta nueva DATA en la Clase TWindow:
Code: Select all  Expand view

   DATA      bStart
 

Con esos cambios este ejemplo funciona bien:
Code: Select all  Expand view

#include "FiveLinux.ch"

function Main()

   local oDlg, oMeter, nVal := 0

   DEFINE DIALOG oDlg SIZE 600, 400 TITLE "Testing a Meter"
   
   oDlg:bStart := { || Index( oMeter ) }

   @ 18, 8 METER oMeter VAR nVal TOTAL 100 OF oDlg SIZE 440, 25
   
   @ 28, 24 BUTTON "Ok" OF oDlg ACTION oDlg:End()

   ACTIVATE DIALOG oDlg CENTERED

return nil

function Index( oMeter )

   for n = 1 to 100
      oMeter:Set( n )
      SysRefresh()
   next
   
return nil  
 

Image

Re: Barra de progreso oMeter - Inde ON con FiveLinux

PostPosted: Fri Apr 08, 2011 7:48 pm
by jgayoso
Ok, antonio me quedo claro.

La unica duda es:

Estos archivos estan en /source/classes los modifique en ese directorio, consulta: ¿debo solo compilar mi proyecto y el proceso los toma inmediatamente? o ¿debo incorporar estos archivos a mi proyecto para que tome los cambios como cualquier PRG? o ¿debo compilarlos en forma especial y el resultado dejarlo otro directorio (cual)?

Se agradece vuestra respuesta..

Jorge Gayoso


Antonio Linares wrote:Jorge,

Hay que hacer el siguiente cambio en la Clase TDialog:
Code: Select all  Expand view

METHOD Activate( lCentered, bValid, bLClicked, bRClicked, lModal ) CLASS TDialog
   ...
   
   ::AEvalWhen()
   ::Show()

   if ! Empty( ::bStart )
      Eval( ::bStart, Self )
   endif  

   // Listbox controls initialization workaround
   ...
 

Y añadir esta nueva DATA en la Clase TWindow:
Code: Select all  Expand view

   DATA      bStart
 

Con esos cambios este ejemplo funciona bien:
Code: Select all  Expand view

#include "FiveLinux.ch"

function Main()

   local oDlg, oMeter, nVal := 0

   DEFINE DIALOG oDlg SIZE 600, 400 TITLE "Testing a Meter"
   
   oDlg:bStart := { || Index( oMeter ) }

   @ 18, 8 METER oMeter VAR nVal TOTAL 100 OF oDlg SIZE 440, 25
   
   @ 28, 24 BUTTON "Ok" OF oDlg ACTION oDlg:End()

   ACTIVATE DIALOG oDlg CENTERED

return nil

function Index( oMeter )

   for n = 1 to 100
      oMeter:Set( n )
      SysRefresh()
   next
   
return nil  
 

Image

Re: Barra de progreso oMeter - Inde ON con FiveLinux

PostPosted: Sat Apr 09, 2011 10:54 pm
by Antonio Linares
Jorge,

Puedes añadirlos a tu proyecto una vez modificados. Otra opción es:

Estas usando Harbour ? Podemos enviarte las librerias actualizadas :-)

Re: Barra de progreso oMeter - Inde ON con FiveLinux

PostPosted: Mon Apr 11, 2011 12:50 pm
by jgayoso
Antonio, estoy utilizando xharbour. Si me puedes enviar las librerias actualizadas mejor, ya que pueden haber otras mejoras que me pueden ayudar.

Lo indicado funciono colocando un SysRefresh() y un .T. al final EVAL, el nEvery saca un porcentaje de 5% al total de registro, para ir indicando el avance:

Index On &cKey Tag &cTag To &filex EVAL (oMeter:Set( recno() ), SysRefresh(), .T.) Every nEvery


Muchas gracias Antonio, te debo otra mas...

Jorge Gayoso


Antonio Linares wrote:Jorge,

Puedes añadirlos a tu proyecto una vez modificados. Otra opción es:

Estas usando Harbour ? Podemos enviarte las librerias actualizadas :-)