Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations SkipVought on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

A Progress Bar or Thermometer Class

CLASS

A Progress Bar or Thermometer Class

by  ramani  Posted    (Edited  )
*********************************************************
** gsThermometer by Subramanian.G (ramani)
** www.winnersoft.coolfreepages.com
** FoxAcc Software - ramani_g@yahoo.com
** provided as freeware. Use at your Own Risk.
*********************************************************
* How to use .... (Example)
* Progress Bar or Thermometer Class and how to use .. example
*
* Copy the following and run the PRG

DEFINE POPUP gsTherm SHORTCUT RELATIVE FROM MROW(),MCOL() ;
STYLE "BOLDITALIC" FONT "Arial",12 ;
TITLE "Thermometer Demo" MARGIN

DEFINE BAR 1 OF gsTherm PROMPT "Thermometer using labels"
DEFINE BAR 2 OF gsTherm PROMPT "Thermometer using OLE class"
DEFINE BAR 3 OF gsTherm PROMPT "Thermometer using container"
DEFINE BAR 4 OF gsTherm PROMPT "Exit"

ON SELECTION POPUP gsTherm DEACTIVATE POPUP
*****************************************************
DO WHILE .t.
ACTIVATE POPUP gsTherm
DO CASE
CASE BAR()=1
cThermometer = 'gsThermometer'
CASE BAR()=2
cThermometer = 'gsThermometerOLE'
CASE BAR()=3
cThermometer = 'gsThermometerBar'
CASE BAR()=4
EXIT
ENDCASE
**
oTherm = createobject(cThermometer)
oTherm.Show()
FOR I = 1 TO 100
a = inkey(.01)
oTherm.Progress1.Value = i
ENDFOR
oTherm.Release
**
ENDDO
RETURN
**************************************************
* The above code is for showing example
* Choose the thermometer you like and implement.
*
* Suitably insert lines in your code to set the
* oThermometer.Progress1.Value a % completed.
*
*
**************************************************
** The following shows the
** A combination of Labels as growing for progress bar.
**************************************************
*-- Class: gstherm
*-- ParentClass: form
*-- BaseClass: form
*-- Time Stamp: 11/13/04 12:58:04 PM
*
DEFINE CLASS gsThermometer AS form

Height = 76
Width = 500
AutoCenter = .T.
BackColor = RGB(240,240,240)
BorderStyle = 0
Caption = ""
Closable = .F.
ControlBox = .F.
MaxButton = .F.
MinButton = .F.
Movable = .F.
AlwaysOnTop = .f.
ShowWindow = 1
Name = "gsThermometer"


ADD OBJECT ShapeOuter AS shape WITH ;
Top = 2, ;
Left = 2, ;
Height = 72, ;
Width = 496, ;
BackStyle = 0, ;
BorderWidth = 4, ;
Curvature = 5, ;
SpecialEffect = 0, ;
BorderColor = RGB(0,128,0), ;
Style = 0, ;
Name = "ShapeOuter"


ADD OBJECT Image1 AS image WITH ;
Picture = ADDBS(HOME(4))+[Bitmaps\Assorted\Beany.bmp], ;
BackStyle = 0, ;
Height = 64, ;
Left = 10, ;
Top = 6, ;
Width = 64, ;
Name = "Image1"


ADD OBJECT Progress1 AS textbox WITH ;
Value = 1, ;
Visible = .F., ;
Name = "Progress1"


ADD OBJECT lblProgress AS label WITH ;
FontBold = .T., ;
BackStyle = 0, ;
Caption = "Progress", ;
Height = 14, ;
Left = 81, ;
Top = 18, ;
Width = 384, ;
ForeColor = RGB(0,128,0), ;
Name = "lblProgress"


ADD OBJECT ShapeProgress AS shape WITH ;
Top = 32, ;
Left = 77, ;
Height = 32, ;
Width = 408, ;
BackStyle = 1, ;
SpecialEffect = 0, ;
BackColor = RGB(255,255,240), ;
Name = "ShapeProgress"


ADD OBJECT Label1 AS label WITH ;
FontBold = .T., ;
FontSize = 24, ;
BackStyle = 0, ;
Caption = (REPLICATE("I",50)), ;
Height = 30, ;
Left = 81, ;
Top = 29, ;
Width = 404, ;
ForeColor = RGB(192,192,192), ;
Name = "Label1"


ADD OBJECT Label2 AS label WITH ;
FontBold = .T., ;
FontSize = 24, ;
BackStyle = 0, ;
Caption = "Label2", ;
Height = 30, ;
Left = 79, ;
Top = 29, ;
Width = 404, ;
ForeColor = RGB(0,192,0), ;
Name = "Label2"


ADD OBJECT Label3 AS label WITH ;
FontBold = .T., ;
FontSize = 24, ;
BackStyle = 0, ;
Caption = "Label3", ;
Height = 30, ;
Left = 81, ;
Top = 29, ;
Width = 404, ;
ForeColor = RGB(0,192,0), ;
Name = "Label3"


PROCEDURE Destroy
SET CURSOR ON
ENDPROC


PROCEDURE Init
* Simply Set This.Progress1.Value = % completed to display suitably.
*
This.Progress1.Value = 0
SET CURSOR OFF
This.zOrder(0)
INKEY(0.001)
ENDPROC


PROCEDURE progress1.ProgrammaticChange
This.Parent.Label2.Caption = REPLICATE("I",This.Value/2)
This.Parent.Label3.Caption = REPLICATE("I",This.Value/2)
INKEY(0.001)
ENDPROC


ENDDEFINE
*
*-- EndDefine: gstherm
**************************************************
*
*
*
*
*
**************************************************
** The following shows the
** OLE class-Microsoft Progressbar Control Ver 5.0 (SP2)
** way of showing a progress bar.
**************************************************
**************************************************
** gsThermometerOLE
**************************************************
*-- Form: gsThermometerOLE
*-- ParentClass: form
*-- BaseClass: form
*-- Time Stamp: 11/10/04 12:01:04 AM
*
DEFINE CLASS gsThermometerOLE AS form

Height = 70
Width = 408
AutoCenter = .T.
BackColor = RGB(240,240,240)
BorderStyle = 3
Caption = ""
Closable = .F.
ControlBox = .F.
MaxButton = .F.
MinButton = .F.
Movable = .F.
AlwaysOnTop = .f.
ShowWindow = 1
Name = "gsThermometer"

ADD OBJECT shape1 AS shape WITH ;
Curvature = 10, ;
Top = 6, ;
Left = 6, ;
Height = 58, ;
Width = 396, ;
Name = "Shape1"

ADD OBJECT lblProgress AS label WITH ;
BackStyle = 0, ;
Caption = "Progress", ;
ForeColor = RGB(0,128,0), ;
Height = 14, ;
Left = 12, ;
Top = 12, ;
Width = 384, ;
Name = "lblProgress"

** OLE class-Microsoft Progressbar Control Ver 5.0 (SP2)
ADD OBJECT Progress1 AS olecontrol WITH ;
Top = 28, ;
Left = 12, ;
Height = 30, ;
Width = 384, ;
OleClass = 'comctl.ProgCtrl.1', ;
Name = "Progress1"

PROCEDURE Destroy
SET CURSOR ON
ENDPROC

PROCEDURE Init
* Simply Set This.Progress1.Value = % completed to display suitably.
*
This.Progress1.Value = 0
SET CURSOR OFF
This.zOrder(0)
INKEY(0.001)
ENDPROC

ENDDEFINE
*
*-- EndDefine: gsThermometerOLE
**************************************************
*
*
*
*
*
**************************************************
** The following shows
** A Container as a growing bar for progress bar.
**************************************************
**************************************************
** gsThermometerBar
**************************************************
*-- Form: gsThermometerBar
*-- ParentClass: form
*-- BaseClass: form
*-- Time Stamp: 11/10/04 12:01:04 AM
*
DEFINE CLASS gsThermometerBar AS form

Height = 70
Width = 408
AutoCenter = .T.
BackColor = RGB(240,240,240)
BorderStyle = 3
Caption = ""
Closable = .F.
ControlBox = .F.
MaxButton = .F.
MinButton = .F.
Movable = .F.
AlwaysOnTop = .f.
ShowWindow = 1
Name = "gsThermometer"

ADD OBJECT shape1 AS shape WITH ;
Curvature = 10, ;
Top = 6, ;
Left = 6, ;
Height = 58, ;
Width = 396, ;
Name = "Shape1"

ADD OBJECT lblProgress AS label WITH ;
BackStyle = 0, ;
Caption = "Progress", ;
ForeColor = RGB(0,0,128), ;
Height = 14, ;
Left = 12, ;
Top = 12, ;
Width = 384, ;
Name = "lblProgress"

ADD OBJECT Progress1 AS textbox WITH ;
Value = 1, ;
Visible = .F., ;
Name = "Progress1"

ADD OBJECT ProgressBarBack AS Container WITH ;
SpecialEffect = 1, ;
Top = 29, ;
Left = 12, ;
Height = 24, ;
Width = 384, ;
Name = "ProgressBarBack"

ADD OBJECT ProgressBar AS container WITH ;
BackColor = RGB(224,0,0), ;
BackStyle = 1, ;
BorderWidth = 0, ;
Top = 31, ;
Left = 14, ;
Height = 20, ;
Width = 380, ;
Name = "ProgressBar"

ADD OBJECT ProgressPercent AS Label WITH ;
BackStyle = 0, ;
BorderStyle = 0, ;
FontItalic = .t., ;
FontSize = 9, ;
ForeColor = RGB(0,0,128), ;
Top = 34, ;
Left = 192, ;
Height = 18, ;
Width = 36, ;
Name = "ProgressPercent"

PROCEDURE Destroy
SET CURSOR ON
ENDPROC

PROCEDURE Init
* Simply Set This.Progress1.Value = % completed to display suitably.
*
This.Progress1.Value = 0
SET CURSOR OFF
This.zOrder(0)
INKEY(0.001)
ENDPROC

PROCEDURE progress1.ProgrammaticChange
* 380 is the Max width of the Progress Bar when 100% completed.
This.Parent.ProgressBar.Width = (This.Value * 380)/100
This.Parent.ProgressPercent.Caption = TRANSFORM(This.Value)+'%'
INKEY(0.001)
ENDPROC

ENDDEFINE
*
*-- EndDefine: gsThermometerBar
**************************************************
Register to rate this FAQ  : BAD 1 2 3 4 5 6 7 8 9 10 GOOD
Please Note: 1 is Bad, 10 is Good :-)

Part and Inventory Search

Back
Top