oMETER EN CELDAS DE xBROWSE

oMETER EN CELDAS DE xBROWSE

Postby joseluisysturiz » Thu Nov 24, 2016 4:01 pm

Saludos, quiero contruir para respaldo de datos un xBrowse que contenga todas las tablas de una database(mysql) en una celda y que en otra celda haya un oMeter indicando el porcentaje de registros respaldo de la tabla que se este procesando y que al finalizar pase al proximo registro y asi sucesivamente hasta que respalde todas las tablas, pero no tengo ni idea de como COLOCAR UN oMETER EN UNA CELDA...

Alguien ha hecho algo parecido o tienen algunas ideas de por donde empezar.? acepto sugerencias e ideas en lo que quiero hacer, de antemano creo seria una buena idea para la opcion de respaldo en conjunto con xBrowse que creo Mr. RAO, espero sus respuestas, saludos, gracias... :shock:
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

Re: oMETER EN CELDAS DE xBROWSE

Postby joseluisysturiz » Fri Nov 25, 2016 4:27 pm

Esto graficamente es lo que me gustaria hacer o no se si ya existe en algun sample, saludos, gracias... :shock:

[img]
Image
[/img]
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

Re: oMETER EN CELDAS DE xBROWSE

Postby vilian » Fri Nov 25, 2016 8:38 pm

Hi Jose,

Look at \fwh\samples\xbrprogb.prg .
Sds,
Vilian F. Arraes
vilian@vfatec.com.br
Belém-Pa-Brazil
User avatar
vilian
 
Posts: 920
Joined: Wed Nov 09, 2005 2:17 am
Location: Brazil

Re: oMETER EN CELDAS DE xBROWSE

Postby joseluisysturiz » Fri Nov 25, 2016 9:08 pm

vilian wrote:Hi Jose,

Look at \fwh\samples\xbrprogb.prg .


Vilian, buscando en el foro fue el primer sample que vi, pero no veo como funciona ya que parece los valores son staticos tomados de una DBF, lo que quiero es que mientras se ejecuta el BACKUP el oMeter en la celda se vaya actualizando el valor porcentual, cuando esta tabla este lista...siga al siguiente registro que seria la proxima tabla en el array del backup y obviamente seria el del xbrowse..tambien podria ser que se agregue el nombre de la tabla en el momento de entrar al backup al xbrowse y mientras se ejecuta el backup se ejecute el oMeter, casi todo lo se hacer, menos como agregar el oMeter en la celda...seguire revisando haber que logro, espero otras sugerencias o algun sample aunque sea sencillo, gracias, saludos... :shock:
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

Re: oMETER EN CELDAS DE xBROWSE

Postby cnavarro » Fri Nov 25, 2016 10:05 pm

Jose Luis, en ese ejemplo

Code: Select all  Expand view

   :SetProgBar( { || nMaxSal },, { || { nProgClr, CLR_WHITE } } )
 


Podrías probar asi:
nMaxSal sería el total de registros de esa base de datos
en el proceso de backup debes actualizar el número del registro en el que te encuentras, en la celda ( de la columna donde se define el progres bar ) correspondiente a esa base de datos
y realizar un refresh del browse
Es una idea
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
cnavarro
 
Posts: 6500
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: oMETER EN CELDAS DE xBROWSE

Postby joseluisysturiz » Sat Nov 26, 2016 12:16 am

cnavarro wrote:Jose Luis, en ese ejemplo

Code: Select all  Expand view

   :SetProgBar( { || nMaxSal },, { || { nProgClr, CLR_WHITE } } )
 


Podrías probar asi:
nMaxSal sería el total de registros de esa base de datos
en el proceso de backup debes actualizar el número del registro en el que te encuentras, en la celda ( de la columna donde se define el progres bar ) correspondiente a esa base de datos
y realizar un refresh del browse
Es una idea


Algo parecido es lo que pense, lo que veo es que tengo que hacer refresh por cada registro.? no se si eso traeria algun problema de consumo de memoria o lentitud en el proceso de backup, igual hay que ir intentando, crei seria mas facil colocar un oMeter y se ejecutara dentro de la celda, si lo veo muy complicado entonces creare un solo oMeter donde le actualizaria los datos en base a la cantidad de registros de cada tabla, me gusta la idea que quiero ya que es lo que veo en los administradores de descarga, con la unica diferencia es que no serian METER simultaneos si no consecutivos, cuando finalice uno, se inicia el otro hasta que llegue a la ultima tabla, alli les dejo esa idea a los GURU de xBrowse haber si alguien se anima y se crea ese sistema de respaldo, a mMr. RAO, haber su opinion que tan dificil o factible seria hacer lo que sugiero, saludos, gracias... :shock:
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

Re: oMETER EN CELDAS DE xBROWSE

Postby nageswaragunupudi » Sun Dec 25, 2016 10:35 pm

Please try this sample and adopt to your situation
Code: Select all  Expand view
#include 'fivewin.ch'

//----------------------------------------------------------------------------//

function Main()

   local oDlg, oBrw, oFont, n
   local nProgClr := RGB( 161, 224, 255 )
   local aData := {}

   XBrNumFormat( 'E', .t. )

   for n := 1 to 20
      AAdd( aData, { "File-" + StrZero( n, 2 ), 0, 0, 0 } )
   next

   DEFINE FONT oFont NAME "TAHOMA" SIZE 0,-12
   DEFINE DIALOG oDlg SIZE 600,360 PIXEL TRUEPIXEL ;
      TITLE "Dynamic Progress Bars with XBrowse" ;
      FONT oFont

   @ 20,20 XBROWSE oBrw SIZE -20,-60 PIXEL OF oDlg ;
      DATASOURCE aData COLUMNS 1,2,3, 4 ;
      HEADERS "FileName", "Progress", "Complete", "Total" ;
      COLSIZES 100,200,100,100 ;
      CELL LINES NOBORDER

   WITH OBJECT oBrw
      :lDisplayZeros    := .f.
      :lHScroll         := .f.
      :lVScroll         := .f.
      :bClrSel          := :bClrSelFocus
      :nStretchCol      := 2
      WITH OBJECT :aCols[ 2 ]
         :nDataStrAlign  := AL_CENTER
         :SetProgBar( 100,, { || { nProgClr, CLR_WHITE } } )
         :cEditPicture  := "999.99 %"
         :bClrSel := :bClrSelFocus := oBrw:bClrStd
      END
      //
      :CreateFromCode()
   END

   @ 310, 20 BTNBMP PROMPT "Start" SIZE 100,40 PIXEL OF oDlg FLAT ;
      ACTION DoProcess( oBrw )

   @ 310,140 BTNBMP PROMPT "Cancel" SIZE 100,40 PIXEL OF oDlg FLAT ;
      ACTION oBrw:Cargo := .f.

   ACTIVATE DIALOG oDlg CENTERED
   RELEASE FONT oFont

return nil

//----------------------------------------------------------------------------//

static function DoProcess( oBrw )

   local n, i, nTotal

   oBrw:GoTop()

   for n := 1 to oBrw:nLen

      nTotal            := HB_RandomInt( 100, 2000 )
      oBrw:aArrayData[ n, 4 ]    := nTotal
      oBrw:RefreshCurrent()

      for i := 1 to nTotal STEP 10
         SysWait( 0.01 )
         // in case user disturbs the postion
         oBrw:nArrayAt  := n
         oBrw:aArrayData[ n, 2 ] := i / nTotal * 100
         oBrw:aArrayData[ n, 3 ] := i
         oBrw:RefreshCurrent()
         if oBrw:Cargo == .f.
            EXIT
         endif
      next
      if oBrw:Cargo == .f.
         EXIT
      endif
      oBrw:nArrayAt  := n
      oBrw:aArrayData[ n, 2 ] := 100
      oBrw:aArrayData[ n, 3 ] := nTotal
      oBrw:RefreshCurrent()
      oBrw:GoDown()
    next

    oBrw:oWnd:SayText( If( oBrw:Cargo == .f., "CANCELLED", "COMPLETED" ), ;
            { nil, nil, -20, -20 }, "RB" )

return nil

//----------------------------------------------------------------------------//
 
Regards

G. N. Rao.
Hyderabad, India
User avatar
nageswaragunupudi
 
Posts: 10243
Joined: Sun Nov 19, 2006 5:22 am
Location: India

Re: oMETER EN CELDAS DE xBROWSE

Postby joseluisysturiz » Sun Dec 25, 2016 11:04 pm

nageswaragunupudi wrote:Please try this sample and adopt to your situation
Code: Select all  Expand view
#include 'fivewin.ch'

//----------------------------------------------------------------------------//

function Main()

   local oDlg, oBrw, oFont, n
   local nProgClr := RGB( 161, 224, 255 )
   local aData := {}

   XBrNumFormat( 'E', .t. )

   for n := 1 to 20
      AAdd( aData, { "File-" + StrZero( n, 2 ), 0, 0, 0 } )
   next

   DEFINE FONT oFont NAME "TAHOMA" SIZE 0,-12
   DEFINE DIALOG oDlg SIZE 600,360 PIXEL TRUEPIXEL ;
      TITLE "Dynamic Progress Bars with XBrowse" ;
      FONT oFont

   @ 20,20 XBROWSE oBrw SIZE -20,-60 PIXEL OF oDlg ;
      DATASOURCE aData COLUMNS 1,2,3, 4 ;
      HEADERS "FileName", "Progress", "Complete", "Total" ;
      COLSIZES 100,200,100,100 ;
      CELL LINES NOBORDER

   WITH OBJECT oBrw
      :lDisplayZeros    := .f.
      :lHScroll         := .f.
      :lVScroll         := .f.
      :bClrSel          := :bClrSelFocus
      :nStretchCol      := 2
      WITH OBJECT :aCols[ 2 ]
         :nDataStrAlign  := AL_CENTER
         :SetProgBar( 100,, { || { nProgClr, CLR_WHITE } } )
         :cEditPicture  := "999.99 %"
         :bClrSel := :bClrSelFocus := oBrw:bClrStd
      END
      //
      :CreateFromCode()
   END

   @ 310, 20 BTNBMP PROMPT "Start" SIZE 100,40 PIXEL OF oDlg FLAT ;
      ACTION DoProcess( oBrw )

   @ 310,140 BTNBMP PROMPT "Cancel" SIZE 100,40 PIXEL OF oDlg FLAT ;
      ACTION oBrw:Cargo := .f.

   ACTIVATE DIALOG oDlg CENTERED
   RELEASE FONT oFont

return nil

//----------------------------------------------------------------------------//

static function DoProcess( oBrw )

   local n, i, nTotal

   oBrw:GoTop()

   for n := 1 to oBrw:nLen

      nTotal            := HB_RandomInt( 100, 2000 )
      oBrw:aArrayData[ n, 4 ]    := nTotal
      oBrw:RefreshCurrent()

      for i := 1 to nTotal STEP 10
         SysWait( 0.01 )
         // in case user disturbs the postion
         oBrw:nArrayAt  := n
         oBrw:aArrayData[ n, 2 ] := i / nTotal * 100
         oBrw:aArrayData[ n, 3 ] := i
         oBrw:RefreshCurrent()
         if oBrw:Cargo == .f.
            EXIT
         endif
      next
      if oBrw:Cargo == .f.
         EXIT
      endif
      oBrw:nArrayAt  := n
      oBrw:aArrayData[ n, 2 ] := 100
      oBrw:aArrayData[ n, 3 ] := nTotal
      oBrw:RefreshCurrent()
      oBrw:GoDown()
    next

    oBrw:oWnd:SayText( If( oBrw:Cargo == .f., "CANCELLED", "COMPLETED" ), ;
            { nil, nil, -20, -20 }, "RB" )

return nil

//----------------------------------------------------------------------------//
 


Google Traslator:
Mr Rao, Excellent work, I will start adapting it to what I need and then publish it to share with other colleagues who are interested in the subject, thank you very much... :shock:
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 6 guests