Barra de progreso en VFP puro

2,624 views
Skip to first unread message

cristian topp

unread,
Apr 23, 2013, 5:57:00 PM4/23/13
to publice...@googlegroups.com
Hola estimados se agradece una barra de progreso para visualizar mientras proceso registros de una tabla...
de antemano muchas gracias

Guillermo MDQ

unread,
Apr 23, 2013, 6:03:52 PM4/23/13
to publice...@googlegroups.com

cristian topp

unread,
Apr 23, 2013, 6:12:18 PM4/23/13
to publice...@googlegroups.com
Gracias Guillermo. efectivamente encontré este código
 
*-- Ejemplo
lo = CREATEOBJECT("ProgressBar", "Barra de progreso 100% VFP...")
lo.SHOW(2)
*-- Simulo un proceso
FOR ln = 1 TO 100
  lo.Actualizar(ln)
  INKEY(.05)
ENDFOR
MESSAGEBOX("Proceso terminado",64)
lo = .NULL.

*--------------------------------------
* Definición de la clase barra de progreso
*--------------------------------------
DEFINE CLASS ProgressBar AS FORM
  DOCREATE = .T.
  HEIGHT = 72
  WIDTH = 375
  BORDERSTYLE = 2
  TITLEBAR = 0
  WINDOWTYPE = 0
  AUTOCENTER = .T.
  NAME = "ProgressBar"
  AnchoAux = 0
  *--
  PROCEDURE INIT
    LPARAMETERS tcTitulo
    SYS(2002)
    THIS.CrearObjetos(tcTitulo)
    THIS.AnchoAux = THIS.CNT.CNT.WIDTH
    THIS.Actualizar(0)
  ENDPROC
  *--
  PROCEDURE DESTROY
    SYS(2002,1)
  ENDPROC
  *--
  PROCEDURE actualizar
    LPARAMETERS tnPorc
    tnPorc = MAX(MIN(tnPorc,100),0)
    THIS.CNT.CNT.WIDTH = THIS.AnchoAux * tnPorc /100
    STORE TRANSFORM(tnPorc,"999")+"%" TO ;
      THIS.CNT.lbl.CAPTION, ;
      THIS.CNT.CNT.lbl.CAPTION
      THIS.DRAW
  ENDPROC
  *--
  PROCEDURE CrearObjetos
    LPARAMETERS tcTitulo
    THIS.ADDOBJECT("lblTitulo","label")
    WITH THIS.lblTitulo
      .FONTBOLD = .T.
      .ALIGNMENT = 2
      .CAPTION = IIF(EMPTY(tcTitulo),;
        "En progreso ...",tcTitulo)
      .LEFT = 0
      .TOP = 10
      .WIDTH = 375
      .VISIBLE = .T.
    ENDWITH
    THIS.ADDOBJECT("cnt","container")
    WITH THIS.CNT
      .TOP = 36
      .LEFT = 9
      .WIDTH = 360
      .HEIGHT = 26
      .SPECIALEFFECT = 1
      .BACKCOLOR = RGB(255,255,255)
      .VISIBLE = .T.
      .ADDOBJECT("lbl","label")
      WITH .lbl
        .FONTBOLD = .T.
        .ALIGNMENT = 2
        .BACKSTYLE = 0
        .CAPTION = "100%"
        .HEIGHT = 20
        .LEFT = 0
        .TOP = 6
        .WIDTH = 360
        .VISIBLE = .T.
      ENDWITH
      .ADDOBJECT("cnt","container")
      WITH .CNT
        .TOP = 2
        .LEFT = 2
        .WIDTH = 356
        .HEIGHT = 22
        .BORDERWIDTH = 0
        .BACKCOLOR = RGB(0,0,255)
        .ADDOBJECT("lbl","label")
        .VISIBLE = .T.
        WITH .lbl
          .FONTBOLD = .T.
          .ALIGNMENT = 2
          .BACKSTYLE = 0
          .CAPTION = "100%"
          .HEIGHT = 20
          .LEFT = 0
          .TOP = 4
          .WIDTH = 356
          .FORECOLOR = RGB(255,255,255)
          .VISIBLE = .T.
        ENDWITH
      ENDWITH
    ENDWITH
  ENDPROC
ENDDEFINE
*--------------------------------------
 
 
 
pero no se utilizarlo...   si me dieras algunas indicaciones sería fantástico
 

Guillermo MDQ

unread,
Apr 23, 2013, 6:35:36 PM4/23/13
to publice...@googlegroups.com
Bajate esta que funciona muy bien y viene con un ejemplo de uso:

http://www.portalfox.com/modules.php?op=modload&name=Sections&file=index&req=viewarticle&artid=96

Saludos
Guillermo

cristian topp

unread,
Apr 23, 2013, 6:59:48 PM4/23/13
to publice...@googlegroups.com
Para los que les sirva me funcionó de la siguien te manera
 
1.- grabar la clase en un prg  que puede lamarse progressbar
2.- en el init del formulario de proceso  poner  set procedure to locfile("progressbar.prg") additive
3.- en el boton de ejecutar poner para crear el objeto mas

lo.show(2)

4.- en el boton de proceso poner

&&tcan=cantidad de registros

tcan=reccount()

ln=ln+1

mpor=ROUND(ln*100/tcan,0)   

lo.Actualizar(MPOR)

5.- al finalizar del proceso poner

lo = .NULL.

MESSAGEBOX("Proceso terminado",64)

 

 

 

saludos

 

 

raf...@gmail.com

unread,
Sep 25, 2013, 9:02:58 PM9/25/13
to publice...@googlegroups.com
Buenas, solo funciona con orientación Horizontal ? no funciona con orientación Vertical?
 
Saludos
Rafael
 
 

 

Reply all
Reply to author
Forward
0 new messages