Tem muito uso melhor que esse.
Código: Selecionar todos
#include "inkey.ch"
#include "set.ch"
#include "hmg.ch"
#include "hbclass.ch"
REQUEST HB_CODEPAGE_PTISO
STATIC nWindow := 0
PROCEDURE Main
LOCAL oControl1, oControl2
DEFINE WINDOW A ROW 0 COL 0 WIDTH 1024 HEIGHT 768 TITLE "test" WINDOWTYPE MAIN
oControl1 := MyProgressbar():New()
WITH OBJECT oControl1
:Parent := "A"
:Caption := "testing"
:SetPos( 80, 10, 500, 50 )
:BackColor := YELLOW
:Create()
ENDWITH
oControl2 := MyProgressbar():New()
WITH OBJECT oControl2
:Parent := "A"
:Caption := "testing"
:SetPos( 160, 10, 500, 50 )
:BackColor := BLUE
:Create()
ENDWITH
DEFINE BUTTON BUTTON_1
ROW 40
COL 10
CAPTION 'Click Me!'
ACTION Eval( { || oControl1:SetValue( oControl1:nValue + 10 ), ;
oControl2:SetValue( oControl2:nValue + 10 ) } )
DEFAULT .T.
END BUTTON
END WINDOW
ACTIVATE WINDOW A
RETURN
CREATE CLASS MyProgressbar
VAR name
VAR nRow
VAR nCol
VAR nWidth
VAR nHeight
VAR Caption
VAR BackColor
VAR nMax INIT 500
VAR nValue INIT 0
VAR Parent
METHOD Create()
METHOD SetPos( r, c, w, h ) INLINE ::nRow := r, ::nCol := c, ::nWidth := w, ::nHeight := h
METHOD SetValue( n ) INLINE ::nValue := iif( ::nValue > 500, 500, n ), ::Paint()
METHOD Paint()
ENDCLASS
METHOD Create() CLASS MyProgressbar
nWindow += 1
::Name := "W" + StrZero( nWindow, 3 )
DEFINE WINDOW ( ::Name ) ;
ROW ::nRow ;
COL ::nCol ;
WIDTH ::nWidth ;
HEIGHT ::nHeight ;
WINDOWTYPE PANEL
DEFINE LABEL LABEL_1
ROW 10
COL 10
VALUE ::Caption
BORDER .T.
WIDTH 1
HEIGHT 20
BACKCOLOR ::BackColor
END LABEL
END WINDOW
RETURN Nil
METHOD Paint() CLASS MyProgressbar
SetProperty( ::Name, "label_1", "width", ::nValue )
RETURN Nil
