12 progressbars drawn with small images or with gdiplusX

Published on by Yousfi Benameur

 
 A progress bar is a graphical control element used to visualize the progression of an extended computer operation, such as a download, file transfer, or installation. Sometimes, the graphic is accompanied by a textual representation of the progress in a percent format.
i have an old stock of 12 progressbars to share
1-built from small bmp images (encoded with strconv(,13) and decoded with strconv(,14) as shown in a  previous post).that avoid to embed resources images physically.
2-built exclusively with gdiplusX library.
-for making the work  easy ,put the gdiplusX class (.vcx+.vct) in the same working folder, save the code
below as yprogressbars12.prg and run.
-12 classes of progressbars  (zprog1 to zprog12) in the code  can be converted easily to visual classes (vcx) and dropped on any form.the code uses newObject (createObject) to build the container class on the form.Can extract separatly any class from the code.
-A timer animates the imgcanvas drawing or the stretched image.
-can re click the same progressbar to see another colors (if random colors implemented in the class).
-can also make the container invisible (borderwidth=0)
if you compile an exe dont forget to add in the working folder the 2 files system.drawing.h (include) and system.app .
a similar code was presented in foxite on year 2008.


Click on code to select [then copy] -click outside to deselect


 publi m.yrep
m.yrep=addbs(justpath(sys(16,1)))
set defa to (yrep)
*set classlib to locfile("gdiplusX","vcx") addi

publi yform
yform=newObject("yprogress4")
*release classlib gdiplusX.vcx
yform.show

read events
retu
*
DEFINE CLASS yprogress4 AS form
    Top = 0
	Left = 0
	Height = 400
	Width = 333
    ShowWindow=2
    autocenter=.t.
    maxbutton=.f.
    borderstyle=2
    backcolor=0
 	Caption = "progressbars"
 	
 ADD OBJECT combo1 AS ycombo WITH ;		
		Name = "Combo1"	
 	
 ADD OBJECT edit1 AS editbox WITH ;		
		Name = "edit1"	
 	 	
		
	PROCEDURE Init	
	with thisform
	.setall("mousepointer",15,"commandbutton")	
		with .edit1
		.left=10
		.top=250
		.width=310
		.height=100
		.fontsize=12
		.scrollbars=0
		.backstyle=0
		.borderstyle=0
		.forecolor=rgb(255,255,255)
		.fontbold=.t.
		.value="A set of 12 progressbars built with small bmps or gdiplusX"
		endwith
		endwith
	ENDPROC

	
	
	PROCEDURE DESTROY
	erase (getenv('tmp')+"\ymask.bmp")
	CLEA EVENTS
	ENDPROC


ENDDEFINE
*
*-- EndDefine: yprogress4
**************************************************

DEFINE CLASS zprog1 AS container
	Top = 36
	Left = 40
	Width = 217
	Height = 27
	SpecialEffect = 1
	Visible = .F.
	BackColor = RGB(0,0,0)
	Name = "Container1"

	ADD OBJECT image1 AS image WITH ;
		Stretch = 2, ;
		Height = 32, ;
		Left = 2, ;
		Top = 1, ;
		Width = 10, ;
		Name = "Image1"

	ADD OBJECT timer1 AS timer WITH ;
		Top = 12, ;
		Left = 144, ;
		Height = 23, ;
		Width = 23, ;
		Enabled = .F., ;
		Interval = 100, ;
		Name = "Timer1"


	ADD OBJECT label1 AS label WITH ;
		AutoSize = .T., ;
		FontBold = .T., ;
		FontSize = 8, ;
		BackStyle = 0, ;
		Caption = "", ;
		Height = 16, ;
		Left = 68, ;
		Top = 7, ;
		Width = 2, ;
		ForeColor = RGB(255,255,255), ;
		Name = "Label1"

	PROCEDURE Init
		local m.myvar
		text to m.myvar noshow
		Qk1SFAAAAAAAADYAAAAoAAAAKwAAACcAAAABABgAAAAAABwUAAAAAAAAAAAAAAAAAAAAAAAAAGYAAGYAAGYAAGYAAGYAAGYAAGYAAGYAAGYAAGYAAGYAAGYAAGYAAGYAAGYAAGYAAGYAAGYAAGYAAGYAAGYAAGYAAGYAAGYAAGYAAGYAAGYAAGYAAGYAAGYAAGYAAGYAAGYAAGYAAGYAAGYAAGYAAGYAAGYAAGYAAGYAAGYAAGYAAAAAAGkAAGkAAGkAAGkAAGkAAGkAAGkAAGkAAGkAAGkAAGkAAGkAAGkAAGkAAGkAAGkAAGkAAGkAAGkAAGkAAGkAAGkAAGkAAGkAAGkAAGkAAGkAAGkAAGkAAGkAAGkAAGkAAGkAAGkAAGkAAGkAAGkAAGkAAGkAAGkAAGkAAGkAAGkAAAAAAG0AAG0AAG0AAG0AAG0AAG0AAG0AAG0AAG0AAG0AAG0AAG0AAG0AAG0AAG0AAG0AAG0AAG0AAG0AAG0AAG0AAG0AAG0AAG0AAG0AAG0AAG0AAG0AAG0AAG0AAG0AAG0AAG0AAG0AAG0AAG0AAG0AAG0AAG0AAG0AAG0AAG0AAG0AAAAAAHIAAHIAAHIAAHIAAHIAAHIAAHIAAHIAAHIAAHIAAHIAAHIAAHIAAHIAAHIAAHIAAHIAAHIAAHIAAHIAAHIAAHIAAHIAAHIAAHIAAHIAAHIAAHIAAHIAAHIAAHIAAHIAAHIAAHIAAHIAAHIAAHIAAHIAAHIAAHIAAHIAAHIAAHIAAAAAAHgAAHgAAHgAAHgAAHgAAHgAAHgAAHgAAHgAAHgAAHgAAHgAAHgAAHgAAHgAAHgAAHgAAHgAAHgAAHgAAHgAAHgAAHgAAHgAAHgAAHgAAHgAAHgAAHgAAHgAAHgAAHgAAHgAAHgAAHgAAHgAAHgAAHgAAHgAAHgAAHgAAHgAAHgAAAAAAIEAAIEAAIEAAIEAAIEAAIEAAIEAAIEAAIEAAIEAAIEAAIEAAIEAAIEAAIEAAIEAAIEAAIEAAIEAAIEAAIEAAIEAAIEAAIEAAIEAAIEAAIEAAIEAAIEAAIEAAIEAAIEAAIEAAIEAAIEAAIEAAIEAAIEAAIEAAIEAAIEAAIEAAIEAAAAAAIoAAIoAAIoAAIoAAIoAAIoAAIoAAIoAAIoAAIoAAIoAAIoAAIoAAIoAAIoAAIoAAIoAAIoAAIoAAIoAAIoAAIoAAIoAAIoAAIoAAIoAAIoAAIoAAIoAAIoAAIoAAIoAAIoAAIoAAIoAAIoAAIoAAIoAAIoAAIoAAIoAAIoAAIoAAAAAAJQAAJQAAJQAAJQAAJQAAJQAAJQAAJQAAJQAAJQAAJQAAJQAAJQAAJQAAJQAAJQAAJQAAJQAAJQAAJQAAJQAAJQAAJQAAJQAAJQAAJQAAJQAAJQAAJQAAJQAAJQAAJQAAJQAAJQAAJQAAJQAAJQAAJQAAJQAAJQAAJQAAJQAAJQAAAAAAJ8AAJ8AAJ8AAJ8AAJ8AAJ8AAJ8AAJ8AAJ8AAJ8AAJ8AAJ8AAJ8AAJ8AAJ8AAJ8AAJ8AAJ8AAJ8AAJ8AAJ8AAJ8AAJ8AAJ8AAJ8AAJ8AAJ8AAJ8AAJ8AAJ8AAJ8AAJ8AAJ8AAJ8AAJ8AAJ8AAJ8AAJ8AAJ8AAJ8AAJ8AAJ8AAJ8AAAAAAKoAAKoAAKoAAKoAAKoAAKoAAKoAAKoAAKoAAKoAAKoAAKoAAKoAAKoAAKoAAKoAAKoAAKoAAKoAAKoAAKoAAKoAAKoAAKoAAKoAAKoAAKoAAKoAAKoAAKoAAKoAAKoAAKoAAKoAAKoAAKoAAKoAAKoAAKoAAKoAAKoAAKoAAKoAAAAAALUAALUAALUAALUAALUAALUAALUAALUAALUAALUAALUAALUAALUAALUAALUAALUAALUAALUAALUAALUAALUAALUAALUAALUAALUAALUAALUAALUAALUAALUAALUAALUAALUAALUAALUAALUAALUAALUAALUAALUAALUAALUAALUAAAAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAAAAAAMoAAMoAAMoAAMoAAMoAAMoAAMoAAMoAAMoAAMoAAMoAAMoAAMoAAMoAAMoAAMoAAMoAAMoAAMoAAMoAAMoAAMoAAMoAAMoAAMoAAMoAAMoAAMoAAMoAAMoAAMoAAMoAAMoAAMoAAMoAAMoAAMoAAMoAAMoAAMoAAMoAAMoAAMoAAAAAANMAANMAANMAANMAANMAANMAANMAANMAANMAANMAANMAANMAANMAANMAANMAANMAANMAANMAANMAANMAANMAANMAANMAANMAANMAANMAANMAANMAANMAANMAANMAANMAANMAANMAANMAANMAANMAANMAANMAANMAANMAANMAANMAAAAAANwAANwAANwAANwAANwAANwAANwAANwAANwAANwAANwAANwAANwAANwAANwAANwAANwAANwAANwAANwAANwAANwAANwAANwAANwAANwAANwAANwAANwAANwAANwAANwAANwAANwAANwAANwAANwAANwAANwAANwAANwAANwAANwAAAAAAOEAAOEAAOEAAOEAAOEAAOEAAOEAAOEAAOEAAOEAAOEAAOEAAOEAAOEAAOEAAOEAAOEAAOEAAOEAAOEAAOEAAOEAAOEAAOEAAOEAAOEAAOEAAOEAAOEAAOEAAOEAAOEAAOEAAOEAAOEAAOEAAOEAAOEAAOEAAOEAAOEAAOEAAOEAAAAAAOYAAOYAAOYAAOYAAOYAAOYAAOYAAOYAAOYAAOYAAOYAAOYAAOYAAOYAAOYAAOYAAOYAAOYAAOYAAOYAAOYAAOYAAOYAAOYAAOYAAOYAAOYAAOYAAOYAAOYAAOYAAOYAAOYAAOYAAOYAAOYAAOYAAOYAAOYAAOYAAOYAAOYAAOYAAAAAAOoAAOoAAOoAAOoAAOoAAOoAAOoAAOoAAOoAAOoAAOoAAOoAAOoAAOoAAOoAAOoAAOoAAOoAAOoAAOoAAOoAAOoAAOoAAOoAAOoAAOoAAOoAAOoAAOoAAOoAAOoAAOoAAOoAAOoAAOoAAOoAAOoAAOoAAOoAAOoAAOoAAOoAAOoAAAAAAO0AAO0AAO0AAO0AAO0AAO0AAO0AAO0AAO0AAO0AAO0AAO0AAO0AAO0AAO0AAO0AAO0AAO0AAO0AAO0AAO0AAO0AAO0AAO0AAO0AAO0AAO0AAO0AAO0AAO0AAO0AAO0AAO0AAO0AAO0AAO0AAO0AAO0AAO0AAO0AAO0AAO0AAO0AAAAAAO8AAO8AAO8AAO8AAO8AAO8AAO8AAO8AAO8AAO8AAO8AAO8AAO8AAO8AAO8AAO8AAO8AAO8AAO8AAO8AAO8AAO8AAO8AAO8AAO8AAO8AAO8AAO8AAO8AAO8AAO8AAO8AAO8AAO8AAO8AAO8AAO8AAO8AAO8AAO8AAO8AAO8AAO8AAAAAAO0AAO0AAO0AAO0AAO0AAO0AAO0AAO0AAO0AAO0AAO0AAO0AAO0AAO0AAO0AAO0AAO0AAO0AAO0AAO0AAO0AAO0AAO0AAO0AAO0AAO0AAO0AAO0AAO0AAO0AAO0AAO0AAO0AAO0AAO0AAO0AAO0AAO0AAO0AAO0AAO0AAO0AAO0AAAAAAOoAAOoAAOoAAOoAAOoAAOoAAOoAAOoAAOoAAOoAAOoAAOoAAOoAAOoAAOoAAOoAAOoAAOoAAOoAAOoAAOoAAOoAAOoAAOoAAOoAAOoAAOoAAOoAAOoAAOoAAOoAAOoAAOoAAOoAAOoAAOoAAOoAAOoAAOoAAOoAAOoAAOoAAOoAAAAAAOYAAOYAAOYAAOYAAOYAAOYAAOYAAOYAAOYAAOYAAOYAAOYAAOYAAOYAAOYAAOYAAOYAAOYAAOYAAOYAAOYAAOYAAOYAAOYAAOYAAOYAAOYAAOYAAOYAAOYAAOYAAOYAAOYAAOYAAOYAAOYAAOYAAOYAAOYAAOYAAOYAAOYAAOYAAAAAAOEAAOEAAOEAAOEAAOEAAOEAAOEAAOEAAOEAAOEAAOEAAOEAAOEAAOEAAOEAAOEAAOEAAOEAAOEAAOEAAOEAAOEAAOEAAOEAAOEAAOEAAOEAAOEAAOEAAOEAAOEAAOEAAOEAAOEAAOEAAOEAAOEAAOEAAOEAAOEAAOEAAOEAAOEAAAAAANwAANwAANwAANwAANwAANwAANwAANwAANwAANwAANwAANwAANwAANwAANwAANwAANwAANwAANwAANwAANwAANwAANwAANwAANwAANwAANwAANwAANwAANwAANwAANwAANwAANwAANwAANwAANwAANwAANwAANwAANwAANwAANwAAAAAANMAANMAANMAANMAANMAANMAANMAANMAANMAANMAANMAANMAANMAANMAANMAANMAANMAANMAANMAANMAANMAANMAANMAANMAANMAANMAANMAANMAANMAANMAANMAANMAANMAANMAANMAANMAANMAANMAANMAANMAANMAANMAANMAAAAAAMoAAMoAAMoAAMoAAMoAAMoAAMoAAMoAAMoAAMoAAMoAAMoAAMoAAMoAAMoAAMoAAMoAAMoAAMoAAMoAAMoAAMoAAMoAAMoAAMoAAMoAAMoAAMoAAMoAAMoAAMoAAMoAAMoAAMoAAMoAAMoAAMoAAMoAAMoAAMoAAMoAAMoAAMoAAAAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAAMAAAAAAALUAALUAALUAALUAALUAALUAALUAALUAALUAALUAALUAALUAALUAALUAALUAALUAALUAALUAALUAALUAALUAALUAALUAALUAALUAALUAALUAALUAALUAALUAALUAALUAALUAALUAALUAALUAALUAALUAALUAALUAALUAALUAALUAAAAAAKoAAKoAAKoAAKoAAKoAAKoAAKoAAKoAAKoAAKoAAKoAAKoAAKoAAKoAAKoAAKoAAKoAAKoAAKoAAKoAAKoAAKoAAKoAAKoAAKoAAKoAAKoAAKoAAKoAAKoAAKoAAKoAAKoAAKoAAKoAAKoAAKoAAKoAAKoAAKoAAKoAAKoAAKoAAAAAAJ8AAJ8AAJ8AAJ8AAJ8AAJ8AAJ8AAJ8AAJ8AAJ8AAJ8AAJ8AAJ8AAJ8AAJ8AAJ8AAJ8AAJ8AAJ8AAJ8AAJ8AAJ8AAJ8AAJ8AAJ8AAJ8AAJ8AAJ8AAJ8AAJ8AAJ8AAJ8AAJ8AAJ8AAJ8AAJ8AAJ8AAJ8AAJ8AAJ8AAJ8AAJ8AAJ8AAAAAAJQAAJQAAJQAAJQAAJQAAJQAAJQAAJQAAJQAAJQAAJQAAJQAAJQAAJQAAJQAAJQAAJQAAJQAAJQAAJQAAJQAAJQAAJQAAJQAAJQAAJQAAJQAAJQAAJQAAJQAAJQAAJQAAJQAAJQAAJQAAJQAAJQAAJQAAJQAAJQAAJQAAJQAAJQAAAAAAIoAAIoAAIoAAIoAAIoAAIoAAIoAAIoAAIoAAIoAAIoAAIoAAIoAAIoAAIoAAIoAAIoAAIoAAIoAAIoAAIoAAIoAAIoAAIoAAIoAAIoAAIoAAIoAAIoAAIoAAIoAAIoAAIoAAIoAAIoAAIoAAIoAAIoAAIoAAIoAAIoAAIoAAIoAAAAAAIEAAIEAAIEAAIEAAIEAAIEAAIEAAIEAAIEAAIEAAIEAAIEAAIEAAIEAAIEAAIEAAIEAAIEAAIEAAIEAAIEAAIEAAIEAAIEAAIEAAIEAAIEAAIEAAIEAAIEAAIEAAIEAAIEAAIEAAIEAAIEAAIEAAIEAAIEAAIEAAIEAAIEAAIEAAAAAAHgAAHgAAHgAAHgAAHgAAHgAAHgAAHgAAHgAAHgAAHgAAHgAAHgAAHgAAHgAAHgAAHgAAHgAAHgAAHgAAHgAAHgAAHgAAHgAAHgAAHgAAHgAAHgAAHgAAHgAAHgAAHgAAHgAAHgAAHgAAHgAAHgAAHgAAHgAAHgAAHgAAHgAAHgAAAAAAHIAAHIAAHIAAHIAAHIAAHIAAHIAAHIAAHIAAHIAAHIAAHIAAHIAAHIAAHIAAHIAAHIAAHIAAHIAAHIAAHIAAHIAAHIAAHIAAHIAAHIAAHIAAHIAAHIAAHIAAHIAAHIAAHIAAHIAAHIAAHIAAHIAAHIAAHIAAHIAAHIAAHIAAHIAAAAAAG0AAG0AAG0AAG0AAG0AAG0AAG0AAG0AAG0AAG0AAG0AAG0AAG0AAG0AAG0AAG0AAG0AAG0AAG0AAG0AAG0AAG0AAG0AAG0AAG0AAG0AAG0AAG0AAG0AAG0AAG0AAG0AAG0AAG0AAG0AAG0AAG0AAG0AAG0AAG0AAG0AAG0AAG0AAAAAAGkAAGkAAGkAAGkAAGkAAGkAAGkAAGkAAGkAAGkAAGkAAGkAAGkAAGkAAGkAAGkAAGkAAGkAAGkAAGkAAGkAAGkAAGkAAGkAAGkAAGkAAGkAAGkAAGkAAGkAAGkAAGkAAGkAAGkAAGkAAGkAAGkAAGkAAGkAAGkAAGkAAGkAAGkAAAAAAGYAAGYAAGYAAGYAAGYAAGYAAGYAAGYAAGYAAGYAAGYAAGYAAGYAAGYAAGYAAGYAAGYAAGYAAGYAAGYAAGYAAGYAAGYAAGYAAGYAAGYAAGYAAGYAAGYAAGYAAGYAAGYAAGYAAGYAAGYAAGYAAGYAAGYAAGYAAGYAAGYAAGYAAGYAAAAA
		endtext
		with this.image1
		.left=0
		.top=2
		.height=this.height-4
		.pictureval=strconv(m.myvar,14)
		endwith
	ENDPROC

	PROCEDURE timer1.Timer
		local oImg
		delta=2
		oIMg=this.parent.image1
		oImg.left=0
		oImg.width=oIMg.width+delta
		this.parent.label1.caption=allt(str(100*oImg.width/this.parent.width,6,2))+" %"
		if oImg.width>=this.parent.width
		this.parent.visible=.f.
		oImg.width=1
		this.enabled=.f.
		thisform.combo1.enabled=.t.
		thisform.edit1.value=""
		
		endi
	ENDPROC

ENDDEFINE
*
*-- EndDefine: zprog1
**************************

DEFINE CLASS zprog2 AS container
	Top = 36
	Left = 40
	Width = 217
	Height = 38
	SpecialEffect = 1
	Visible = .F.
	BackColor = RGB(0,0,0)
	Name = "Container1"

	ADD OBJECT image1 AS image WITH ;
		Stretch = 2, ;
		Height = 32, ;
		Left = 2, ;
		Top = 1, ;
		Width = 10, ;
		Name = "Image1"

	ADD OBJECT timer1 AS timer WITH ;
		Top = 12, ;
		Left = 144, ;
		Height = 23, ;
		Width = 23, ;
		Enabled = .F., ;
		Interval = 100, ;
		Name = "Timer1"


	ADD OBJECT label1 AS label WITH ;
		AutoSize = .T., ;
		FontBold = .T., ;
		FontSize = 8, ;
		BackStyle = 0, ;
		Caption = "", ;
		Height = 16, ;
		Left = 68, ;
		Top = 7, ;
		Width = 2, ;
		ForeColor = RGB(255,255,255), ;
		Name = "Label1"

	PROCEDURE Init
		local m.myvar
		text to m.myvar noshow
		Qk02DwAAAAAAADYAAAAoAAAAKAAAACAAAAABABgAAAAAAAAPAAAAAAAAAAAAAAAAAAAAAAAAUlqeAACIAACLAACLAACLAACLAACLAACLAACLAACLAACLAACLAACLAACLAACLAACLAACLAACLAACLAACLAACLAACLAACLAACLAACLAACLAACLAACLAACLAACLAACLAACLAACLAACLAACLAACLAACLAACLAACLAACLUlqfAACLAACPAACPAACPAACPAACPAACPAACPAACPAACPAACPAACPAACPAACPAACPAACPAACPAACPAACPAACPAACPAACPAACPAACPAACPAACPAACPAACPAACPAACPAACPAACPAACPAACPAACPAACPAACPAACPAACPUlqfAACQAACUAACTAACTAACTAACTAACTAACTAACTAACTAACTAACTAACTAACTAACTAACTAACTAACTAACTAACTAACTAACTAACTAACTAACTAACTAACTAACTAACTAACTAACTAACTAACTAACTAACTAACTAACTAACTAACTUlqhAACWAACYAACYAACYAACYAACYAACYAACYAACYAACYAACYAACYAACYAACYAACYAACYAACYAACYAACYAACYAACYAACYAACYAACYAACYAACYAACYAACYAACYAACYAACYAACYAACYAACYAACYAACYAACYAACYAACYUlqlAACeAACfAACfAACfAACfAACfAACfAACfAACfAACfAACfAACfAACfAACfAACfAACfAACfAACfAACfAACfAACfAACfAACfAACfAACfAACfAACfAACfAACfAACfAACfAACfAACfAACfAACfAACfAACfAACfAACfUlqqAACmAACnAACnAACnAACnAACnAACnAACnAACnAACnAACnAACnAACnAACnAACnAACnAACnAACnAACnAACnAACnAACnAACnAACnAACnAACnAACnAACnAACnAACnAACnAACnAACnAACnAACnAACnAACnAACnAACnUlqtAACxAACwAACwAACwAACwAACwAACwAACwAACwAACwAACwAACwAACwAACwAACwAACwAACwAACwAACwAACwAACwAACwAACwAACwAACwAACwAACwAACwAACwAACwAACwAACwAACwAACwAACwAACwAACwAACwAACwUlqzAAC8AAC7AAC7AAC7AAC7AAC7AAC7AAC7AAC7AAC7AAC7AAC7AAC7AAC7AAC7AAC7AAC7AAC7AAC7AAC7AAC7AAC7AAC7AAC7AAC7AAC7AAC7AAC7AAC7AAC7AAC7AAC7AAC7AAC7AAC7AAC7AAC7AAC7AAC7Ulq4AADIAADFAADFAADFAADFAADFAADFAADFAADFAADFAADFAADFAADFAADFAADFAADFAADFAADFAADFAADFAADFAADFAADFAADFAADFAADFAADFAADFAADFAADFAADFAADFAADFAADFAADFAADFAADFAADFAADFUlq7AADUAADPAADPAADPAADPAADPAADPAADPAADPAADPAADPAADPAADPAADPAADPAADPAADPAADPAADPAADPAADPAADPAADPAADPAADPAADPAADPAADPAADPAADPAADPAADPAADPAADPAADPAADPAADPAADPAADPUlrBAADdAADYAADYAADYAADYAADYAADYAADYAADYAADYAADYAADYAADYAADYAADYAADYAADYAADYAADYAADYAADYAADYAADYAADYAADYAADYAADYAADYAADYAADYAADYAADYAADYAADYAADYAADYAADYAADYAADYUlrDAADpAADhAADiAADiAADiAADiAADiAADiAADiAADiAADiAADiAADiAADiAADiAADiAADiAADiAADiAADiAADiAADiAADiAADiAADiAADiAADiAADiAADiAADiAADiAADiAADiAADiAADiAADiAADiAADiAADiUlrHAADvAADnAADoAADoAADoAADoAADoAADoAADoAADoAADoAADoAADoAADoAADoAADoAADoAADoAADoAADoAADoAADoAADoAADoAADoAADoAADoAADoAADoAADoAADoAADoAADoAADoAADoAADoAADoAADoAADoUlrKAADzAADrAADsAADsAADsAADsAADsAADsAADsAADsAADsAADsAADsAADsAADsAADsAADsAADsAADsAADsAADsAADsAADsAADsAADsAADsAADsAADsAADsAADsAADsAADsAADsAADsAADsAADsAADsAADsAADsUlrKAAD3AADvAADvAADvAADvAADvAADvAADvAADvAADvAADvAADvAADvAADvAADvAADvAADvAADvAADvAADvAADvAADvAADvAADvAADvAADvAADvAADvAADvAADvAADvAADvAADvAADvAADvAADvAADvAADvAADvUlrMAAD5AADxAADxAADxAADxAADxAADxAADxAADxAADxAADxAADxAADxAADxAADxAADxAADxAADxAADxAADxAADxAADxAADxAADxAADxAADxAADxAADxAADxAADxAADxAADxAADxAADxAADxAADxAADxAADxAADxUlrMAAD5AADxAADxAADxAADxAADxAADxAADxAADxAADxAADxAADxAADxAADxAADxAADxAADxAADxAADxAADxAADxAADxAADxAADxAADxAADxAADxAADxAADxAADxAADxAADxAADxAADxAADxAADxAADxAADxAADxUlrKAAD3AADvAADvAADvAADvAADvAADvAADvAADvAADvAADvAADvAADvAADvAADvAADvAADvAADvAADvAADvAADvAADvAADvAADvAADvAADvAADvAADvAADvAADvAADvAADvAADvAADvAADvAADvAADvAADvAADvUlrKAADzAADrAADsAADsAADsAADsAADsAADsAADsAADsAADsAADsAADsAADsAADsAADsAADsAADsAADsAADsAADsAADsAADsAADsAADsAADsAADsAADsAADsAADsAADsAADsAADsAADsAADsAADsAADsAADsAADsUlrHAADvAADnAADoAADoAADoAADoAADoAADoAADoAADoAADoAADoAADoAADoAADoAADoAADoAADoAADoAADoAADoAADoAADoAADoAADoAADoAADoAADoAADoAADoAADoAADoAADoAADoAADoAADoAADoAADoAADoUlrDAADpAADhAADiAADiAADiAADiAADiAADiAADiAADiAADiAADiAADiAADiAADiAADiAADiAADiAADiAADiAADiAADiAADiAADiAADiAADiAADiAADiAADiAADiAADiAADiAADiAADiAADiAADiAADiAADiAADiUlrBAADdAADYAADYAADYAADYAADYAADYAADYAADYAADYAADYAADYAADYAADYAADYAADYAADYAADYAADYAADYAADYAADYAADYAADYAADYAADYAADYAADYAADYAADYAADYAADYAADYAADYAADYAADYAADYAADYAADYUlq7AADUAADPAADPAADPAADPAADPAADPAADPAADPAADPAADPAADPAADPAADPAADPAADPAADPAADPAADPAADPAADPAADPAADPAADPAADPAADPAADPAADPAADPAADPAADPAADPAADPAADPAADPAADPAADPAADPAADPUlq4AADIAADFAADFAADFAADFAADFAADFAADFAADFAADFAADFAADFAADFAADFAADFAADFAADFAADFAADFAADFAADFAADFAADFAADFAADFAADFAADFAADFAADFAADFAADFAADFAADFAADFAADFAADFAADFAADFAADFUlqzAAC8AAC7AAC7AAC7AAC7AAC7AAC7AAC7AAC7AAC7AAC7AAC7AAC7AAC7AAC7AAC7AAC7AAC7AAC7AAC7AAC7AAC7AAC7AAC7AAC7AAC7AAC7AAC7AAC7AAC7AAC7AAC7AAC7AAC7AAC7AAC7AAC7AAC7AAC7UlqtAACxAACwAACwAACwAACwAACwAACwAACwAACwAACwAACwAACwAACwAACwAACwAACwAACwAACwAACwAACwAACwAACwAACwAACwAACwAACwAACwAACwAACwAACwAACwAACwAACwAACwAACwAACwAACwAACwAACwUlqqAACmAACnAACnAACnAACnAACnAACnAACnAACnAACnAACnAACnAACnAACnAACnAACnAACnAACnAACnAACnAACnAACnAACnAACnAACnAACnAACnAACnAACnAACnAACnAACnAACnAACnAACnAACnAACnAACnAACnUlqlAACeAACfAACfAACfAACfAACfAACfAACfAACfAACfAACfAACfAACfAACfAACfAACfAACfAACfAACfAACfAACfAACfAACfAACfAACfAACfAACfAACfAACfAACfAACfAACfAACfAACfAACfAACfAACfAACfAACfUlqhAACWAACYAACYAACYAACYAACYAACYAACYAACYAACYAACYAACYAACYAACYAACYAACYAACYAACYAACYAACYAACYAACYAACYAACYAACYAACYAACYAACYAACYAACYAACYAACYAACYAACYAACYAACYAACYAACYAACYUlqfAACQAACUAACTAACTAACTAACTAACTAACTAACTAACTAACTAACTAACTAACTAACTAACTAACTAACTAACTAACTAACTAACTAACTAACTAACTAACTAACTAACTAACTAACTAACTAACTAACTAACTAACTAACTAACTAACTAACTUlqfAACLAACPAACPAACPAACPAACPAACPAACPAACPAACPAACPAACPAACPAACPAACPAACPAACPAACPAACPAACPAACPAACPAACPAACPAACPAACPAACPAACPAACPAACPAACPAACPAACPAACPAACPAACPAACPAACPAACPUlqeAACIAACLAACLAACLAACLAACLAACLAACLAACLAACLAACLAACLAACLAACLAACLAACLAACLAACLAACLAACLAACLAACLAACLAACLAACLAACLAACLAACLAACLAACLAACLAACLAACLAACLAACLAACLAACLAACLAACL
		endtext
		with this.image1
		.left=0
		.top=2
		.height=this.height-4
		.pictureval=strconv(m.myvar,14)
		endwith
	ENDPROC

	PROCEDURE timer1.Timer
		local oImg
		delta=2
		oIMg=this.parent.image1
		oImg.left=0
		oImg.width=oIMg.width+delta
		this.parent.label1.caption=allt(str(100*oImg.width/this.parent.width,6,2))+" %"
		if oImg.width>=this.parent.width
		this.parent.visible=.f.
		oImg.width=1
		this.enabled=.f.
		thisform.combo1.enabled=.t.
		thisform.edit1.value=""
		endi
	ENDPROC

ENDDEFINE
*
*-- EndDefine: zprog2
**************************

DEFINE CLASS zprog3 AS container
	Top = 36
	Left = 40
	Width = 217
	Height =38
	SpecialEffect = 1
	Visible = .F.
	BackColor = RGB(0,0,0)
	Name = "Container1"

	ADD OBJECT image1 AS image WITH ;
		Stretch = 2, ;
		Height = 32, ;
		Left = 2, ;
		Top = 1, ;
		Width = 10, ;
		Name = "Image1"

	ADD OBJECT timer1 AS timer WITH ;
		Top = 12, ;
		Left = 144, ;
		Height = 23, ;
		Width = 23, ;
		Enabled = .F., ;
		Interval = 100, ;
		Name = "Timer1"


	ADD OBJECT label1 AS label WITH ;
		AutoSize = .T., ;
		FontBold = .T., ;
		FontSize = 8, ;
		BackStyle = 0, ;
		Caption = "", ;
		Height = 16, ;
		Left = 68, ;
		Top = 7, ;
		Width = 2, ;
		ForeColor = RGB(255,255,255), ;
		Name = "Label1"

	PROCEDURE Init
		local m.myvar
		text to m.myvar noshow
		Qk2aFQAAAAAAADYAAAAoAAAAMQAAACUAAAABABgAAAAAAGQVAAAAAAAAAAAAAAAAAAAAAAAAVV1fEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISAFlhYxkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGQBeZmgkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQAZGxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vAGpydDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OwBweHpISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEgAd3+BVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWAH6GiGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZACFjY9ycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnIAi5OVfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+AJGZm4mJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiQCWnqCUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJQAmqKkm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubAJ2lp6KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogCgqKqnp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6cAoamrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqAKOrra2tra2tra2tra2tra2tra2tra2tra2tra2tra2tra2tra2tra2tra2tra2tra2tra2tra2tra2tra2tra2tra2tra2tra2tra2tra2tra2tra2tra2tra2tra2tra2tra2tra2tra2tra2tra2tra2tra2tra2tra2tra2tra2tra2tra2tra2tra2tra2trQChqauqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqoAoKiqp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enAJ2lp6KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogCaoqSbm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5sAlp6glJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUAJGZm4mJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiQCLk5V+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4AhY2PcnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJyAH6GiGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZAB3f4FWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlYAcHh6SEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhIAGpydDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OwBkbG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8AXmZoJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkAFlhYxkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGQBVXV8SEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhIAUlpcCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLAE9XWQYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgBOVlgDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAc36BTFRWTFRWTFRWTFRWTFRWTFRWTFRWTFRWTFRWTFRWTFRWTFRWTFRWTFRWTFRWTFRWTFRWTFRWTFRWTFRWTFRWTFRWTFRWTFRWTFRWTFRWTFRWTFRWTFRWTFRWTFRWTFRWTFRWTFRWTFRWTFRWTFRWTFRWTFRWTFRWTFRWTFRWTFRWTFRWTFRWTFRWTFRWTFRWAA==
		endtext
		with this.image1
		.left=0
		.top=2
		.height=this.height-4
		.pictureval=strconv(m.myvar,14)
		endwith
	ENDPROC

	PROCEDURE timer1.Timer
		local oImg
		delta=2
		oIMg=this.parent.image1
		oImg.left=0
		oImg.width=oIMg.width+delta
		this.parent.label1.caption=allt(str(100*oImg.width/this.parent.width,6,2))+" %"
		if oImg.width>=this.parent.width
		this.parent.visible=.f.
		oImg.width=1
		this.enabled=.f.
	    thisform.combo1.enabled=.t.
	    thisform.edit1.value=""
		endi
	ENDPROC

ENDDEFINE
*
*-- EndDefine: zprog3
**************************

DEFINE CLASS zprog4 AS container
	Top = 36
	Left = 40
	Width = 217
	Height =38
	SpecialEffect = 1
	Visible = .F.
	BackColor = RGB(0,0,0)
	Name = "Container1"

	ADD OBJECT image1 AS image WITH ;
		Stretch = 2, ;
		Height = 32, ;
		Left = 2, ;
		Top = 1, ;
		Width = 10, ;
		Name = "Image1"

	ADD OBJECT timer1 AS timer WITH ;
		Top = 12, ;
		Left = 144, ;
		Height = 23, ;
		Width = 23, ;
		Enabled = .F., ;
		Interval = 100, ;
		Name = "Timer1"


	ADD OBJECT label1 AS label WITH ;
		AutoSize = .T., ;
		FontBold = .T., ;
		FontSize = 8, ;
		BackStyle = 0, ;
		Caption = "", ;
		Height = 16, ;
		Left = 68, ;
		Top = 7, ;
		Width = 2, ;
		ForeColor = RGB(255,0,0), ;
		Name = "Label1"

	PROCEDURE Init
		local m.myvar
		text to m.myvar noshow
		Qk0uCwAAAAAAADYAAAAoAAAARwAAAA0AAAABABgAAAAAAPgKAAAAAAAAAAAAAAAAAAAAAAAA7+/v////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAAA////kOiPkOiPkOeOkOeOkOeOkOeOkOiPkOeO/Pz8/Pz8kOiPkOiPkOeOkOeOkOeOkOeOkOiPkOeO/Pz8/Pz8kOiPkOiPkOeOkOeOkOeOkOeOkOiPkOeO/Pz8/Pz8kOiPkOiPkOeOkOeOkOeOkOeOkOiPkOeO/Pz8/Pz8kOiPkOiPkOeOkOeOkOeOkOeOkOiPkOeO/Pz8/Pz8kOiPkOiPkOeOkOeOkOeOkOeOkOiPkOeO/Pz8/Pz8kOiPkOiPkOeOkOeOkOeOkOeOkOiPkOeO/Pz8/Pz8AAAA////d+J2eOJ2d+J1d+J1d+J1d+J2d+J2d+J1+/v7+/v7d+J2eOJ2d+J1d+J1d+J1d+J2d+J2d+J1+/v7+/v7d+J2eOJ2d+J1d+J1d+J1d+J2d+J2d+J1+/v7+/v7d+J2eOJ2d+J1d+J1d+J1d+J2d+J2d+J1+/v7+/v7d+J2eOJ2d+J1d+J1d+J1d+J2d+J2d+J1+/v7+/v7d+J2eOJ2d+J1d+J1d+J1d+J2d+J2d+J1+/v7+/v7d+J2eOJ2d+J1d+J1d+J1d+J2d+J2d+J1+/v7+/v7AAAA////Xd1bXt1bXd1bXd1bXd1bXt1bXd1bXd1b+fn5+fn5Xd1bXt1bXd1bXd1bXd1bXt1bXd1bXd1b+fn5+fn5Xd1bXt1bXd1bXd1bXd1bXt1bXd1bXd1b+fn5+fn5Xd1bXt1bXd1bXd1bXd1bXt1bXd1bXd1b+fn5+fn5Xd1bXt1bXd1bXd1bXd1bXt1bXd1bXd1b+fn5+fn5Xd1bXt1bXd1bXd1bXd1bXt1bXd1bXd1b+fn5+fn5Xd1bXt1bXd1bXd1bXd1bXt1bXd1bXd1b+fn5+fn5AAAA////RNdBRNdBRNdBRddCRNdBRddCRNdBRNdB9vb29vb2RNdBRNdBRNdBRddCRNdBRddCRNdBRNdB9vb29vb2RNdBRNdBRNdBRddCRNdBRddCRNdBRNdB9vb29vb2RNdBRNdBRNdBRddCRNdBRddCRNdBRNdB9vb29vb2RNdBRNdBRNdBRddCRNdBRddCRNdBRNdB9vb29vb2RNdBRNdBRNdBRddCRNdBRddCRNdBRNdB9vb29vb2RNdBRNdBRNdBRddCRNdBRddCRNdBRNdB9vb29vb2AAAA////MdMuMdMuMdMuMdMuMdMuMtMvMdMuMdMu8/Pz8/PzMdMuMdMuMdMuMdMuMdMuMtMvMdMuMdMu8/Pz8/PzMdMuMdMuMdMuMdMuMdMuMtMvMdMuMdMu8/Pz8/PzMdMuMdMuMdMuMdMuMdMuMtMvMdMuMdMu8/Pz8/PzMdMuMdMuMdMuMdMuMdMuMtMvMdMuMdMu8/Pz8/PzMdMuMdMuMdMuMdMuMdMuMtMvMdMuMdMu8/Pz8/PzMdMuMdMuMdMuMdMuMdMuMtMvMdMuMdMu8/Pz8/PzAAAA////ONU1ONU1ONU1ONU1ONU1N9U1ONU1ONU18fHx8fHxONU1ONU1ONU1ONU1ONU1N9U1ONU1ONU18fHx8fHxONU1ONU1ONU1ONU1ONU1N9U1ONU1ONU18fHx8fHxONU1ONU1ONU1ONU1ONU1N9U1ONU1ONU18fHx8fHxONU1ONU1ONU1ONU1ONU1N9U1ONU1ONU18fHx8fHxONU1ONU1ONU1ONU1ONU1N9U1ONU1ONU18fHx8fHxONU1ONU1ONU1ONU1ONU1N9U1ONU1ONU18fHx8fHxAAAA////UNpNUNpOUNpOUNpOUNpOUNpNUNpOUNpO9PT09PT0UNpNUNpOUNpOUNpOUNpOUNpNUNpOUNpO9PT09PT0UNpNUNpOUNpOUNpOUNpOUNpNUNpOUNpO9PT09PT0UNpNUNpOUNpOUNpOUNpOUNpNUNpOUNpO9PT09PT0UNpNUNpOUNpOUNpOUNpOUNpNUNpOUNpO9PT09PT0UNpNUNpOUNpOUNpOUNpOUNpNUNpOUNpO9PT09PT0UNpNUNpOUNpOUNpOUNpOUNpNUNpOUNpO9PT09PT0AAAA////aN9maN9maN9maN9maN9maN9maN9maN9m9vb29vb2aN9maN9maN9maN9maN9maN9maN9maN9m9vb29vb2aN9maN9maN9maN9maN9maN9maN9maN9m9vb29vb2aN9maN9maN9maN9maN9maN9maN9maN9m9vb29vb2aN9maN9maN9maN9maN9maN9maN9maN9m9vb29vb2aN9maN9maN9maN9maN9maN9maN9maN9m9vb29vb2aN9maN9maN9maN9maN9maN9maN9maN9m9vb29vb2AAAA////fuR8fuR8feN7fuR8fuR8fuR8fuR8fuR8+fn5+fn5fuR8fuR8feN7fuR8fuR8fuR8fuR8fuR8+fn5+fn5fuR8fuR8feN7fuR8fuR8fuR8fuR8fuR8+fn5+fn5fuR8fuR8feN7fuR8fuR8fuR8fuR8fuR8+fn5+fn5fuR8fuR8feN7fuR8fuR8fuR8fuR8fuR8+fn5+fn5fuR8fuR8feN7fuR8fuR8fuR8fuR8fuR8+fn5+fn5fuR8fuR8feN7fuR8fuR8fuR8fuR8fuR8+fn5+fn5AAAA////lumVlumVlemUlumVlumVlumVlumVlumV/Pz8/Pz8lumVlumVlemUlumVlumVlumVlumVlumV/Pz8/Pz8lumVlumVlemUlumVlumVlumVlumVlumV/Pz8/Pz8lumVlumVlemUlumVlumVlumVlumVlumV/Pz8/Pz8lumVlumVlemUlumVlumVlumVlumVlumV/Pz8/Pz8lumVlumVlemUlumVlumVlumVlumVlumV/Pz8/Pz8lumVlumVlemUlumVlumVlumVlumVlumV/Pz8/Pz8AAAA7+/vrO2rrO2rrO2rrO2rrO2rrO2rrO2rrO2r/Pz8/Pz8rO2rrO2rrO2rrO2rrO2rrO2rrO2rrO2r/Pz8/Pz8rO2rrO2rrO2rrO2rrO2rrO2rrO2rrO2r/Pz8/Pz8rO2rrO2rrO2rrO2rrO2rrO2rrO2rrO2r/Pz8/Pz8rO2rrO2rrO2rrO2rrO2rrO2rrO2rrO2r/Pz8/Pz8rO2rrO2rrO2rrO2rrO2rrO2rrO2rrO2r/Pz8/Pz8rO2rrO2rrO2rrO2rrO2rrO2rrO2rrO2r/Pz8/Pz8AAAA7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/vAAAA
		endtext
		with this.image1
		.left=0
		.top=2
		.height=this.height-4
		.pictureval=strconv(m.myvar,14)
		endwith
	ENDPROC

	PROCEDURE timer1.Timer
		local oImg
		delta=2
		oIMg=this.parent.image1
		oImg.left=0
		oImg.width=oIMg.width+delta
		this.parent.label1.caption=allt(str(100*oImg.width/this.parent.width,6,2))+" %"
		if oImg.width>=this.parent.width
		this.parent.visible=.f.
		oImg.width=1
		this.enabled=.f.
	  thisform.combo1.enabled=.t.
	  thisform.edit1.value=""
		endi
	ENDPROC

ENDDEFINE
*
*-- EndDefine: zprog4
**************************

DEFINE CLASS zprog5 AS container
	Top = 36
	Left = 40
	Width = 217
	Height = 38
	BackStyle = 0
	BorderWidth = 0
	SpecialEffect = 1
	BackColor = RGB(0,0,0)
	Visible = .F.
	Name = "ycont5"
	

	ADD OBJECT imgcanvas1 AS imgcanvas WITH ;
		Height = 36, ;
		Left = 3, ;
		Top = 4, ;
		Width = 312, ;
		rendermode = 4, ;
		Name = "Imgcanvas1"

	ADD OBJECT timer1 AS timer WITH ;
		Top = 10, ;
		Left = 257, ;
		Height = 23, ;
		Width = 23, ;
		Enabled = .F., ;
		Interval = 120, ;
		Name = "Timer1"

	PROCEDURE Init
	
		with this.imgcanvas1
		.left=0
		.width=0
		.height=.height+2
		endwith
	ENDPROC

	PROCEDURE imgcanvas1.beforedraw
		LOCAL loGfx AS xfcGraphics
		**************************
		logfx=this.ogfx
		 WITH _screen.system.Drawing
		loGfx.SmoothingMode = .Drawing2D.SmoothingMode.AntiAlias
		 this.clear(.color.black)
		**************************
		xpath =.Drawing2D.GraphicsPath.New()
		xpath.AddRectangle(+5,+5, this.width-10,this.height-10)

		Local pgb As xfcPathGradientBrush
		pgb=.Drawing2d.PathGradientBrush.new(xpath)

		m.ycolor1=rgb(255*rand(),255*rand(),255*rand())
		m.ycolor2=rgb(255*rand(),255*rand(),255*rand())
		dimension acolor(4)
		acolor(1)=.color.fromRGB(m.ycolor1)
		acolor(2)=.color.fromRGB(m.ycolor2)
		acolor(3)=.color.yellow
		acolor(4)=.color.blue

		for i=1 to 4
		pgb.SurroundColors(i)=acolor(i)
		endfor
		loGfx.Fillpath(@pgb, xpath)
		pgb.Dispose()
		local yrect as xfcRectangle
		yrect=.rectangle.new(0,0,this.width,this.height)
		pen=.pen.new(.color.red,6)
		loGfx.drawRectangle(pen,yrect)
		pen.dispose()
		*********************
		local ystring
		ystring=str(100*this.width/this.parent.width,6,2)+" %"
		 loFont = .Font.New("tahoma", 9,  .FontStyle.BoldItalic)
			loSizeF = loGfx.MeasureString(ystring, loFont)
			loRectangleF =_screen.system.Drawing.RectangleF.New((this.width-loSizeF.width)/2,(this.height-loSizeF.height)/2,loSizeF.Width, loSizeF.Height)
			loBrush = .Drawing2D.LinearGradientBrush.New(loRectangleF,.Color.red,.Color.green,3)
		if 	(this.width-loSizeF.width)/2>10
			loGfx.DrawString(ystring, loFont,loBrush, loRectangleF)
		endi
		***********************

		ENDWITH
		return
	ENDPROC

	PROCEDURE imgcanvas1.setup
		with this
		.width=0
		.height=.parent.height-4
		.left=0
		.top=0
		endwith
	ENDPROC

	PROCEDURE timer1.Timer
		local delta,length,oo
		m.oo=this.parent.imgcanvas1
		delta=2
		m.oo.width=m.oo.width+delta
		if m.oo.width<=this.parent.width
		m.oo.draw
		else

		m.oo.width=this.parent.width
		m.oo.draw
		this.parent.visible=.f.
		this.enabled=.f.
		this.parent.init()
		thisform.combo1.enabled=.t.
        thisform.edit1.value=""
		endi
	ENDPROC

ENDDEFINE
*
*-- EndDefine: zprog5
***************************

DEFINE CLASS zprog6 AS container
	Top = 36
	Left = 40
	Width = 217
	Height = 38
	BackStyle = 1
	backcolor=0
	BorderWidth = 0
	specialEffect=1
	borderWidth=1
	
	Visible = .F.
	Name = "ycont6"


	ADD OBJECT timer1 AS timer WITH ;
		Top = 12, ;
		Left = 216, ;
		Enabled = .F., ;
		Interval = 120, ;
		Name = "Timer1"


	ADD OBJECT imgcanvas1 AS imgcanvas  WITH ;
		Height = 36, ;
		Left = 9, ;
		Top = 0, ;
		Width = 214, ;
		Name = "Imgcanvas1"


	PROCEDURE Init
		with this.imgcanvas1
		.left=0
		.width=0
		.height=.parent.height-2
		endwith
	ENDPROC


	PROCEDURE timer1.Timer
		local delta,length,oo
		m.oo=this.parent.imgcanvas1
		delta=2
		m.oo.width=m.oo.width+delta
		if m.oo.width<=this.parent.width
		m.oo.draw
		else

		m.oo.width=this.parent.width
		m.oo.draw
		this.parent.visible=.f.
		this.enabled=.f.
		this.parent.init()
thisform.combo1.enabled=.t.
thisform.edit1.value=""
		endi
	ENDPROC



	PROCEDURE imgcanvas1.beforedraw
		LOCAL loGfx5 AS xfcGraphics
		*********************************************************
		logfx5=this.ogfx
		 WITH _screen.system.Drawing
		loGfx5.SmoothingMode = .Drawing2D.SmoothingMode.AntiAlias
		 this.clear(.color.green)
		**********************************************************
		m.ycolor1=rgb(255*rand(),255*rand(),255*rand())
		m.ycolor2=rgb(255*rand(),255*rand(),255*rand())
		color1=.color.fromRGB(m.ycolor1)
		color2=.color.fromRGB(m.ycolor2)
		* br = _screen.system.Drawing.drawing2d.LinearGradientBrush.New(this.Rectangle,color1,color2,0)
		* br.SetBlendTriangularShape(0.5,0.75)
		 *loGFX5.FillRectangle(br,this.Rectangle)
		 *br.Dispose()

		**********************
		br =_screen.system.Drawing.drawing2d.LinearGradientBrush.New(this.Rectangle,.Color.Black,.Color.Black,0,.f.)
		cb = .Drawing2d.ColorBlend.new(9)

		for f=1 to 9
		cb.Positions[f]=(f-1)/8
		cb.Colors=.Color.NewArray(.Color.Red,.Color.Orange,.Color.Yellow,.Color.Green,.Color.Blue,.Color.Indigo,.Color.Violet,.color.magenta,.color.cyan)
		br.InterpolationColors=cb
		loGfx5.FillRectangle(br,this.Rectangle)
		endfor
		br.Dispose()

		************************


		yrect5=.rectangle.new(0,0,this.width,this.height-4)
		pen=.pen.new(.color.gold,6)
		*loGfx5.drawRectangle(pen,yrect5)
		pen.dispose()
		*********************
		ystring4=str(100*this.width/this.parent.width,6,2)+" %"
		   loFont = .Font.New("tahoma", 9,  .FontStyle.BoldItalic)
			loSizeF1 = loGfx5.MeasureString(ystring4, loFont)
			loRectangleF =_screen.system.Drawing.RectangleF.New((this.width-loSizeF1.width)/2,(this.height-loSizeF1.height)/2,loSizeF1.Width, loSizeF1.Height)
			loBrush = .Drawing2D.LinearGradientBrush.New(loRectangleF,.Color.red,.Color.green,3)
		if 	(this.width-loSizeF1.width)/2>10
			loGfx5.DrawString(ystring4, loFont,loBrush, loRectangleF)
		endi
		***********************

		ENDWITH
		return
	ENDPROC


ENDDEFINE
*
*-- EndDefine: zprog6
**************************************************

DEFINE CLASS zprog7 AS container
	Top = 36
	Left = 40
	Width = 217
	Height = 38
	BackStyle = 0
	BorderWidth = 1
	SpecialEffect = 1
	Visible = .F.
	Name = "ycont7"

	ADD OBJECT timer1 AS timer WITH ;
		Top = 12, ;
		Left = 216, ;
		Height = 23, ;
		Width = 23, ;
		Enabled = .F., ;
		Interval = 120, ;
		Name = "Timer1"

	ADD OBJECT imgcanvas1 AS imgcanvas WITH ;
		Height = 38, ;
		Left = 2, ;
		Top = 2, ;
		Width = 138, ;
		Name = "Imgcanvas1"

	PROCEDURE Init
		with this.imgcanvas1
		.left=0
		.width=0
		.height=.height+2
		endwith
	ENDPROC

	PROCEDURE timer1.Timer
		local delta,length,oo
		m.oo=this.parent.imgcanvas1
		delta=2
		m.oo.width=m.oo.width+delta
		if m.oo.width<=this.parent.width
		m.oo.draw
		else

		m.oo.width=this.parent.width
		m.oo.draw
		this.parent.visible=.f.
		this.enabled=.f.
		this.parent.init()
thisform.combo1.enabled=.t.
thisform.edit1.value=""
		endi
	ENDPROC

	PROCEDURE imgcanvas1.beforedraw
		LOCAL loGfx7 AS xfcGraphics
		*********************************************************
		logfx7=this.ogfx
		 WITH _screen.system.Drawing
		loGfx7.SmoothingMode = .Drawing2D.SmoothingMode.AntiAlias
		* this.clear(.color.cyan)
		m.ycolor1=rgb(255*rand(),255*rand(),255*rand())
		m.ycolor2=rgb(255*rand(),255*rand(),255*rand())
		color1=.color.fromRGB(m.ycolor1)
		color2=.color.fromRGB(m.ycolor2)
		**********************
		br =_screen.system.Drawing.drawing2d.LinearGradientBrush.New(this.Rectangle,.Color.Black,.Color.Black,0,.f.)
		cb = .Drawing2d.ColorBlend.new(9)

		n=this.width/10
		for i=1 to n
		yre=.rectangle.new(0+(i-1)*n,0,n,this.height)
		bb=.drawing2d.LinearGradientBrush.New(yre,.color.green,.Color.red,1)
		logfx7.Fillrectangle(bb,yre)
		pen=.pen.new(.color.black,1)
		loGfx7.drawrectangle(pen,yre)
		bb.dispose()
		endfor

		************************
		yrect7=.rectangle.new(0,0,this.width,this.height-5)
		pen=.pen.new(.color.gold,6)
		loGfx7.drawRectangle(pen,yrect7)
		pen.dispose()
		*********************
		ystring7=str(100*this.width/this.parent.width,6,2)+" %"
		   loFont = .Font.New("tahoma", 9,  .FontStyle.BoldItalic)
			loSizeF1 = loGfx7.MeasureString(ystring7, loFont)
			loRectangleF =_screen.system.Drawing.RectangleF.New((this.width-loSizeF1.width)/2,(this.height-loSizeF1.height)/2,loSizeF1.Width, loSizeF1.Height)
			loBrush = .Drawing2D.LinearGradientBrush.New(loRectangleF,.Color.white,.Color.white,3)
		if 	(this.width-loSizeF1.width)/2>10
			loGfx7.DrawString(ystring7, loFont,loBrush, loRectangleF)
		endi
		***********************

		ENDWITH
		return
	ENDPROC

ENDDEFINE
*
*-- EndDefine: zprog7
****************************

DEFINE CLASS zprog8 AS container
	Top = 36
	Left = 40
	Width = 217
	Height = 38
	BackStyle = 0
	BorderWidth = 1
	SpecialEffect = 1
	Visible = .F.
	Name = "ycont8"

	ADD OBJECT timer1 AS timer WITH ;
		Top = 12, ;
		Left = 216, ;
		Height = 23, ;
		Width = 23, ;
		Enabled = .F., ;
		Interval = 120, ;
		Name = "Timer1"

	ADD OBJECT imgcanvas1 AS imgcanvas WITH ;
		Height = 36, ;
		Left = 1, ;
		Top = 2, ;
		Width = 192, ;
		Name = "Imgcanvas1"

	PROCEDURE Init
		with this.imgcanvas1
		.left=-1
		.width=0
		.height=.parent.height-2
		endwith
	ENDPROC

	PROCEDURE timer1.Timer
		local delta,length,oo
		m.oo=this.parent.imgcanvas1
		delta=2
		m.oo.width=m.oo.width+delta
		if m.oo.width<=this.parent.width
		m.oo.draw
		else

		m.oo.width=this.parent.width
		m.oo.draw
		this.parent.visible=.f.
		this.enabled=.f.
		this.parent.init()
thisform.combo1.enabled=.t.
thisform.edit1.value=""
		endi
	ENDPROC

	PROCEDURE imgcanvas1.beforedraw

		LOCAL loGfx AS xfcGraphics
		*********************************************************
		logfx=this.ogfx
		 WITH _screen.system.Drawing
		loGfx.SmoothingMode = .Drawing2D.SmoothingMode.AntiAlias
		 this.clear(.color.black)
		**********************************************************
		**blends
		br = .drawing2d.LinearGradientBrush.New(This.Rectangle,.COLOR.red,.COLOR.black,1 )   &&,.F.)
					bl=.Drawing2d.Blend.New()
					bl.Factors = _Screen.System.Single.NewArray(0.1,0.5,0.8,3)
					bl.Positions = _Screen.System.Single.NewArray(0.1,0.5,0.8,1)
					br.Blend=bl
					This.oGfx.FillRectangle(br,This.Rectangle)
					br.Dispose()

		************************
		yrect=.rectangle.new(0,0,this.width,this.height)
		pen=.pen.new(.color.gold,6)
		loGfx.drawRectangle(pen,yrect)
		pen.dispose()
		*********************
		ystring=str(100*this.width/this.parent.width,6,2)+" %"
		   loFont = .Font.New("tahoma", 9,  .FontStyle.BoldItalic)
			loSizeF1 = loGfx.MeasureString(ystring, loFont)
			loRectangleF =_screen.system.Drawing.RectangleF.New((this.width-loSizeF1.width)/2,(this.height-loSizeF1.height)/2,loSizeF1.Width, loSizeF1.Height)
			loBrush = .Drawing2D.LinearGradientBrush.New(loRectangleF,.Color.white,.Color.green,3)
		if 	(this.width-loSizeF1.width)/2>10
			loGfx.DrawString(ystring, loFont,loBrush, loRectangleF)
		endi
		***********************
		ENDWITH

		return
	ENDPROC

ENDDEFINE
*
*-- EndDefine: zprog8
***************************

DEFINE CLASS zprog9 AS container
	Top = 20
	Left = 250
	Width = 48
	Height = 200
	BackStyle = 0
	BorderWidth = 1
	SpecialEffect = 1
	Visible = .F.
	Name = "ycont9"

	ADD OBJECT timer1 AS timer WITH ;
		Top = 0, ;
		Left = 20, ;
		Height = 23, ;
		Width = 23, ;
		Enabled = .F., ;
		Interval = 100, ;
		Name = "Timer1"

	ADD OBJECT imgcanvas1 AS imgcanvas WITH ;
		Height = 1, ;
		Left = 0, ;
		Top = 36, ;
		Width = 56, ;
		Name = "Imgcanvas1"

	PROCEDURE Init
		with this.imgcanvas1
		.left=2
		.top=1
		.width=.parent.width-4
		.height=0
		endwith
	ENDPROC

	PROCEDURE timer1.Timer
		local delta,length,oo
		m.oo=this.parent.imgcanvas1
		m.delta=2
		m.oo.height=m.oo.height+m.delta
		if m.oo.height<=this.parent.height
		m.oo.draw
		else
		m.oo.height=this.parent.height
		m.oo.draw
		this.parent.visible=.f.
		this.enabled=.f.
		this.parent.init()
thisform.combo1.enabled=.t.
thisform.edit1.value=""
		endi
	ENDPROC

	PROCEDURE imgcanvas1.beforedraw
		LOCAL alogfx AS xfcGraphics
		**************************
		alogfx=this.ogfx
		 WITH _screen.system.Drawing
		alogfx.SmoothingMode = .Drawing2D.SmoothingMode.AntiAlias
		 this.clear(.color.black)
		**************************
		xpath =.Drawing2D.GraphicsPath.New()
		xpath.AddRectangle(0,0, this.width,this.height)

		Local pgb As xfcPathGradientBrush
		pgb=.Drawing2d.PathGradientBrush.new(xpath)

		m.ycolor1=rgb(255*rand(),255*rand(),255*rand())
		m.ycolor2=rgb(255*rand(),255*rand(),255*rand())

		dimension acolor(4)
		acolor(1)=.color.fromRGB(m.ycolor1)
		acolor(2)=.color.fromRGB(m.ycolor2)
		acolor(3)=.color.yellow
		acolor(4)=.color.blue

		for i=1 to 4
		pgb.SurroundColors(i)=acolor(i)
		endfor
		alogfx.Fillpath(@pgb, xpath)
		pgb.Dispose()

		*pen=.pen.new(.color.red,6)
		*alogfx.drawRectangle(pen,this.rectangle)
		*pen.dispose()
		*********************
		local ystring
		ystring=str(100*this.height/this.parent.height,3,0)+"%"
		 loFont = .Font.New("tahoma", 7,  .FontStyle.BoldItalic)
			loSizeF = alogfx.MeasureString(ystring, loFont)
			loRectangleF =_screen.system.Drawing.RectangleF.New((this.width-loSizeF.width)/2,(this.height-loSizeF.height)/2,loSizeF.Width, loSizeF.Height)
			loBrush = .Drawing2D.LinearGradientBrush.New(loRectangleF,.Color.red,.Color.green,3)
		if 	(this.height-loSizeF.height)/2>10
			alogfx.DrawString(ystring, loFont,loBrush, loRectangleF)
		endi
		***********************
		ENDWITH
		return
	ENDPROC
ENDDEFINE
*
*-- EndDefine: zprog9
*****************************
*
DEFINE CLASS zprog10 AS container
	Top = 36
	Left = 40
	Width = 217
	Height = 38
	SpecialEffect = 1
	Visible = .F.
	BackColor = RGB(0,0,0)
	Name = "ycont10"

	ADD OBJECT timer1 AS timer WITH ;
		Top = 12, ;
		Left = 171, ;
		Height = 23, ;
		Width = 23, ;
		Enabled = .F., ;
		Interval = 100, ;
		Name = "Timer1"

	ADD OBJECT label1 AS label WITH ;
		AutoSize = .T., ;
		FontBold = .T., ;
		FontSize = 8, ;
		BackStyle = 0, ;
		Caption = "", ;
		Height = 16, ;
		Left = 68, ;
		Top = 7, ;
		Width = 2, ;
		ForeColor = RGB(255,255,255), ;
		Name = "Label1"

	ADD OBJECT imgcanvas1   AS imgcanvas WITH ;
		Height = 36, ;
		Left = 5, ;
		Top = 4, ;
		Width = 152, ;
		Name = "Imgcanvas1"


	PROCEDURE Init
		with this.imgcanvas1
		.left=1
		.width=0
		.top=2
		.height=.parent.height-4
		endwith
	ENDPROC

	PROCEDURE timer1.Timer
		local delta,length,oo
				m.oo=this.parent.imgcanvas1
				m.delta=2
				m.oo.width=m.oo.width+m.delta
				if m.oo.width<=this.parent.width
				m.oo.draw
				else
				m.oo.height=this.parent.width
				m.oo.draw
				this.parent.visible=.f.
				this.enabled=.f.
				this.parent.init()
		thisform.combo1.enabled=.t.
		thisform.edit1.value=""
				endi
	ENDPROC

	PROCEDURE imgcanvas1.beforedraw
		LOCAL loGfx AS xfcGraphics
		*********************************************************
		logfx=this.ogfx
		 WITH _screen.system.Drawing
		loGfx.SmoothingMode = .Drawing2D.SmoothingMode.AntiAlias
		 this.clear(.color.black)
		**********************************************************
		**blends
		br = .drawing2d.LinearGradientBrush.New(This.Rectangle,.COLOR.green,.COLOR.black,1 )   &&,.F.)
					bl=.Drawing2d.Blend.New()
					bl.Factors = _Screen.System.Single.NewArray(0.1,0.5,0.8,3)
					bl.Positions = _Screen.System.Single.NewArray(0.1,0.5,0.8,1)
					br.Blend=bl
					This.oGfx.FillRectangle(br,This.Rectangle)
					br.Dispose()

		************************
		yrect=.rectangle.new(0,0,this.width,this.height)
		pen=.pen.new(.color.red,3)
		loGfx.drawRectangle(pen,yrect)
		pen.dispose()
		*********************
		ystring=str(100*this.width/this.parent.width,6,2)+" %"
		   loFont = .Font.New("tahoma", 9,  .FontStyle.BoldItalic)
			loSizeF1 = loGfx.MeasureString(ystring, loFont)
			loRectangleF =_screen.system.Drawing.RectangleF.New((this.width-loSizeF1.width)/2,(this.height-loSizeF1.height)/2,loSizeF1.Width, loSizeF1.Height)
			loBrush = .Drawing2D.LinearGradientBrush.New(loRectangleF,.Color.white,.Color.green,3)
		if 	(this.width-loSizeF1.width)/2>10
			loGfx.DrawString(ystring, loFont,loBrush, loRectangleF)
		endi
	***********************
		ENDWITH

		return
	ENDPROC

ENDDEFINE
*
*-- EndDefine: zprog10
*****************************

DEFINE CLASS zprog11 AS container
	Top = 36
	Left = 40
	Width = 217
	Height = 38
	SpecialEffect = 1
	visible=.f.
	BackColor = RGB(0,0,0)
	Name = "ycont11"

	ADD OBJECT timer1 AS timer WITH ;
		Top = 12, ;
		Left = 171, ;
		Height = 23, ;
		Width = 23, ;
		Enabled = .F., ;
		Interval = 100, ;
		Name = "Timer1"

	ADD OBJECT label1 AS label WITH ;
		AutoSize = .T., ;
		FontBold = .T., ;
		FontSize = 8, ;
		BackStyle = 0, ;
		Caption = "", ;
		Height = 16, ;
		Left = 68, ;
		Top = 7, ;
		Width = 2, ;
		ForeColor = RGB(255,255,255), ;
		Name = "Label1"

	ADD OBJECT imgcanvas1 AS imgcanvas WITH ;
		Anchor = 0, ;
		Stretch = 2, ;
		Height = 36, ;
		Left = 3, ;
		Top = 3, ;
		Width = 171, ;
		visible=.t.,;
		Name = "Imgcanvas1"

	PROCEDURE Init
		with this.imgcanvas1
		.left=1
		.width=0
		.top=3
		.height=.parent.height-6
		.visible=.t.
		endwith
	ENDPROC

	PROCEDURE timer1.Timer
		local delta,oo
				m.oo=this.parent.imgcanvas1
				m.delta=2
				m.oo.width=m.oo.width+m.delta
				if m.oo.width<=this.parent.width
				m.oo.draw
				else
				m.oo.width=this.parent.width
				m.oo.draw
				this.parent.visible=.f.
				this.enabled=.f.
				this.parent.init()
				thisform.combo1.enabled=.t.
				thisform.edit1.value=""
				endi
	ENDPROC

	PROCEDURE imgcanvas1.beforedraw
		This.Clear
		logfx=this.ogfx
		 WITH _screen.system.Drawing
		 loGfx.SmoothingMode = .Drawing2D.SmoothingMode.AntiAlias


		color1=.color.fromRGB(this.ycolor)
		color2=.color.white     &&fromRGB(thisform.ycolor2)

		 br = .drawing2d.LinearGradientBrush.New(this.Rectangle,color1,color2,1)
		 br.SetBlendTriangularShape(0.5,1.0)
		 rc=.rectangle.new(0,0,this.width,this.height)
		 loGFX.FillRectangle(br,rc)   &&this.Rectangle)
		 br.Dispose()

		p=.pen.new(.color.fromARGB(128,.color.black),8)
		logfx.drawRectangle(p,this.rectangle)

		*texte
		LOCAL loFont AS xfcFont
		LOCAL loBrush AS xfcLinearGradientBrush
		LOCAL loRectangleF As xfcRectangleF
		LOCAL loSizeF AS xfcSizeF

		local ystring
		ystring=str(100*rc.width/this.parent.width,6,2)+" %"
		 loFont = .Font.New("tahoma", 9,  .FontStyle.BoldItalic)
			loSizeF = loGfx.MeasureString(ystring, loFont)
			loRectangleF =_screen.system.Drawing.RectangleF.New((rc.width-loSizeF.width)/2,(rc.height-loSizeF.height)/2,loSizeF.Width, loSizeF.Height)
			loBrush = .Drawing2D.LinearGradientBrush.New(loRectangleF,.Color.green,.Color.red,3)
		if 	(rc.width-loSizeF.width)/2>10
			loGfx.DrawString(ystring, loFont,loBrush, loRectangleF)
		endi


		endwith
		return
	ENDPROC

	PROCEDURE imgcanvas1.setup
		rand(-1)
		with this
		.addproperty("ycolor",rgb( 255*rand(),255*rand(),255*rand()) )
		endwith
	ENDPROC


ENDDEFINE
*
*-- EndDefine: zprog11
*********************************************************
DEFINE CLASS zprog12 AS container
	Width =300
	Height = 150
	Top = 5
	Left = 5
	SpecialEffect = 1
	visible=.f.
	BackColor = RGB(0,0,0)
	borderwidth=0	
	Name = "ycont12"

	ADD OBJECT timer1 AS timer WITH ;
		Top = 12, ;
		Left = 204, ;
		Height = 23, ;
		Width = 23, ;
		Enabled = .F., ;
		Interval = 90, ;
		Name = "Timer1"

	ADD OBJECT imgcanvas1 AS imgcanvas WITH ;
		Anchor = 0, ;
		Stretch = 2, ;
		Height = 150, ;
		Left = 0, ;
		Top = 0, ;
		Visible = .F., ;
		Width = 300, ;
		rendermode = 4, ;
		Name = "Imgcanvas1"

	PROCEDURE timer1.Timer
		this.parent.imgcanvas1.delta=this.parent.imgcanvas1.delta+2
		this.parent.imgcanvas1.draw

		if this.parent.imgcanvas1.delta>=this.parent.imgcanvas1.width
		this.enabled=.f.
		this.parent.imgcanvas1.visible=.f.
		thisform.combo1.enabled=.t.
		endi
	ENDPROC

	PROCEDURE imgcanvas1.setup
		this.addproperty("cas",0)
		this.addproperty("colormask","")
		this.addproperty("ymask","")
		this.addproperty("delta",0)
		this.addproperty("ycolor1",rgb(255*rand(),255*rand(),255*rand()))
		this.addproperty("ycolor2",rgb(255*rand(),255*rand(),255*rand()))
		
		this.draw
	ENDPROC

	PROCEDURE imgcanvas1.beforedraw
		thisform.lockscreen=.t.
		This.Clear
		logfx=this.ogfx
		 WITH _screen.system.Drawing
		 loGfx.SmoothingMode = .Drawing2D.SmoothingMode.AntiAlias
		this.clear(.color.black)
		color1=.color.fromRGB(this.ycolor1)   &&yellow  &&
		color2=.color.fromRGB(this.ycolor2)  &&red  &&

		 br = .drawing2d.LinearGradientBrush.New(this.Rectangle,color1,color2,1)
		 br.SetBlendTriangularShape(0.5,1.0)
		 rc=.rectangle.new(0,0,this.delta,this.height)

		*loGFX.Fillellipse(br,rc)   &&this.Rectangle)
		* br.Dispose()
		
		************************************
		ypath = .Drawing2D.GraphicsPath.New()
		ypath.addRectangle(rc)
		logfx.fillpath(br,ypath)
		 br.dispose()
		*************************************
		p=.pen.new(.color.fromARGB(128,.color.gold),6)
		logfx.drawEllipse(p,4,4,this.width-8,this.height-8)
		p=.pen.new(.color.fromARGB(128,.color.blue),3)
		logfx.drawEllipse(p,this.rectangle)

		if this.cas=0
		this.cas=1
		&&capture image region mask
		this.colorMask=.COLOR.cyan
		br0 = .SolidBrush.New(this.colorMask)
		logfx.fillellipse(br0,4,4,this.width-8,this.height-8)
		lcDest=getenv('tmp')+"\ymask.bmp"
		this.ymask=lcdest
		this.obmp.save(lcDest,.imaging.imageformat.bmp)
		br0.dispose()
		endi

		lobmp=.bitmap.fromfile(this.ymask)
		lobmp.makeTransparent(this.colorMask)
		logfx.drawImage(lobmp,this.rectangle)


		*texte
		LOCAL loFont AS xfcFont
		LOCAL loBrush AS xfcLinearGradientBrush
		LOCAL loRectangleF As xfcRectangleF
		LOCAL loSizeF AS xfcSizeF

		local ystring,pourc
		pourc=100*this.delta/this.width

		ystring=str(pourc,6,2)+" %"
		 loFont = .Font.New("tahoma", 20,  .FontStyle.BoldItalic)
			loSizeF = loGfx.MeasureString(ystring, loFont)
			loRectangleF =_screen.system.Drawing.RectangleF.New((rc.width-loSizeF.width)/2,(rc.height-loSizeF.height)/2,loSizeF.Width, loSizeF.Height)
			loBrush = .Drawing2D.LinearGradientBrush.New(loRectangleF,.Color.red,.Color.blue,3)
		if 	(rc.width-loSizeF.width)/2>10
			loGfx.DrawString(ystring, loFont,loBrush, loRectangleF)
		endi

		endwith
		thisform.lockscreen=.f.
		return
	ENDPROC

ENDDEFINE
*
*-- EndDefine: zprog12
**************************************************

DEFINE CLASS ycombo AS combobox
	Height = 25
	Left = 48
	Top = 200
	Width = 150
	Name = "Combo1"

	PROCEDURE Click
*		local m.cc,m.pp
*		m.cc="ycont"+trans(this.value)		
**messagebox(m.cc)
**try
**		if !vartype( eval("thisform."+m.cc))="O"
*m.pp="zprog"+trans(this.value)
*with thisform
*.addobject(m.cc,(m.pp))
**		endi
**catch
**endtry
*		with eval("."+m.cc)
*		.visible=.t.
*		.timer1.enabled=.t.
*		endwith
*endwith	
********************
i=this.value



with Thisform

try
	.removeobject(eval(".ycont"+trans(i)+".name"))
	=eval(".ycont"+trans(i)+".visible")=.f.
catch
endtry


if inlist(i,5,6,7,8,9,10,11,12)
set classlib to gdiplusX addi
endi
	do case
case i=1	
		.addobject("ycont1","zprog1")
		.ycont1.visible=.t.
		.edit1.value="this is a progressbar class  built with a small encoded bmp image.see the code class.can convert to visual class. "
		.edit1.refresh	
		.ycont1.timer1.enabled=.t.
		
case i=2
		.addobject("ycont2","zprog2")
		.ycont2.visible=.t.
		.ycont2.timer1.enabled=.t.
		.edit1.value="this is a progressbar class  built with a small encoded bmp image.see the code class.can convert to visual class. "	
		.edit1.refresh	
case i=3
	.addobject("ycont3","zprog3")
	.ycont3.visible=.t.
	.edit1.value="this is a progressbar class  built with a small encoded bmp image.see the code class.can convert to visual class. "
	.edit1.refresh	
	.ycont3.timer1.enabled=.t.
		
	
case i=4
		.addobject("ycont4","zprog4")
		.ycont4.visible=.t.
		.ycont4.timer1.enabled=.t.
		.edit1.value="this is a progressbar class  built with a small encoded bmp image.see the code class.can convert to visual class. "
		.edit1.refresh		
case i=5
	.addobject("ycont5","zprog5")
	.ycont5.visible=.t.
	.edit1.value="this is a progressbar class  built with gdiplusX +label + timer in a container.see the code class.can convert to visual class. "
	.edit1.refresh	
	.ycont5.timer1.enabled=.t.	
			

case i=6
		.addobject("ycont6","zprog6")
		.ycont6.visible=.t.
		.edit1.value="this is a progressbar class  built with gdiplusX +label + timer in a container.see the code class.can convert to visual class. "
	.edit1.refresh	
		.ycont6.timer1.enabled=.t.		

case i=7
		.addobject("ycont7","zprog7")	
		.ycont7.visible=.t.
		.edit1.value="this is a progressbar class  built with gdiplusX +label + timer in a container.see the code class.can convert to visual class. "
	    .edit1.refresh	
		.ycont7.timer1.enabled=.t.	

case i=8
		.addobject("ycont8","zprog8")
		.ycont8.visible=.t.
		.edit1.value="this is a progressbar class  built with gdiplusX +label + timer in a container.see the code class.can convert to visual class. "
	    .edit1.refresh	
		
		.ycont8.timer1.enabled=.t.		
	
case i=9
		.addobject("ycont9","zprog9")
		.ycont9.visible=.t.	
		.edit1.value="this is a progressbar class  built with gdiplusX +label + timer in a container.see the code class.can convert to visual class. "
	    .edit1.refresh	
		.ycont9.timer1.enabled=.t.	

case i=10
		.addobject("ycont10","zprog10")
		.ycont10.visible=.t.
		.edit1.value="this is a progressbar class  built with gdiplusX +label + timer in a container.see the code class.can convert to visual class. "
	    .edit1.refresh	
		.ycont10.timer1.enabled=.t.	
		
case i=11
		.addobject("ycont11","zprog11")
		.ycont11.visible=.t.
		.edit1.value="this is a progressbar class  built with gdiplusX +label + timer in a container and random colors.see the code class.can convert to visual class. "
	.edit1.refresh	
		rand(-1)
       .ycont11.imgcanvas1.ycolor=rgb(255*rand(),255*rand(),255*rand())      &&setup()
       .ycont11.timer1.enabled=.t.
case i=12	
.addobject("ycont12","zprog12")
		.ycont12.visible=.t.
		.edit1.value="this is a figure progressbar class  built with gdiplusX +label + timer in a container and random colors.see the code class.can convert to visual class. "
	    .edit1.refresh
	    .ycont12.imgcanvas1.visible=.t.	
       .ycont12.timer1.enabled=.t.

			
endcase
if inlist(i,5,6,7,8,9,10,11,12)
release classlib gdiplusX
endi
this.enabled=.f.

endwith
*******************
	ENDPROC

	PROCEDURE Init
		with this
		for i=1 to 12
		.additem("-Progressbar"+trans(i))
		endfor
		.listindex=1
		.value=1
		.style=2
		endwith
	ENDPROC

ENDDEFINE
*
*-- EndDefine: combo1
**************************************************



12 progressbars drawn with small images or with gdiplusX
12 progressbars drawn with small images or with gdiplusX
12 progressbars drawn with small images or with gdiplusX
12 progressbars drawn with small images or with gdiplusX
12 progressbars drawn with small images or with gdiplusX
12 progressbars drawn with small images or with gdiplusX
12 progressbars drawn with small images or with gdiplusX
12 progressbars drawn with small images or with gdiplusX
12 progressbars drawn with small images or with gdiplusX
12 progressbars drawn with small images or with gdiplusX
12 progressbars drawn with small images or with gdiplusX
12 progressbars drawn with small images or with gdiplusX
12 progressbars drawn with small images or with gdiplusX
12 progressbars drawn with small images or with gdiplusX
 
 *remarks
for embedding any image as a string, can use a txt file (equivalent to image in disk space  globally) with the technic :
strconv(filetostr(getpict(),13) ,save as txt file and reconvert with strconv(...,14) using pictureval image property.
can also use filetostr(getpict()) ,save as txt file) and reconvert with filetostr().

Unfortunaly in the text/endtext statement there is a limitation of line length to 8192.if up you have an error (line too long)
that why its  possible for small images only. 
the web actually uses the first technic too and it have not limitation for the string length.

*Important:*the code above is tested on visual foxpro 9 sp2-under windows 10 pro

To be informed of the latest articles, subscribe:
Comment on this post