[tt]
************************************************************
*-- Program: P_ThermGeneric
*-- Author: Darrell C. Greenhouse
*-- Last Upate:
*-- Created: 2003.06.11
*-- Description: Example of a generic Thermometer
*-- Pass:
*-- Returns:
*-- Called by:
*-- Calls:
*-- Assumuptions:
*-- Notes:
*-- Todo:
*-- Revisions:
************************************************************
LOCAL lnFiles, oForm
lnFiles = 879 && Simulates the files to copy
* Note: lnFiles could be records, files, bits, etc...
oForm = CREATEOBJECT("Therm",lnFiles)
oForm.SHOW()
FOR i = 1 TO lnFiles
oForm.UpdateTherm(i)
* Just to simulate processing time of file copy function
lnSec = SECONDS()
DO WHILE SECONDS()-lnSec < .010
ENDDO
NEXT
DEFINE CLASS Therm AS FORM
DOCREATE = .T.
AUTOCENTER = .T.
HEIGHT = 60
WIDTH = 500
TITLEBAR = 0
BACKCOLOR = RGB(255,0,0)
nBumpPerc = 0 && This is the percentage of each tick
ADD OBJECT shpTherm AS SHAPE WITH;
LEFT = 5, ;
WIDTH = 0 , ;
TOP = 10, ;
HEIGHT = 40, ;
FILLSTYLE = 0, ;
FILLCOLOR = RGB(0,0,255)
ADD OBJECT lblPerc AS LABEL WITH;
HEIGHT = 20, ;
CAPTION = "", ;
FONTSIZE = 12, ;
FORECOLOR = RGB(255,255,255), ;
BACKSTYLE = 0, ;
TOP = THIS.HEIGHT / 2 - 10, ;
VISIBLE = .F.
PROCEDURE INIT
LPARAM lnCount
THIS.nBumpPerc = lnCount/100
ENDPROC
PROCEDURE UpdateTherm(lnBump)
LOCAL lnThermMaxWidth
WITH THIS
lnThermMaxWidth = THIS.WIDTH - 10
.shpTherm.WIDTH = INT((lnBump/.nBumpPerc/100)*lnThermMaxWidth)
.lblPerc.VISIBLE = .T.
.lblPerc.CAPTION = "% Complete "+ALLT(STR(INT(lnBump/.nBumpPerc)))
.lblPerc.AUTOSIZE = .T.
.lblPerc.LEFT = .WIDTH / 2 - .lblPerc.WIDTH / 2
IF INT(lnBump/.nBumpPerc) == 100
* Give a visual delay to show 100% complete. Satisfies the user.
LOCAL lnDelay
lnDelay = SECONDS()
DO WHILE SECONDS()-lnDelay < .75
ENDDO
ENDIF
ENDWITH
ENDPROC
ENDDEFINE
[/tt]
'We all must do the hard bits so when we get bit we know where to bite'
