VFP collapsible and accordion menus demos.

Published on by Yousfi Benameur

          

In previous posts i presented many vfp accordions built with pure container classes (look at links bottom page).
i designed here a vfp container as yitem class containing many                 ycnt container class representings items (with a label and icon).
this class can be :
1 -a special collapsible menu (each yitem container ) on a titlebar ( as web menu for ex.)
  this is coded in code *1* below.
  Any mouseEnter on the item class (or click) fires the complet menu otherwise it collapses it.clicking on the form collapses all menus.
  each menu can be  decorated with background colors or by custom pictures.
  each item can fire any programm (to code in yactions method).the location is designed with oop address for each item.
  (can use out a custom table for that)

2 -a menu as collapsible accordion.(code *2* below)
 each yitem container class is concatened with others to show a vertical accordion.
-collapsed yitem shows only the top commandbutton.
-expanded yitem shows all its contents.
 its the same yitem class as above but with a new external method "yarrange" to stack the yitem containers as accordion effect.
 its collapses /expands items by mousedown on commandbutton at top of each yitem container.
  each item can fires any code the user writes:see the yactions method where to code actions.
 yitem can be decorated with background colors or by custom pictures.

[post 246]


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


*1* created on 28 of novembr 2017
*a special collapsible menu
*custom decorated menu on top level form - from yitem class and ycnt class below

Publi m.yrep
m.yrep=Addbs(Justpath(Sys(16,1)))
Set Defa To (yrep)

*download a some decorative images from my blog used in code.Internet must be connected.
Local m.ydownl
m.ydownl=.T.  && make it false since  image downloaded for use
If m.ydownl=.T.
	Declare Integer URLDownloadToFile In urlmon.Dll Integer pCaller, String szURL, String szFileName, Integer dwReserved, Integer lpfnCB
	Declare Integer DeleteUrlCacheEntry In wininet String lpszUrlName

	For i=1 To 7
		Do Case
			Case i=1
				lcDownloadURL = "http://img.over-blog-kiwi.com/1/43/54/07/20171129/ob_822f74_2100a16f51-113916-mars-eau-mer.jpg"
				lcDownloadLoc ="mars-eau-mer.jpg"

			Case i=2
				lcDownloadURL = "http://img.over-blog-kiwi.com/1/43/54/07/20171129/ob_939727_cap2.jpg"
				lcDownloadLoc ="cap2.jpg"

			Case i=3
				lcDownloadURL = "http://img.over-blog-kiwi.com/1/43/54/07/20171129/ob_d4b1f5_cap3.jpg"
				lcDownloadLoc ="cap3.jpg"

			Case i=4
				lcDownloadURL = "http://img.over-blog-kiwi.com/1/43/54/07/20171129/ob_c86b78_cap7.jpg"
				lcDownloadLoc ="cap7.jpg"

			Case i=5
				lcDownloadURL = "http://img.over-blog-kiwi.com/1/43/54/07/20171129/ob_3b1e78_cap8.jpg"
				lcDownloadLoc ="cap8.jpg"

			Case i=6
				lcDownloadURL = "http://img.over-blog-kiwi.com/1/43/54/07/20171129/ob_6fdc32_cap9.jpg"
				lcDownloadLoc ="cap9.jpg"

			Case i=7
				lcDownloadURL = "http://img.over-blog-kiwi.com/1/43/54/07/20171129/ob_9da4c5_carta-creme.gif"
				lcDownloadLoc ="carta_creme.gif"

		Endcase
		lnResult = DeleteUrlCacheEntry(lcDownloadURL)
		lnResult = URLDownloadToFile(0, lcDownloadURL, lcDownloadLoc , 0,0)
		If lnResult = 0
			Wait Window "Download "+lcDownloadLoc +"  Complete" Nowait
			*Else
			*!*  Messagebox("Download fails")
		Endi
	Endfor
Endi
*

_Screen.WindowState=1

Public oform
oform=Newobject("ymenuS")
oform.Show
Return
*
Define Class ymenuS As Form
	Top = 0
	Left = 0
	Height = 577
	Width =1050
	ShowWindow=2
	AutoCenter=.T.
	Caption = "A special menu demo"
	Name = "form1"
	nitems=4

	Add Object image1 As Image With ;
		anchor=15,;
		picture="mars-eau-mer.jpg",;
		stretch=2,;
		left=0,;
		top=0,;
		width=1050,;
		height=577,;
		name="image1"
	Add Object grid1 As Grid With ;
		name="grid1"

	Add Object ycom As CommandButton With ;
		style=1,;
		left=-200,;
		Name="ycom"  &&invisible dummy button to change effect on yitem.button (Backcolor with changing focus)

	Add Object ycheck1 As Checkbox With ;
		caption="Background pictures on/off",;
		value=0,;
		autosize=.T.,;
		left=50,;
		top=450,;
		style=1,;
		backcolor=Rgb(0,255,0),;
		mousepointer=15
	Name="ycheck1"

	Procedure Load
		Close Data All
		Sele * From Home(1)+"samples\data\customer" Into Cursor ycurs1
		Set Safe Off
	Endproc

	Procedure ycheck1.InteractiveChange()
		With Thisform
			DoDefault()
			Local m.x,m.y
			For i=1 To .nitems
				m.x=Eval(".yitem"+Trans(i))
				x.Picture=Iif(!Empty(x.Picture),"",x.xpic)
			Endfor
		Endwith
	Endproc

	Procedure grid1.Init
		With This
			.RecordSource="ycurs1"
			.RecordSourceType=1
			.GridLines=0
			.DeleteMark=.F.
			.Height=400
			.Left=1.3*(Thisform.Width-.Width)/2
			.Top=(Thisform.Height-.Height)/2+30
			.FontBold=.T.
			.SetAll("DynamicBackColor", "IIF(MOD(RECNO( ), 2)=0, RGB(255,255,255)  , RGB(190,235,200))", "Column")
			Locate
			.Refresh
		Endwith
	Endproc

	Procedure Init
		Set Safe Off
		With Thisform
			.AddObject("yitem1","yitem")
			With .yitem1
				.command1.Caption="MyHeader1"
				.ncount=11
				.BackColor=Rgb(212,210,208)
				.BorderWidth=0
				.Left=10
				.Top=1
				.Picture="carta_creme.gif"
				.xpic=.Picture
				.Visible=.T.
			Endwith

			.AddObject("yitem2","yitem")
			With .yitem2
				.command1.Caption="MyHeader2"
				.ncount=4
				.BackColor=Rgb(181,230,29)
				.Left=10+.Parent.yitem1.Width+10
				.Top=1
				.Picture="cap3.jpg"
				.xpic=.Picture
				.Visible=.T.
			Endwith

			.AddObject("yitem3","yitem")
			With .yitem3
				.command1.Caption="MyHeader3"
				.ncount=15
				.BackStyle=1
				.BackColor=Rgb(231,156,29)
				.BorderWidth=0
				.Left=.Parent.yitem2.Left+.Parent.yitem2.Width+10
				.Top=1
				.Picture="cap2.jpg"
				.xpic=.Picture
				.SetAll("borderwidth",0,"ycnt")   &&borders visible
				.SetAll("bordercolor",Rgb(255,255,0),"line")
				.Visible=.T.
			Endwith

			.AddObject("yitem4","yitem")
			With .yitem4
				.command1.Caption="MyHeader4"
				.ncount=10
				.BackColor=Rgb(153,217,234)
				.BorderWidth=0
				.Left=.Parent.yitem3.Left+.Parent.yitem3.Width+10
				.Top=1
				.Picture="cap8.jpg"
				.xpic=.Picture
				*.setall("borderwidth",1,"ycnt")   &&borders visible
				*.setall("bordercolor",rgb(255,255,0),"ycnt")
				.SetAll("visible",.F.,"line")
				.Visible=.T.
			Endwith

			.AddObject("shp1","shape")
			With .shp1
				.Left=.Parent.yitem1.Left
				.Top=.Parent.yitem1.Top
				.Width=.Parent.yitem4.Left+.Parent.yitem4.Width-.Left
				.Height=.Parent.yitem1.Height
				.BackColor=Rgb(45,45,45)
				.Visible=.T.
				.ZOrder(1)
			Endwith
		Endwith
	Endproc

	Procedure Click
		With Thisform
			.SetAll("height",Thisform.yitem1.command1.Height,"yitem")
			.ycom.SetFocus
			.ycom.Click
		Endwith
	Endproc

	Procedure image1.Click
		With Thisform
			.SetAll("height",Thisform.yitem1.command1.Height,"yitem")
			.ycom.SetFocus
			.ycom.Click
		Endwith
	Endproc

Enddefine
*
*-- EndDefine: ymenus

*
Define Class yitem As Container
	Top = 36
	Left = 72
	Width = 250
	Height = 480
	BackColor = Rgb(0,255,255)
	Picture="carta_creme.gif"
	xpic="carta_creme"
	Name = "yitem"
	ncount=15
	expand=.F.

	Add Object command1 As CommandButton With ;
		Top = 1, ;
		Left = 1, ;
		Height = 37, ;
		Width = 250, ;
		FontBold = .T., ;
		FontSize = 12, ;
		Caption = "My Header", ;
		MousePointer = 15, ;
		SpecialEffect = 2, ;
		BackColor = Rgb(45,45,45), ;
		forecolor=Rgb(255,255,255),;
		Name = "Command1"

	Procedure Init
		Local gnbre ,m.yre
		m.yre=Addbs(Home(1)+"graphics\icons\misc")
		gnbre=Adir(gabase,m.yre+"*.ico")

		Try
			Sele ycurs
			Zap
		Catch
			Create Cursor ycurs (xicon c(100),xtext c(50))   && cursor or pemanent table for icons and header title here.
		Endtry

		For i=1 To This.ncount
			Insert Into ycurs Values(m.yre+gabase(i,1),"this is my title header in ")
		Endfor
		*brow

		This.expand=.T.
		This.ncount=Reccount()

		With This
			Scan
				i=Recno()
				Try
					.AddObject("ycnt"+Trans(i),"ycnt")
					With Eval(".ycnt"+Trans(i))
						.Visible=.T.
						.Name="ycnt"+Trans(i)
					Endwith
				Catch
				Endtry

			Endscan

			If Lower(.Controls(1).Class)=="commandbutton"
				With .Controls(1)
					.Left=0
					.Top=0
					.Width=.Parent.Width
				Endwith
				Bindevent(.command1,"mousedown",This,"myc")
			Endi
			Sele ycurs
			Scan
				i=Recno()
				If Lower(.Controls(i+1).Name)==("ycnt"+Trans(i))
					With Eval(".ycnt"+Trans(i))
						.BackStyle=0
						.BorderWidth=0
						.Left=0
						.Top=.Parent.command1.Top+.Parent.command1.Height+(i-1)*.Height
						.Width=.Parent.Width
						With .image1
							.Picture=xicon
							.Stretch=2
							.Width=16
							.Height=16
						Endwith
						.label1.Caption=Allt(xtext)+ " "+.label1.Parent.Name

						Bindevent(.label1,"mousedown",This,"my")
						Bindevent(.image1,"mousedown",This,"my")
					Endwith
				Endi
			Endscan
			.command1.Click
		Endwith
	Endproc

	Procedure my
		Lparameters nButton, nShift, nXCoord, nYCoord
		*--- aevent create an array laEvents
		Aevents( myArray, 0)
		*--- reference the calling object
		loObject = myArray[1]
		*Messagebox(loObject.Parent.Parent.Name+"."+loObject.Parent.Name+"."+loObject.Name+" clicked!",0+32+4096,"",1200)
		This.yactions(loObject.Parent.Parent.Name,loObject.Parent.Name,loObject.Name)
	Endproc


	Procedure myc
		Lparameters nButton, nShift, nXCoord, nYCoord
		*--- aevent create an array laEvents
		Aevents( myArray, 0)
		*--- reference the calling object
		loObject = myArray[1]

		Local N
		N=Int(Val(Substr(loObject.Name,6)))
		For i=1 To Thisform.nitems
			If !i=N
				x=Eval("thisform.yitem"+Trans(i))
				x.Height=x.command1.Height
			Endi
		Endfor
	Endproc

	Procedure yactions   &&code all actions here in ycnt..only (label1 or image1 clicked).(can be also a table where actions are coded on a field)
		Lparameters xcontainer,xsubc,xname
		Messagebox(" from yactions:"+xcontainer+" "+xsubc+" "+xname+"       write actions code here",0+32+4096,'',2000)
		Do Case
			Case Lower(xcontainer)=="yitem1"
				Do Case
					Case Lower(xsubc)=="ycnt1"
						*
					Case Lower(xsubc)="ycnt2"
						*
					Case Lower(xsubc)="ycnt3"
						*
					Case Lower(xsubc)="ycnt4"
						*
					Case Lower(xsubc)="ycnt5"
						*
					Case Lower(xsubc)="ycnt6"
						*
					Case Lower(xsubc)="ycnt7"
						*
					Case Lower(xsubc)="ycnt8"
						*
					Case Lower(xsubc)="ycnt9"
						*
					Case Lower(xsubc)="ycnt10"
						*
					Case Lower(xsubc)="ycnt11"
						*
				Endcase

			Case Lower(xcontainer)=="yitem2"
				Do Case
					Case Lower(xsubc)="ycnt1"
						*
					Case Lower(xsubc)="ycnt2"
						*
					Case Lower(xsubc)="ycnt3"
						*
					Case Lower(xsubc)="ycnt4"
						*
				Endcase

			Case Lower(xcontainer)=="yitem3"
				Do Case

					Case Lower(xsubc)="ycnt1"
						*
					Case Lower(xsubc)="ycnt2"
						*
					Case Lower(xsubc)="ycnt3"
						*
					Case Lower(xsubc)="ycnt4"
						*
					Case Lower(xsubc)="ycnt5"
						*
					Case Lower(xsubc)="ycnt6"
						*
					Case Lower(xsubc)="ycnt7"
						*
					Case Lower(xsubc)="ycnt8"
						*
					Case Lower(xsubc)="ycnt9"
						*
					Case Lower(xsubc)="ycnt10"
						*
					Case Lower(xsubc)="ycnt11"
						*
					Case Lower(xsubc)="ycnt12"
						*
					Case Lower(xsubc)="ycnt13"
						*
					Case Lower(xsubc)="ycnt14"
						*
					Case Lower(xsubc)="ycnt15"
						*
				Endcase

		Endcase
	Endproc

	Procedure command1.Click
		This.Parent.expand=Iif(This.Parent.expand=.T.,.F.,.T.)
		If This.Parent.expand=.T.
			This.Parent.Height=This.Height+(This.Parent.ycnt1.Height)*(This.Parent.ncount)+1
		Else
			This.Parent.Height=This.Height
		Endi
	Endproc

	Procedure command1.MouseEnter
		Lparameters nButton, nShift, nXCoord, nYCoord
		This.Click
	Endproc

	Procedure command1.MouseLeave
		Lparameters nButton, nShift, nXCoord, nYCoord
		DoDefault()
	Endproc

Enddefine
*
*-- EndDefine: yitem

*
Define Class ycnt As Container
	Top = 53
	Left = 561
	Width = 370
	Height = 32
	BackStyle = 0
	BorderWidth = 0
	Name = "ycnt"

	Add Object image1 As Image With ;
		Picture = Home(1)+"graphics\icons\misc\clock01.ico", ;
		BackStyle = 0, ;
		Height = 32, ;
		Left = 5, ;
		MousePointer = 15, ;
		Top = 5, ;
		Width = 32, ;
		Name = "Image1"

	Add  Object line1 As Line With;
		left=38,;
		width=0,;
		top=0,;
		height=32,;
		name="line1"

	Add  Object line2 As Line With;
		left=0,;
		width=370,;
		top=31,;
		height=1,;
		name="line2"

	Add Object label1 As Label With ;
		FontBold = .T., ;
		fontsize=9,;
		BackStyle = 0, ;
		Caption = "This is a label caption to execute", ;
		Height = 27, ;
		Left = 42, ;
		MousePointer = 15, ;
		Top = 4, ;
		Width = 325, ;
		Name = "Label1"

	Procedure label1.MouseEnter
		Lparameters nButton, nShift, nXCoord, nYCoord
		With This
			.BackColor=Rgb(212,210,208)
			.ForeColor=255
			.Left=.Left-2
			.Top=.Top-2
			.Parent.image1.BorderStyle=1
		Endwith
	Endproc

	Procedure Init
		With This.line2
			.Width=.Parent.Parent.Width
			.Top=.Parent.Height-.Height
			.Height=0
			.Left=0
		Endwith
	Endproc

	Procedure label1.MouseLeave
		Lparameters nButton, nShift, nXCoord, nYCoord
		With This
			.BackColor=Rgb(0,255,0)
			.ForeColor=0
			.Left=.Left+2
			.Top=.Top+2
			.Parent.image1.BorderStyle=0
		Endwith
	Endproc

	Procedure MouseDown
		Lparameters nButton, nShift, nXCoord, nYCoord
		Messagebox(This.Parent.Parent.Name+'.'+This.Parent.Name+'.'+This.Name+" clicked",0+32+4096,'',1200)
	Endproc

Enddefine
*
*-- EndDefine: ycnt



VFP  collapsible and accordion menus demos.
VFP  collapsible and accordion menus demos.
VFP  collapsible and accordion menus demos.
VFP  collapsible and accordion menus demos.

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



*2* created on 28 tuesday of november 2017
*custom decorated accordion menu on top level form - from yitem class and ycnt class below
*contains 5 panels (yitem).
*this code uses the images downloaded in code 1

_screen.windowstate=1
Public oform
oform=Newobject("yaccordion")
oform.Show
Return
*
Define Class yaccordion As Form
	Top = 0
	Left = 0
	Height = 650
	Width =1050
	ShowWindow=2
	AutoCenter=.T.
	ScrollBars=2
	backcolor=rgb(212,210,208)
	Caption = "A special vfp accordion menu demo"
	Name = "form1"
	nitems=6  &&5 panels as yitem class

	Add Object image1 As Image With ;
		anchor=15,;
		picture="mars-eau-mer.jpg",;
		stretch=2,;
		name="image1"

	Add Object ycheck As Checkbox With ;
		caption="expand/collapse accordion ",;
		value=0,;
		autosize=.T.,;
		left=50,;
		top=5,;
		style=1,;
		backcolor=Rgb(0,255,0),;
		mousepointer=15
	Name="ycheck"
	
	Add Object ycheck1 As Checkbox With ;
		caption="pictures on/off",;
		value=0,;
		autosize=.T.,;
		left=50+180,;
		top=5,;
		style=1,;
		backcolor=Rgb(0,255,0),;
		mousepointer=15
	Name="ycheck1"

	Add Object ylab As Label With;
		caption="",;
		backstyle=0,;
		forecolor=255,;
		fontsize=14,;
		fontbold=.T.,;
		top=20,;
		left=300,;
		autosize=.T.,;
		name="ylab"

	Add Object timer1 As Timer With Interval=1500,Enabled=.F.,Name="timer1"

	Add Object grid1 As Grid With ;
		name="grid1"

	Procedure Load
		Close Data All
		Sele * From Home(1)+"samples\data\customer" Into Cursor ycurs1
		Set Safe Off
	Endproc


	Procedure ycheck.InteractiveChange()
		With Thisform
			DoDefault()
			.yitem1.command1.MouseDown(1)  &&loop dont work !
			.yitem2.command1.MouseDown(1)
			.yitem3.command1.MouseDown(1)
			.yitem4.command1.MouseDown(1)
			.yitem5.command1.MouseDown(1)
			.yitem6.command1.MouseDown(1)
			Inke(0.2)
			.Width=.Width+1   &&  to fire scrollbars even if form.scrollbars=2 !
			Inke(0.2)
			.Width=.Width-1
		Endwith
	Endproc

	Procedure grid1.Init
		With This
			.RecordSource="ycurs1"
			.RecordSourceType=1
			.GridLines=0
			.DeleteMark=.F.
			.Height=400
			.Left=1.4*(Thisform.Width-.Width)/2
			.Top=(Thisform.Height-.Height)/2+30
			.FontBold=.T.
			.SetAll("DynamicBackColor", "IIF(MOD(RECNO( ), 2)=0, RGB(255,255,255)  , RGB(190,235,200))", "Column")
			Locate
			.Refresh
		Endwith
	Endproc

	Procedure image1.Init
		With This
		    .anchor=15
		    .Stretch=2
			.Left=0
			.Top=0
			.Width=.Parent.Width
			.Height=.Parent.Height
			.ZOrder(1)
		Endwith
	Endproc

	Procedure timer1.Timer   &&2s to clear label ylab.
		Thisform.ylab.Caption=""
		This.Enabled=.F.
	Endproc

	Procedure Init
		Set Safe Off
		With Thisform
			DoDefault()
			.AddObject("yitem1","yitem")
			With .yitem1
				.command1.Caption="MyHeader1"
				.ncount=11
				.BackColor=Rgb(212,210,208)
				.BorderWidth=0
				.Left=5
				.Top=0
				.Height = 32
				.picture="carta_creme.gif"
				.xpic=.picture
				.Visible=.T.
			Endwith

			.AddObject("yitem2","yitem")
			With .yitem2
				.command1.Caption="MyHeader2"
				.ncount=4
				.BackColor=Rgb(181,230,29)
				.Left=5
				.Top=5+1*30
				.picture="cap7.jpg"
				.xpic=.picture
				.Visible=.T.
			Endwith

			.AddObject("yitem3","yitem")
			With .yitem3
				.command1.Caption="MyHeader3"
				.ncount=15
				.BackStyle=1
				.BackColor=Rgb(231,156,29)
				.BorderWidth=0
				.Left=5
				.Top=5+2*30
				.picture="cap9.jpg"
				.xpic=.picture
				.SetAll("borderwidth",0,"ycnt")   &&borders visible
				.SetAll("bordercolor",Rgb(255,255,0),"line")
				.Visible=.T.
			Endwith

			.AddObject("yitem4","yitem")
			With .yitem4
				.command1.Caption="MyHeader4"
				.ncount=10
				.BackColor=Rgb(153,217,234)
				.BorderWidth=0
				.Left=5
				.Top=5+3*30
				.picture="cap3.jpg"
				.xpic=.picture
				.SetAll("borderwidth",1,"ycnt")   &&borders visible
				.SetAll("visible",.F.,"line")
				.Visible=.T.
			Endwith

			.AddObject("yitem5","yitem")
			With .yitem5
				.command1.Caption="MyHeader5"
				.ncount=3
				.BackColor=Rgb(255,235,205)
				.BorderWidth=0
				.Left=5
				.Top=5+3*30
				.picture="cap2.jpg"
				.xpic=.picture
				.SetAll("visible",.F.,"line")
				.Visible=.T.
			Endwith
			
			.AddObject("yitem6","yitem")
			With .yitem6
				.command1.Caption="MyHeader6"
				.ncount=1
				.BackColor=Rgb(255,215,0)
				.BorderWidth=0
				.Left=5
				.Top=5+4*30
				.picture="cap8.jpg"
				.xpic=.picture
				.SetAll("visible",.F.,"line")
				.Visible=.T.
			Endwith

			.yarrange()
		Endwith
	Endproc

  Procedure ycheck1.interactiveChange()
    with thisform
    dodefault()
    local m.x,m.y
    for i=1 to .nitems
    m.x=eval(".yitem"+trans(i))
    x.picture=iif(!empty(x.picture),"",x.xpic)
    endfor
    endwith
endproc

	Procedure yarrange
		DoDefault()
		With Thisform
			x0=Thisform.yitem1.command1
			x =Thisform.yitem1

			For i=1 To .ControlCount
				If Lower(Substr(.Controls(i).Name,1,5))=="yitem"

					With .Controls(i)
						.Left=10
						If Lower(.Name)=="yitem1"
							.Top=5
						Endi

						If .ycl=0  && not clicked
							.Top=x.Top+x.Height
							.Height=x0.Height
						Else   && clicked
							.Top=x.Top+x.Height
							h=0
							For j=1 To .ncount +1
								h=h+.Controls(j).Height
							Endfor
							.Height=m.h
						Endi
					Endwith
					x=.Controls(i)
				Endi
			Endfor
		.refresh
		Endwith
		
	Endproc

Enddefine
*
*-- EndDefine: yaccordion
*
Define Class yitem As Container
	Top = 5
	Left = 5
	Width = 250
	Height = 480
	BackColor = Rgb(0,255,255)
	backstyle=1
   	picture="CARTA_CREME.GIF"
   	Name = "yitem"
    ncount=15
	expand=.F.
	ycl=0
	xpic=""

	Add Object command1 As CommandButton With ;
		Top = 1, ;
		Left = 1, ;
		Height = 37, ;
		Width = 250, ;
		FontBold = .T., ;
		FontSize = 12, ;
		Caption = "My Header", ;
		MousePointer = 15, ;
		SpecialEffect = 2, ;
		BackColor = Rgb(45,45,45), ;
		forecolor=Rgb(255,255,255),;
		Name = "Command1"

	Procedure Init
		Set Defa To Addbs(Justpath(Sys(16,1)))
		Local gnbre ,m.yre
		m.yre=Addbs(Home(1)+"graphics\icons\misc")
		gnbre=Adir(gabase,m.yre+"*.ico")

		Try
			Sele ycurs
			Zap
		Catch
			Create Cursor ycurs (xicon c(100),xtext c(50))   && cursor or pemanent table for icons and header title here.this is for demo only
		Endtry

		For i=1 To This.ncount
			Insert Into ycurs Values(m.yre+gabase(i,1),"this is my title header in ")
		Endfor
		*brow

		This.expand=.T.
		This.ncount=Reccount()

		With This
		.xpic=this.picture		
			Scan
				i=Recno()
				Try
					.AddObject("ycnt"+Trans(i),"ycnt")
					With Eval(".ycnt"+Trans(i))
						.Visible=.T.
						.Name="ycnt"+Trans(i)
					Endwith
				Catch
				Endtry
			Endscan

			If Lower(.Controls(1).Class)=="commandbutton"
				With .Controls(1)
					.Left=0
					.Top=0
					.Width=.Parent.Width
				Endwith
				Bindevent(.command1,"mousedown",This,"myc")
			Endi
			Sele ycurs
			Scan
				i=Recno()
				If Lower(.Controls(i+1).Name)==("ycnt"+Trans(i))
					With Eval(".ycnt"+Trans(i))
						.BackStyle=0
						.BorderWidth=0
					

						.Left=0
						.Top=.Parent.command1.Top+.Parent.command1.Height+(i-1)*.Height
						.Width=.Parent.Width
						With .image1
							.Picture=xicon
							.Stretch=2
							.Width=16
							.Height=16
						Endwith
						.label1.Caption=Allt(xtext)+ " "+.label1.Parent.Name

						Bindevent(.label1,"mousedown",This,"my")
						Bindevent(.image1,"mousedown",This,"my")

					Endwith
				Endi
			Endscan
			.command1.Click
		Endwith
	Endproc

	Procedure my
		Lparameters nButton, nShift, nXCoord, nYCoord
		*--- aevent create an array laEvents
		Aevents( myArray, 0)
		*--- reference the calling object
		loObject = myArray[1]
		loObject.Parent.Parent.ycl=Iif(loObject.Parent.Parent.ycl=0,1,0)
		This.yactions(loObject.Parent.Parent.Name,loObject.Parent.Name,loObject.Name)
		Thisform.yarrange()
	Endproc

	Procedure myc
		Lparameters nButton, nShift, nXCoord, nYCoord
		*--- aevent create an array laEvents
		Aevents( myArray, 0)
		*--- reference the calling object
		loObject = myArray[1]
		loObject.Parent.ycl=Iif(loObject.Parent.ycl=0,1,0)    &&1
		Local N
		N=Int(Val(Substr(loObject.Name,6)))
		For i=1 To Thisform.nitems
			If !i=N
				x=Eval("thisform.yitem"+Trans(i))
				x.Height=x.command1.Height
			Else
				x=Eval("thisform.yitem"+Trans(i))
				x.Height=.Height
			Endi
			Thisform.yarrange()
		Endfor
	Endproc

	Procedure yactions   &&code all actions here in ycnt..only (label1 or image1 clicked).(can be also a table where actions are coded on a field)
		Lparameters xcontainer,xsubc,xname
		Thisform.ylab.Caption=" from yactions:"+xcontainer+" "+xsubc+" "+xname+"       write actions code here"   &&location by oop here
		Thisform.timer1.Enabled=.T.
		Do Case
			Case Lower(xcontainer)=="yitem1"
				Do Case
					Case Lower(xsubc)=="ycnt1"
						*
					Case Lower(xsubc)="ycnt2"
						*
					Case Lower(xsubc)="ycnt3"
						*
					Case Lower(xsubc)="ycnt4"
						*
					Case Lower(xsubc)="ycnt5"
						*
					Case Lower(xsubc)="ycnt6"
						*
					Case Lower(xsubc)="ycnt7"
						*
					Case Lower(xsubc)="ycnt8"
						*
					Case Lower(xsubc)="ycnt9"
						*
					Case Lower(xsubc)="ycnt10"
						*
					Case Lower(xsubc)="ycnt11"
						*
				Endcase

			Case Lower(xcontainer)=="yitem2"
				Do Case
					Case Lower(xsubc)="ycnt1"
						*
					Case Lower(xsubc)="ycnt2"
						*
					Case Lower(xsubc)="ycnt3"
						*
					Case Lower(xsubc)="ycnt4"
						*
				Endcase

			Case Lower(xcontainer)=="yitem3"
				Do Case
					Case Lower(xsubc)="ycnt1"
						*
					Case Lower(xsubc)="ycnt2"
						*
					Case Lower(xsubc)="ycnt3"
						*
					Case Lower(xsubc)="ycnt4"
						*
					Case Lower(xsubc)="ycnt5"
						*
					Case Lower(xsubc)="ycnt6"
						*
					Case Lower(xsubc)="ycnt7"
						*
					Case Lower(xsubc)="ycnt8"
						*
					Case Lower(xsubc)="ycnt9"
						*
					Case Lower(xsubc)="ycnt10"
						*
					Case Lower(xsubc)="ycnt11"
						*
					Case Lower(xsubc)="ycnt12"
						*
					Case Lower(xsubc)="ycnt13"
						*
					Case Lower(xsubc)="ycnt14"
						*
					Case Lower(xsubc)="ycnt15"
						*
				Endcase
		Endcase
	Endproc

	Procedure command1.Click
		This.Parent.expand=Iif(This.Parent.expand=.T.,.F.,.T.)
		If This.Parent.expand=.T.
			This.Parent.Height=This.Height+(This.Parent.ycnt1.Height)*(This.Parent.ncount)+1
		Else
			This.Parent.Height=This.Height
		Endi
	Endproc

Enddefine
*
*-- EndDefine: yitem
*
Define Class ycnt As Container
	Top = 0
	Left = 561
	Width = 370
	Height = 32
	BackStyle = 0
	BorderWidth = 0
	Name = "ycnt"

	Add Object image1 As Image With ;
		Picture = Home(1)+"graphics\icons\misc\clock01.ico", ;
		BackStyle = 0, ;
		Height = 32, ;
		Left = 5, ;
		MousePointer = 15, ;
		Top = 5, ;
		Width = 32, ;
		Name = "Image1"

	Add  Object line1 As Line With;
		left=38,;
		width=0,;
		top=0,;
		height=32,;
		name="line1"

	Add  Object line2 As Line With;
		left=0,;
		width=370,;
		top=31,;
		height=1,;
		name="line2"

	Add Object label1 As Label With ;
		FontBold = .T., ;
		fontsize=9,;
		BackStyle = 0, ;
		Caption = "This is a label caption to execute", ;
		Height = 27, ;
		Left = 42, ;
		MousePointer = 15, ;
		Top = 4, ;
		Width = 325, ;
		Name = "Label1"

	Procedure label1.MouseEnter
		Lparameters nButton, nShift, nXCoord, nYCoord
		With This
			.BackColor=Rgb(212,210,208)
			.ForeColor=255
			.Left=.Left-2
			.Top=.Top-2
			.Parent.image1.BorderStyle=1
		Endwith
	Endproc

	Procedure Init
		With This.line2
			.Width=.Parent.Parent.Width
			.Top=.Parent.Height-.Height
			.Height=0
			.Left=0
		Endwith
	Endproc

	Procedure label1.MouseLeave
		Lparameters nButton, nShift, nXCoord, nYCoord
		With This
			.BackColor=Rgb(0,255,0)
			.ForeColor=0
			.Left=.Left+2
			.Top=.Top+2
			.Parent.image1.BorderStyle=0
		Endwith
	Endproc

Enddefine
*
*-- EndDefine: ycnt


put any image in form.image1.picture (download image below)
put any image in form.image1.picture (download image below)
put any image in form.image1.picture (download image below)
put any image in form.image1.picture (download image below)
put any image in form.image1.picture (download image below)

put any image in form.image1.picture (download image below)

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


*3* created on  monday 18 of decmeber 2017
*a container class to play the role of collapsible/expandable menu on form
*the icons (awzsomz) are coded here , can insert directly from local  png images.

publi yform
yform=newObject("ybar")
yform.show
read events
retu


define class ybar as form
showWindow=2
width=800
height=700
left=0
top=0
showTips=.t.
borderstyle=3
windowstate=2  &&maximized
caption="Expandable/collapsible bar class template"
name="form1"

ADD OBJECT ycnt as ycnt with ;
Anchor=32,;
left=0,;
top=0,;
width=135,;
height=700,;
borderwidth=0,;
name="ycnt"

procedure activate
with this
.width=.width+1  &&pb caption bug
.width=.width-1
.resize()
endwith
endproc

procedure resize
this.ycnt.resize
endproc

procedure destroy
yform=null
release yform
clea events
endproc

enddefine
*endDefine yform


*container class
DEFINE CLASS yCNT AS container
Anchor = 0
Top = 0
Left = 0
Width = 140
Height = 838
BackStyle = 0
BorderWidth = 1
Name = "yCNT"
ycl=0

ADD OBJECT ycom as commandbutton with ;
	AutoSize = .F.,;
	Top = 1,;
	Left = 110,;
	Height = 22,;
	Width = 24,;
	FontBold = .T.,;
	Caption = "<<",;
	MousePointer = 15,;
	SpecialEffect = 2,;
	Name = "ycom"

Add Object test as shape with;
	left=20,;
	top=1,;
	width=13,;
	height=13,;
	curvature=99,;
	mousepointer=15,;
	backcolor=255,;
	tooltiptext="Test",;
	name="test"
	
ADD OBJECT timer1 AS timer WITH ;
Top = 10, ;
Left = 85, ;
Height = 23, ;
Width = 23, ;
Enabled = .F., ;
Interval = 1000, ;
Name = "Timer1"

ADD OBJECT label1 AS label WITH ;
FontBold = .T., ;
FontSize = 12, ;
BackStyle = 1, ;
Caption = "Label1", ;
Height = 13, ;
Left = 5, ;
Top = 68, ;
Width = 84, ;
ForeColor = RGB(0,0,0), ;
Name = "Label1"

ADD OBJECT label3 AS label WITH ;
Caption = "Label1", ;
Height = 13, ;
Left = 5, ;
Top = 275-5, ;
Width = 84, ;
Name = "Label3"

ADD OBJECT label2 AS label WITH ;
Caption = "Label1", ;
Height = 13, ;
Left = 3, ;
Top = 166-5, ;
Width = 84, ;
Name = "Label2"

ADD OBJECT label4 AS label WITH ;
Caption = "Label1", ;
Height = 13, ;
Left = 6, ;
Top = 375, ;
Width = 84, ;
Name = "Label4"


ADD OBJECT label5 AS label WITH ;
Caption = "Label1", ;
Height = 13, ;
Left = 6, ;
Top = 483, ;
Width = 84, ;
Name = "Label5"

ADD OBJECT label6 AS label WITH ;
Caption = "Label1", ;
Height = 13, ;
Left = 5, ;
Top = 590, ;
Width = 84, ;
Name = "Label6"

ADD OBJECT label7 AS label WITH ;
Caption = "Label1", ;
Height = 13, ;
Left = 5, ;
Top = 702, ;
Width = 84, ;
Name = "Label7"

ADD OBJECT image1 AS image WITH ;
Height = 49, ;
Left = 14, ;
Top = 10, ;
Width = 61, ;
Name = "Image1"

ADD OBJECT image2 AS image WITH ;
Height = 49, ;
Left = 16, ;
Top = 107, ;
Width = 61, ;
Name = "Image2"

ADD OBJECT image3 AS image WITH ;
Height = 49, ;
Left = 17, ;
Top = 221, ;
Width = 61, ;
Name = "Image3"

ADD OBJECT image4 AS image WITH ;
Height = 49, ;
Left = 18, ;
Top = 323, ;
Width = 61, ;
Name = "Image4"

ADD OBJECT image5 AS image WITH ;
Height = 49, ;
Left = 18, ;
Top = 433, ;
Width = 61, ;
Name = "Image5"

ADD OBJECT image6 AS image WITH ;
Height = 49, ;
Left = 19, ;
Top = 538, ;
Width = 61, ;
Name = "Image6"

ADD OBJECT image7 AS image WITH ;
Height = 49, ;
Left = 19, ;
Top = 648, ;
Width = 61, ;
Name = "Image7"


ADD OBJECT label8 AS label WITH ;
Caption = "Label1", ;
Height = 13, ;
Left = 6, ;
Top = 804, ;
Width = 84, ;
Name = "Label8"

ADD OBJECT image8 AS image WITH ;
Height = 49, ;
Left = 21, ;
Top = 750, ;
Width = 61, ;
Name = "Image8"

Procedure test.click()
this.parent.timer1.enabled=.t.
endproc

Procedure ycom.click
		this.parent.ycl=iif(this.parent.ycl=0,1,0)
		do case
		case this.parent.ycl=1
		this.parent.left=-this.parent.width+this.width+5
		this.parent.setall("visible",.f.,"label")
		this.caption=">>"

		case this.parent.ycl=0
		this.parent.left=0
		this.caption="<<"
		this.parent.setall("visible",.t.,"label")
		endcase
	ENDPROC
	
PROCEDURE Init
declare integer Sleep in kernel32 integer
local m.my1,m.my2,m.my3,m.my4,m.my5,m.my6,m.my7,m.my8  &&8 images for the container

text to m.my1 pretext 7 noshow
iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAN4SURBVGhD7dhZqE1RGMDxawiFKCKFpJQML57wwoOEUpQ5yQMeDBGeyJiMZcqYmTIPJWPGQkoylMgsiWQmkfn/r7NqtW333u659x639le/unufs7/1ffusvfe6uyiLLLLIIosssvg76qJJxO04GqIV2qA9WqMZ6uO/CIu2sMDtOCy+G/pgIHqgE2yioNEcnTEGq7A6Zxy6w8KNnliCDdiLpZgEjy1oWMBEHMNP/Mo5h9mwCWM87uAVfuf+PojBqNSojppoh/6Yh+O4god4lHMd57EQ/eCvcg9vUNAGLL42BmAbbsCCLPpMxG3328gWnIUNvkVBGqgF7yxd4Hx3Llv8NVzFIayIuO1+P7eJx7D4LyhIA+E2OQEX8RQWYpHrMAujI26738/9XlKlNVAPTdEb0+GgT+BZdarswnJsx+HITqyHnx/FXYSLvFIbsPiOmI8wDX7gFKZhDrxQ/VXiM+yZt4G5GAub+gabqJQGGsGn5jAsw2m8hHebffACXoMDiKdU8BzxtbEJu+F143XwDDcxA23RGOUaFu+0ceD3+ICPcGoMhb+IZ9WpERee9AAnsACDsAPvYL5PcOp5m7WJcokW6AofTg52CZ7NC9iKjfDiPAmLf420wgOnnE34/bXw7rUZ5nuBy/A68ansuI6fV5hkKhzQ+WqB9+EyoS9Wwvkbnqil5fc9zuPNYz7zmt9x/JWmwPHzil7wruLT1QePF6sXYzhz/iIW8xlphf6L3/c4jzeP+cxrfsdxKeK15vh5hfPUi/QIvE0uzu1zrsYPorLyePOYz7zmdxzHc1z35RUdMATDMRKT4a3QQRz8O9IKKy2PN4/5zGt+x3E8x3X8vCIs1lQD3nG8Xzt/0woqq/AcML/jhDEdP6+oBpMEnpXiGvgKb7OuNH0eBG6738/TjgsNmD8ez/HLNXxSFteARbq0cA77RA7cdr+fpx0XGqjwpURJDXgvd8W5CP6bGLjtfj9PO+6/acB1v8uMEYjDbfeH/wuSsgZKG1W+AR8s+3EbaYWUtQHzmTfvB1dJ4TucPbiFtELK2oD5zGv+Cg1fPo2Cy2Hf5yS5KJsJX1rF4bb7/TztOPOZ1/wVGg3QEq4SPVtJvmmz2PACK0TyTVyS+cxr/gqNOnAQ1+nxq8PAf3ws1nefcSTfhSaZz7zmzyKLLLLIIossqkgUFf0BnDbVfL6l/m8AAAAASUVORK5CYII=
endtext
this.image1.pictureVal=strconv(m.my1,14)

text to m.my2 pretext 7 noshow
iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAALASURBVGhD7ZnL605BGMdf94UShZVCFMmOsmDnFiWW2CslO2yxcGeh38r/4LaXy1ZZkS07YWOBNZ/P4qnTNO85XnPOyat56tOvmXnm+c7Mb67nnVSrVq1atSFtFWyA3XCshSNwALbAYlgETTNt/lY4CPrn4gTqqat+kRlkD5yFBy3ch5twCJaCjW2aafMPwy3QPxcnUE9d9YtsF5wBg75p4Tk8htOwDJZA00wvB8v10z8XJ1BPXfWL7CgswGv41cIXeAfnwYamHXD0V4Dl+umfixOop676RdbVgZ/wFZ7CRdgHNn7aFLJcP/2tZ/1c3NE6YCPewyVYDyuhzSzXT3/rWT8Xd7QOfIOPcBU2wxpos9WwES7DB7B+Lu5oHfgBzuc7sBMc3TZbC9vhBnyC75CLO1gHYs47cjY+eAW34QSsg3QqmTb/OLjdvgAbH/WN11wTg3Ug5rzT5jMobr5/TbvH7wAb2zTT5lueq2e85prorQMePPfgGThVnoAL8ArYmJdgIwLT5jvSNjow3eZvPOMaXx317oL6RbYfrsNDeAsXwHm+CdpG1HzLgy4/4xnX+Oqodw3ULzLvNt5dTsI52AvOZ3eTPxnZYFp5/KeMZ1zjq6OeuuoXWRxAQXpAKd42wkGar7/1rN+0Lr2ZLW6RQXrL7NpdUrp2qy69wcz9fRtM299t/CznxejWdUDVDvytxZz0hpm7Zfa9BlKt4jVgEHcDHym5e76N6HMXMr466vWyC8U5cAp8jHifd9SGOgeMr456vZwDcRI/Al9SPkaGPImNr4566hafxOldyJfUkHch48ddSN3iu9Dc30bTDsz9eyBF8Vn2964TOxitA47cXL+JY024AB39dOqkZrl++jfnfMpoHYg1MbffhQLXwT/5ZW7uv432/XXacv1G+zrd9+8Dlus32u8D1apVq1btf7bJ5Dd1ZQvGtMpUvwAAAABJRU5ErkJggg==
endtext
this.image2.pictureVal=strconv(m.my2,14)

text to m.my3 pretext 7 noshow
iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAImSURBVGhD7Zk9SFxBGEXXWGnAQkECsU4dENFKEDu7WEUIGIuQQlCwsAoYLewFO0kjhEgg2FoJaUQsgloEQhQEBRNEAyIKEX/OgTwYloVs3Ke+CXPhFDPfzL0z+35239tSUlJSUlKR1ASPoR36Amzbb73QcpEd8ApmA2zbb73Q6oVpWIC1ANv2Wy+0huErHMBVgG37rRdao7ANvyDcgG37rRdaY7AHxxBuwLb91u9FjdACPTACr2EIuqENsrtLtRtwvPOcr49++upvjnm5StMnMAnf4Qt8hjfQCS5GVbsBxzvP+frop6/+5piXq7rA83cRDmEfdmAZ5mAcnsE7+AknEG7Atv3WHed45zlfH/301d8c83LVC1iCLQgXJpewDvOwCi7kFMIxtu237jjHOy8cI/qbY14uqoMH4Pn5DVxEeaj8gA3wNHGx5xDWbdtv3XGOD+sZ+ptjnrnm1yRN6mECfsMFVArOC/3NMc9c82tSdgSewyfYhDMo/4RrRT999TfHvFyOQKanMAgf4AgMq7SQm6KfvvqbY16uegSa+sm8hffgBbkLHvZKF+TfcE527XyEKRgAc8y7FTVAM/TDDKyAh/9frw0X75zs7uVdpxUewq0qbeAPd76B6K8BTV/CXdyFzDEvF0X/PaDJf/FNHO1voUzR/hrNFP3zQPRPZNE/E1erajdQWHn+Rv1eKPo3c9G/G43+7bR3FxcZ7f8DSUlJSUkxqVS6BjqyCPJpoz+tAAAAAElFTkSuQmCC
endtext
this.image3.pictureVal=strconv(m.my3,14)

text to m.my4 pretext 7 noshow
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
endtext
this.image4.pictureVal=strconv(m.my4,14)

text to m.my5 pretext 7 noshow
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
endtext
this.image5.pictureVal=strconv(m.my5,14)

text to m.my6 pretext 7 noshow
iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAARlSURBVGhD7dhbyBVVGIDh38JILDMPoah1kZKmaBpkmgqhdIK6ME+YZ7EuMq2bysosA8kLDQqVThBUdKDQyrQwCyEKpEizlNQSAjHNQ5KClVnvCy1YDGvPno3j3hfNBw8/M+ubtb61/9lr1uy2Kqqo4v8dV2A0JuBe3IeFOWw3z3yv8/qWhkU8gjexE7vxYw7bzTN/Eby+JdEFffEANuM7/IojOJrDdvPM/wT3w37sr6nhoLfgNfxzFl7FzbC/UqPdfzqhF67EwMhkLMUWpAoryuvtx/7i/h3PcR0/1NJQhIt64zrchImR5fAW+Ampworyevuxv7h/x3Ncx29oAiaehyG4C4/iRfivfjvyORz8GFKFFeX19mN/cf+O57iOPxWDYV11J2LS+ZiG9XDVSA3cLD/gA/hhWpf15cZl8B58ChbvqpHquFkOw0n4PbEu68uNq3En3kKqw1axnvEYgNy4FnfDf1uqo1r+xAn4aflcWItXIh573vaTMD/VTy3vYx6sLzdG4WG4MqQ6qsXiD8KB/OLNwI0Rjz3vB3MITiLVTy2b8BCsLzd8tPuILzoBC7GgD/EkZmIMhuOaiMeenwXv5w1oZCLW4wdbd+vR6AQswm3Bg+iBi2BcgssjHhsXoyf8NL3O61P9ZllPob1T0Qmcwd/4FI/jVnTF9XAJdkLPRDz2vO3m3YYl+Az2Y3+pcYLSJ+Cgf+FZ9IePfT/dufgIexHne+x5283zCeuK9xzsx/7i/KzSJ+DzYQ+8L7thKO7AKlisO88432PP2347hqE7HCuVn1X6BNzbuzK4uhjuKFfiS6Tygy+wAuYbfuldXuvtqUqfwPdwzzIJhn/fgS8rqfzAdvMava70CXyF5+HtYPiQ2Yr9SOUHtptnvuH1L+BrpPKD0iewHe4Yfbwb0/ExvLVS+YH3u3nmG25bXse3SOUHpU/Af/m78EXE8CXd91zX9lR+sANvwHxjCtxm7EIqPyh9AgfwDebjQri+3wMn9Tv+QJzvsedtd69lfgf4K8U2/II4P6v0CZzCb3gCneFzoB+WwclZbJzvsedtN8/ngC/ybiuOw/7i/KzSJ3AaDupK5P08Aj4PfCIvxhqsi3jsedvNGwmXYFcg+7G/1DhB6RMIvOfdq7sc+sbUEW4VLNCNW+Cx5203z++Ok3c5TvWbdc4mEDZzvr/OxjhchUHw6Rx47HnbzTPf4lu2mcvaBzd2j8FP2x2o76+Bx5633TzzU/3UUngCrg4LsBGpjmrx14UwiZfhtsLdZuCx50Pxjf6aYT3W5XtFbrjJcsf4HlIdFeX22C9mUG+7XI/1zIG3Y274r74Bq1Fkectj0UGqvQjHtw7r8Rbsg9zw4eL67C/OP8OLUx03i+Nbh/VcCuvLjfYwaSz8wr0Et83+cuYGrlkcz3Ed3zqsx7qsr1C4XvvC4W+Uvr8+DXefzeJ4juv41mE9DcUF8CJ/JfanDNdvt77N4niO6/jWYT1VVFFFFVVUkYm2tn8Bs+/GQepN2+4AAAAASUVORK5CYII=
endtext
this.image6.pictureVal=strconv(m.my6,14)

text to m.my7 pretext 7 noshow
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
endtext
this.image7.pictureVal=strconv(m.my7,14)

text to m.my8 pretext 7 noshow
iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAXsSURBVGhD7dl3yLV1GcDx16ZmWu6dWgrlwj0ycWQuGmpWmpqjlJw508q90oa7tCHuXKWigTiLFC0McyCJ4gAVlVQQEREE/X7gOXB48f1Hz3Nj+Fzw5Zxzr+e6rt+1fvcza0ZmZEY+mLJG7Bn7xI/eA1vH52LBGFQof1c8EI+/B86OLYIRg8qB8VjcEufHb+Ksd8H3YuVYNAaVn8QrcUl8M74am78LVopPx9wxqIwMOCfWji/FZsGjzp0UZ4aV+V2cG6fHCXFECMGvBe9/Ij4ag8rIgBNjkaDIJkG5v4T8EGLPxsvxdPw3/h5XxbHxrVglPhwfikFlTgb8IE6Nk8O5ETx/fFiZn8cvwoocHfvHl2OJmC8GkTkZsF0ID5VFfC8fi019+r1lMFJo3R33xcPhOUozIwaR2Q2g4KqxbRwWP44jw3Xw3bFDQgU7IPYL9/8+fhVWY+MYRGY3gJd57xshfP4UPKxPyIX/xD/igmCMCvSpWC8kviT/V+wVg8jIAD2A1/YIxoht1efXcdoUcsJxXnZO5XLsZyGclOCdgvJrxSAyMkDFMU5cEy+F6iMkDg2KbRrrxFdC1ZHM18a98VxoZl+MZWJQGRkgNBhxcUjMw2OH+HbsGDvHLlOfvPzdKY4JTfAPIXw0w4VCTxhERgaMOC82ihVDKdwghIeEFloHBUNUGk3Lp9+Xh5UTau5lxCCye2hKvC9kxO/qwZOqjUTmWTH/yxAqjNQL9g3lVgJzhHnKUOe4cBtE1HONSPxrQpLPREnBJ0L1uTPkhqS9YerY/SHsrMgCIU80NqEkN74Tg8gKwQge+2yY6833vH5zyAdKKpGU1NyMGRT9W6hKknr7+HpYoYdCf/h4fCQGFYreGlcEj0tglYWXxbxPv/cOnr40lGAe10dOiddDvswfjBhEDGGGMd5/NEyelJKgegOFdVxVyaihGqlUlGfw92Pe0BNeDIYsF0bsQYTyH4vj4o0QGkvGbnFZSFBxL9Epq1NvGBqdXGE4EW5PhWq0ZkxsJrL8arNltW+dJ8aF8jxoynwzJKRw4WkG8LLkZYA8UH2sBAOsmJgnZiQjNweoZovHRITyC8fSIXFn33zbSZlpKP5WiGHxK2TGDRBaQkqZNQcxwBQqvIjObe/AgNXCbDUREQ5KpD/MS9r+XPH5EA7O2c+q9eMGrBtC5odBSUltnNAvrJYcUGKFGqcIQTng3FJhxSciXwjLLjY1Ll5kAOVNlruG6qInjBugsiivVk8Y8qhnaXL6gzFCz+AYK2vQezWMGFZ1YmVULIpJ1cFYbDT4ZIhxW0OeU3V4c9wA9/C6uce1Vo8TLoqbwuwvlPQCq/LbMH77TvmJbTEpYzlNka8FQ3hTefxrqOea0D9j3IBtQpxfGNfHv+P5MPNfHYxTAOSKech1wkrTm6jwBoXEMiXPCH9UKNnL6rh3xJMxboAOLQeEzGgPzCArYcWEoE5uZrLRcc5zbU2nRbwCUQp5idIaldmHcv8LqzNugGZkIuVRXXqrMIFKUE6xZ3bvjcH4n4Z8mbZx2n7XPK/a3B6SzU5MKEnA20IV+XNYGaM0I1UZ9d+nXBDjmpd7rgyzk1csZiLJzIhpec0iccU+xZ8JyUghicg4nn8k1HZ1n3KuFTKUNj4okdeFBvZgyAdFYdnwxsILMhVN1WLEREXCMUJIWAWzvVJ4VKgkPE5Zhoz2Abws9t9pT8w4o7hVMo1aFfllJayC7j4tYkYxq0g6VUUMj0qiPyrOJaM3D7ovI1UdVYbiZh5O4HH13l7C/Z7zQqhy0/q63XZx/PWJEvrHUOPH3/scHMYDv30H5c0+o/8pCB/3aYie43mMe6eZa+JiYPMyi7LmHW/YTJM8yYuUpIwXvraOPv123PlR9XGfosAgz/PcQYSH/LHRiyneN06Mxz2PQvKOvo/ng+vdp0KtH5437Z6fk3wmzPkqDsW8mdPg7gn7AZ9+Oy5/XOeVvPveF2KkpozpVIc1pPGs6qSL+/Tbcedd53r3zciMzMiM/N/KrFlvAzAmhqNPn2cMAAAAAElFTkSuQmCC
endtext
this.image8.pictureVal=strconv(m.my8,14)


with this
.anchor=32
.left=0
.height=thisform.height
.backcolor=rgb(181,230,29)
.backstyle=1

.setall("backstyle",0,"label")
.setall("forecolor",rgb(0,0,0),"label")
.setall("left",2,"label")
.setall("visible",.f.,'label')
.setall("mousepointer",15,"label")
.setall("mousepointer",15,"image")
.setall("fontbold",.t.,"label")
.setall("fontsize",12,"label")
.setall("autosize",.t.,"label")
.setall("stretch",0,"image")   &&48x48
.borderwidth=0

.label1.caption="Home"
.label2.caption="Visual foxpro"
.label3.caption="Samples"
.label4.caption="Web CSS"
.label5.caption="HTML"
.label6.caption="DataBases"
.label7.caption="Applications"
.label8.caption="Win10 Apps"

endwith

with this
for i=1 to .controlcount
if lower(.controls(i).class)=="label"
bindevent(.controls(i),"mouseEnter",this,"my1")
bindevent(.controls(i),"mouseLeave",this,"my2")
bindevent(.controls(i),"mouseDown",this,"my")
endi

if lower(.controls(i).class)=="image"
.controls(i).left=(.controls(i).parent.width-.controls(i).width)/2
bindevent(.controls(i),"mouseEnter",this,"my1")
bindevent(.controls(i),"mouseLeave",this,"my2")
bindevent(.controls(i),"mouseDown",this,"my")
endi

endfor
.timer1.enabled=.t.
endwith
ENDPROC

PROCEDURE timer1.Timer
this.enabled=.f.
this.parent.ymove()
ENDPROC

Procedure ymove
local m.delta
m.delta=20
with thisform.ycnt
.setall("left",-100,"label")
.setall("visible",.t.,"label")
inke(0.2)
for i=1 to 8
with eval(".label"+trans(i))
.zorder(0)
do while .left<=.parent.image1.left+15
.left=.left+m.delta
sleep(20)
enddo
.left=(.parent.width-.width)/2
endwith
endfor
endwith
endproc

procedure my
LPARAMETERS nButton, nShift, nXCoord, nYCoord
*--- aevent create an array laEvents
Aevents( myArray, 0)
*--- reference the calling object
loObject = myArray[1]
messagebox(loObject.name+" clicked. can execute any code from this!",0+32+4096,'',1200)	
local m.n
m.n=int(val(substr(loObject.name,6) ))
*can write here the actions to run
*do case
*case m.n=1
*case m.n=2
****
*case m.n=8
*endcase
endproc

procedure my1
LPARAMETERS nButton, nShift, nXCoord, nYCoord
*--- aevent create an array laEvents
Aevents( myArray, 0)
*--- reference the calling object
loObject = myArray[1]
do case
case  lower(loObject.class)=="label"
loObject.forecolor=255

local m.n
m.n=substr(loObject.name,6)
with eval("loObject.parent.image"+m.n)
.left=.left-2
.top=.top-2
.borderstyle=1
endwith

case  lower(loObject.class)=="image"
with loObject
.left=.left-2
.top=.top-2
.borderstyle=1
m.n=substr(.name,6)
with  eval(".parent.label"+m.n)
.forecolor=255
endwith
endwith
endcase
endproc

procedure my2
LPARAMETERS nButton, nShift, nXCoord, nYCoord
*--- aevent create an array laEvents
Aevents( myArray, 0)
*--- reference the calling object
loObject = myArray[1]
do case
case  lower(loObject.class)=="label"
loObject.forecolor=0

local m.n
m.n=substr(loObject.name,6)
with eval("loObject.parent.image"+m.n)
.left=.left+2
.top=.top+2
.borderstyle=0
endwith

case  lower(loObject.class)=="image"
with loObject
.left=.left+2
.top=.top+2
.borderstyle=0
m.n=substr(.name,6)
with eval(".parent.label"+m.n)
.forecolor=0
endwith
endwith
endcase
endproc	

procedure resize
with this
.left=0
.top=0
.height=.parent.height
endwith
endproc

ENDDEFINE
*
*-- EndDefine: ycnt
*expand-collapse container bar class


VFP  collapsible and accordion menus demos.

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

 
*4* created on monday 12 of february 2018
*demo of 2 classes containers as collapsible toolbar horizontal and vertical.
*click on image menu or on orange arrow to collapse/expand the container
*12 images are in code (separatly in 2 classes)

PUBLIC oform
oform=NEWOBJECT("form1")
oform.Show
RETURN

*
DEFINE CLASS form1 AS form
   ShowWindow=2  &&0,1
   autocenter=.t.
	Top = 0
	Left = 0
	Height = 767
	Width = 765
	Caption = "2 classes container as collapsible toolbar (H & V)"
	Name = "Form1"

	ADD OBJECT ycnt1 AS cntH WITH ;
		Top = 12, ;
		Left = 12, ;
		Width = 624, ;
		Height = 60, ;
		BorderWidth = 0, ;
		Name = "ycnt1"	

	ADD OBJECT ycnt2 AS cntV WITH ;
		Top = 84, ;
		Left = 36, ;
		Width = 60, ;
		Height = 624, ;
		BorderWidth = 0, ;
		Name = "ycnt2"	
	
	ADD OBJECT yinfo AS label WITH ;
		AutoSize = .T., ;
		FontBold = .T., ;
		FontSize = 24, ;
		BackStyle = 0, ;
		Height = 35, ;
		Left = 200, ;
		Top = 100, ;
		caption="", ;
		ForeColor = 255, ;
		Name = "yinfo"		
ENDDEFINE
*
*-- EndDefine: form1

*
DEFINE CLASS cntH AS container
	Top = 12
	Left = 12
	Width = 624
	Height = 60
	BorderWidth = 0
	Name = "cntH"

	ADD OBJECT image1 AS image WITH ;
		Picture = "", ;
		Height = 48, ;
		Left = 0, ;
		Top = 5, ;
		Width = 48, ;
		Name = "Image1"

	ADD OBJECT image2 AS image WITH ;
		Picture = "", ;
		Height = 48, ;
		Left = 55, ;
		Top = 5, ;
		Width = 48, ;
		Name = "Image2"

	ADD OBJECT image3 AS image WITH ;
		Picture = "", ;
		Height = 48, ;
		Left = 96, ;
		Top = 5, ;
		Width = 48, ;
		Name = "Image3"

	ADD OBJECT image4 AS image WITH ;
	    Picture = "", ;
		Height = 48, ;
		Left = 137, ;
		Top = 5, ;
		Width = 48, ;
		Name = "Image4"

	ADD OBJECT image5 AS image WITH ;
		Picture = "", ;
		Height = 48, ;
		Left = 178, ;
		Top = 5, ;
		Width = 48, ;
		Name = "Image5"

	ADD OBJECT image6 AS image WITH ;
		Picture = "", ;
		Height = 48, ;
		Left = 219, ;
		Top = 5, ;
		Width = 48, ;
		Name = "Image6"

	ADD OBJECT label1 AS label WITH ;
		AutoSize = .T., ;
		FontBold = .T., ;
		FontName = "Webdings", ;
		FontSize = 24, ;
		Anchor = 768, ;
		BackStyle = 0, ;
		Caption = "3", ;
		Height = 35, ;
		Left = 585, ;
		MousePointer = 15, ;
		Top = 12, ;
		Width = 35, ;
		ForeColor = RGB(255,128,0), ;
		Name = "Label1"
			
	ADD OBJECT image7 AS image WITH ;
		Picture = "", ;
		Height = 48, ;
		Left = 274, ;
		Top = 5, ;
		Width = 48, ;
		Name = "Image7"

	ADD OBJECT image8 AS image WITH ;
		Picture = "", ;
		Height = 48, ;
		Left = 322, ;
		Top = 5, ;
		Width = 48, ;
		Name = "Image8"

	ADD OBJECT image9 AS image WITH ;
		Picture = "", ;
		Height = 48, ;
		Left = 371, ;
		Top = 5, ;
		Width = 48, ;
		Name = "Image9"

	ADD OBJECT image10 AS image WITH ;
		Picture = "", ;
		Height = 48, ;
		Left = 422, ;
		Top = 5, ;
		Width = 48, ;
		Name = "Image10"

	ADD OBJECT image11 AS image WITH ;
		Picture = "", ;
		Height = 48, ;
		Left = 472, ;
		Top = 5, ;
		Width = 48, ;
		Name = "Image11"

	ADD OBJECT image12 AS image WITH ;
		Picture = "", ;
		Height = 48, ;
		Left = 531, ;
		Top = 5, ;
		Width = 48, ;
		Name = "Image12"
	procedure init
	with this
	.setall("mousepointer",15)	
	
	for i=1 to .controlcount
	if lower(.controls(i).class)=="image"
	if lower(.controls(i).name)=="image1"
	loop
	endi
	bindevent(.controls(i),"mouseEnter",this,"my1")
	bindevent(.controls(i),"mouseLeave",this,"my2")
	bindevent(.controls(i),"mouseDown",this,"my")
	endi
	endfor
	endwith	
	
	this.populate()
    endproc

     procedure image1.click
    this.parent.label1.click
    endproc

	PROCEDURE label1.Click
		do case
		case this.caption="3"
		this.caption="4"
		this.parent.width=48+10
		this.left=this.left-5

		case this.caption="4"
		this.caption="3"
		this.left=this.left+5
		this.parent.width=624
		endcase
	ENDPROC
	
	procedure my
	Lparameters nButton, nShift, nXCoord, nYCoord
*--- aevent create an array laEvents
Aevents( myArray, 0)
*--- reference the calling object
loObject = myArray[1]
messagebox(loObject.name+" clicked..write some code from here.",0+32+4096,"",1200)
	endproc
	
	procedure my1
	Lparameters nButton, nShift, nXCoord, nYCoord
*--- aevent create an array laEvents
Aevents( myArray, 0)
*--- reference the calling object
loObject = myArray[1]
with loObject
.top=.top-2
.left=.left-2
endwith
thisform.yinfo.caption=loObject.name

	endproc
	
	procedure my2
	Lparameters nButton, nShift, nXCoord, nYCoord
*--- aevent create an array laEvents
Aevents( myArray, 0)
*--- reference the calling object
loObject = myArray[1]
with loObject
.top=.top+2
.left=.left+2
endwith
thisform.yinfo.caption=""
	endproc
	
	procedure populate()
	local m.x
text to m.x	noshow
iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHESURBVGhD7ZivS15xGEffvmURLBNhQQUFwWAQLQbFWXRiUEHwF4jFYBFcm8G6gQj+AeKKWMQ2FAwiYrFsbfgDYXVxntNvecLuM3m/B0783s+BV+9739soFAqFwr+gFXtxEMcTdd8Oe0J4aB63cC9R9+2wJ8QH3McTvErUfTvsCbGGd/iMfxN13w57Qizgd/yJfxJ13w57QkzjN7zG34m6b4c9IbrRQ8u4maj7dtjTXHTgCH7EpUTdt8OeEB7axSOsur3Vpft22BNiBo/Ri9wn6r4d9oR49d8D/u358V2g9+Is3bfDnhBD+AkP8CxR9+2wJ8Q79NAEziXqvh32NBc9OIvr6EeYpft22BPCQ6f4A6vuDnXpvh32hFjES/yFVReuS/ftsCfEq/8eGMOv6KPseaLu22FPiE6cRP+JdhJ13w57QrRhP45i1f25Lt23w54Qb9FXGe+xL1H37bAnxABu4Geset1Rl+7bYU8If8r5e/QBq+4Odem+HfaEWMEbfMSqC9el+3bYE2IVb/EJqy5cl+7bYU8InwC38QseJuq+HeHH6Rb0VcYwTiXqvh32hHiDHmrHrkTdt8OeQqFQKBQK/xmNxgtxU8M3k2sjVwAAAABJRU5ErkJggg==
endtext
this.image1.pictureVal=strconv(m.x,14)

text to m.x noshow
iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAANcSURBVGhD7ZhJ6E5RFMC/WGBhiJUhQ2JvLlHYGTYWWIiFYWGhxMJKkTWZimwMe4qFkpWiiLKSEhspRaFkyPz71f/U7XX7vu/vvfcNead+i/fePfece9+555z3Wo000kgjjQyCjIcpMA8Ww0pYl+C1933uOMcPlOjUXNDZ3XAIjid47f21MAcc31cZB5NgCWwDHTwJl+EG3Ia7CV573+eOc7x66juP8/VUNDoL9sJ1eAo/4Tf8aYPPHed49dR3HufrifjqDYHNYGhcg2fwForOex0U7ztePfWdx/lmw2SoVXR+NZwDnfgMqXOpk+70rxGKiwjUd56zsApcRC0SMe9O6fx90Ph3SB36AV/hAVyAiyM8hG/gotLx6jvPPXARzl/LmYiY93W323mdfw+nYSkshxXgoj+Ci8jpxZtw/lrOhNnCA2fMttt5d1Lnt8IMmAk6dAB89gpSvSDehPNrR3uViinPrOHByzmQ7rzGdT6VTXAeHkFOP3B+7WivEokKa9429b2D1GDsvGfiDMTOTwRlGiyEw+C5eA2pfhHn1472KqnYkTYtPrk8r/MfQOeXgSGTis5vhKuQO8RFIntpz8peumLbu1j+raCp87mY1/k4fBNgKmyAY2BYPIcX8DLBM/EGPkG6CO1pV/ulxAbMHsY2IAxIxPwpcMx0SEXn58N+uAW2EncyGHpPwEWk82tvFyyCUmIXaTzqQEzuDhnP7vwW0PmI+ZB4A6bQ7bADdmbYA/vgJvhWLXra0J52tV9K7C7NzTZk4bwxapHKZZvRyhgYC0fgC7gI7WhPu9ovJc0COkjtCxj6MzD0WSjqwCVw58OAu9VNHVgPR8Eepy91wA8Me/QTYOyni5BOlXgBWMyuwGgrcSXfzvYiLuIg/Gsv5CL61guFVNGNmrkeQ04/qLwbDdGpof4eGPovsvSb2G9Xd7Pdmxi4b+IQM5J/DzTW7k1ENhmYvxIhkVbdKV+3MevB04mik14HxfuOV09953E+5639v1BInAkPnFnD1JerE0V87jjHq6d+LTHfSeJMmC1MedYJi50V2zbA1sGGLPDa+z53nOPVU7/WmO9WIrTWgD2MhcjQCLz2vs97GirdSlRsP8RtwOwibYUDr73vc8dVVmEbaaSRRhr5n6XV+guGag4Ujuk/cwAAAABJRU5ErkJggg==
endtext
this.image2.pictureVal=strconv(m.x,14)

text to m.x noshow
iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAANeSURBVGhD7ZlL6I15GMf/7iPUSDIWiLCYKDaS28KlyGVFSTIzm7EgLFyzQzasJLFgQXLZsJKixNJl5TJTY7IaGzM2ioViPp/6/+rXr+ecznvOe0Teb306/W7f53n+5/yf9z3vGWjUqNH3paEwHBbCTtgFuzPWw88wEXI5dt71fL/n9dFPX/37KoP8AHvgT/gL/s44BxvBZHM5dt71fL/n9dFPX/37qpEwBg7Dv/AfvM24Cr/CPMjl2HnX8/2e10c/ffXvq0bBODgOnwNugR+JBZDLsfOuR+f001f/viq9A77lzwPOwhaYC7kcO+96dE6/L/IOjIDRYDLXAw7BapgJuRw773p0Tj999e+LxsN0WAYGOwJRIgdgBayDTRmOnXc9Oqefvvobx3i1StPlsB+iBBJ7wSR87WS+RH/jGK9WLQbNL0P0GU6cgg2Dr53Ml+i/D4xXq/wYXINnEHWRxA3YNvjayXyJ/rZarxm1aAh4ddwOj+AfiAInei3gNRjHeMY1fk/SZBgcBC867yEKnOi1gA/gBc5uVcutxY8wDU6AyX+EKHCi1wL0twjjGdf4PWkq+A91HqKAJb0WkDDeIpgCPSndw9yEKFBJXQW47xco76kqy558DB5AFKikrgLuw1Ewfk/qtH0m6iqgtnZqO3sCtrcoUEldBRjvMfwOXcm7wrFgO9PsHUSBSuoqwHhec4zf1W22yf8EtrNPEAWJqKsAMe5JmAwWUUm2zyXQaftMXIJV4E3bxQzHzrsenWvFBTAPrwmVZPuyjVX5i8kZmAN+SV+Z4dh516NzrTB+V+3U9mUbs51FxiVv4A/wfn8SeAGakeHYedfd5/7Ip6Trdmr7ugJPITIuMSn/WpvBG7DyJizNue4+90c+JcY3j8rt1KvvPXgFkXHJQzgNa6FdAa67z/2RT4nxzcN8KmkHvIBO3+q7YMtbCu3kuvvcH/mUGN88zKeSfARS5bPazwLMw3wqqSmghZoCOlVTQAs1BXSqb76ArXAbvJTnz/MjfNzi5f43mA/t5Lr73F/+thBhfPMwn0ryYayPwu9A/otKyUvwVxYfGa6BWdBOrrvP/Z7zfOSbML55mE8lzQYP+SUk/02rxN+4JCU/AdrJ9VREOhv5JoxvHubTqFGjRl+dBgb+B3VhNVpgbJvnAAAAAElFTkSuQmCC
endtext
this.image3.pictureVal=strconv(m.x,14)

text to m.x noshow
iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAOBSURBVGhD7dlb6E1pGMfxfw4pN5IoJGfjmLNICGMcGoxxDCHJMZGUlJRLV8zNqCkluVNS7twSlzNypzQ3UjMX1JRcmt+nrHqbtvg3e7/a2U99+/c87/P81vus/1rvu9bafT3rWc++DZsd9oQj4UwHoe84jtdWI3o/PA0vOwh9x3G8ttqJ8Cw8CQ/DvXC7jdCjS99xHK+tdjH8Ex6HX8PlcLSN0KNL33Ecr63WNPAgnA97w+qwKWwPa8PC8H3YGcRXFvDFjcuTr06cDj269DvagH/3trAkjA1zwqowIbBJweTERxXwxY0z+erE6dCjS79KA+vDinAwXAnOIlsXrgbxRQV8ceNMvjpxOvSqNmCVOBB+CY/C4cCOh9/D9SCvgS9unMlXp54OvaoNOINzw8ZgMvMDc7ZNckOYUcAXN87kq1NPh17VBkyqnUavagOu2+8+/v05NA3ZQXcHcTdsA1+82WHlqyt1qjbwU9gSxO8Ek2EmaVMSt+o08MWNM/nqxOnQq9pA169CNqdZwYSsIm5EtiB4IBOfWsAXN87kqxOnQ69qA8uCzWhxsMJMCcz1vDk46zaoBr64cSZfnXo69Ko24HFgZDARZ3V0YCZrUpPD8AK+uHEmX516OvSqNtD198C+4Jr+LfwRmh3WS4nnevFdBXxx40y+OnE69Ko2sCa4BFzX5Q67NJikuJuzgS9unMlXJ06HXtUGun4nXh7cgM7oj2FaYNODTUl8fAFf3DiTr06cDr2qDfjXWwbPhhvBZJhJ3goul/KFhi9unMlXp54OvaoNOKjV41D4P6uQejr0qjbQ3MRbw6ngjYrZkM4FzzczC/jixpl8deq/yk1sIhNDsxN7XGDjgjE7rg2qgS9unMlXp56OsaoNzAvDwphgMiNCf0y+OvV06FVt4Idg5dgfLgUv6P0x+erU06FXtQEHPhZuhufhZOiPyVenng69qg14SXH9ejFptcNaHi8U8Fvt2Orp0KvagJVlYBgShobBgZmkrw9/hjcF/PKrhHx16unQq97AgDAomIxJsNPhRfgrvC/gixtn8tWpp1O9gU89C1nrXwW5Hwr44sZbWbVnoebb6I7gJeS/XAt/h3ehbIAvbrxVHb0q30Y/93X6bngbXDZlA3xx463qOv51+kt/HzCB18HZLm9ivrjxVnUd/32g63+h6frfyHrWs571rBPW1/cvf3a07q2HPJEAAAAASUVORK5CYII=
endtext
this.image4.pictureVal=strconv(m.x,14)

text to m.x noshow
iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAPTSURBVGhD7ZhLqE5RFICv96O8pt5GJshrJAoZYCYJ5RXJwIwMEAOKJCKPESEj70hKmSjKyIi8SjJRHkUib75vsGp3Ovf/z73/+f97b86qr3vPv/dee+211157ndNWSSWVVFJJd5CBMBwmwHSYBfMTfPZ32+1n/24lGjUeNHYDbIW9CT77+zwYB/bvUhkAQ2EGLAcNPAxn4TrchrsJPvu77fazv+Mcrx71tVScdDRshKvwGH7BH/hbA9vtZ3/HOV496muJuPWGwBIwNK7AE3gL9YwP7Gd/xzlePeobC8OgqaLxc+A4aMQXyDOyKI5XzzGYDS6iKRIxr6c0/j44+Q/IM6wojleP+k7AUmhKloqYd7vL8HyWr/AB9oPZrPQsZbbwwBmzZXj+N6jDvz7/BBdxDTbBTChVTHlmDQ9e1pjOEKGTdYT6ncf5SpG4Yc3bpr53kE7YUQw/9VyE3XAO7sFrsF39tm8BM1LDZ0HjjUkvnyJ5vh4adwlWQn9YCAfARdge98QhKCWtWrtYHniDpsb7v/H7EfTeJ4i2PMLzJ2EFTIE+MBEWw3nQcHWq+wzMBZ3XkFiAWcNYBqQGOZEH7xWkIdAeETbGdl/oDUo/GAx74Du4CPs733qYBg2JVaTxby2TZ9A+cKIjcAdeQtpPzz8CPa/xk0Hj9b4L0UHrwOyThqjzOa/zNySGj7nfgiw17DIYCpNA8XbeDi4i7afxFyDref/3clwLt+AFpOOcz3mdvyHJLiBi/xTonTGgRImxC1zEA6jneY0/DRrvJdaSBWi8ufsgjIJsFRk7cRQ64/mgtAVkz0DsgF7eAQtgCEQ9HzuxCJaBIdYRzwelnYH2stB7eAYuYiS4iFR6JShFPR+UloW8B3wNNC9HhhDrFhdxE2InDKfYiTA+vD8VVoNnp5bnxXm8d5zX+RsSb0JvRG/GvJtYQ57DTsg7ExrvjbsKboC7lo7Pon7n8eYv5d3ZWsRFWJuY+7O1UJTB6U4YToPAsDEE1oCe13h3LR2fJWoh47/U9wKzSa1qNHsmRkBHYj4ovRoNqfc+EGdCY60yt8FmsMapF/MS5bX6ncf5SpWib2QWddZFT+EhvIG8flnUp171N+UrheGgUt+JfQG3gMvbiW/gItwNjf8MaXuW8Lz61Kv+NJuVLmYkvx44Wa2dKEp4vulfJUIirfbY70IhcSZ63Je5kDgT8W3Ue8LLzhvbMsBaxoIs8Nnfbbef/R3XZd9GsxKh5WugNYwXkaER+Ozvtrc0VIpK3Ni+w3r7WkVaCgc++7vt9ivthq2kkkoqqeR/lra2f164S9COhj4JAAAAAElFTkSuQmCC
endtext
this.image5.pictureVal=strconv(m.x,14)

text to m.x noshow
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
endtext
this.image6.pictureVal=strconv(m.x,14)

text to m.x noshow
iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAFlSURBVGhD7dm7SsRgEMXxKIqIWHlrrUQRwQdQsLKyEUHBasHGywtoZaWNYGtroYX4CoKVNjaCvoD4GF7/pxiw2c2XIuabMAd+5WbnTNhNNltEIpFIpIlMYwWrWMMiJjCCKhnDDMbRjz78SzT8Mc5wgQ7moBJVouG1gFkMQCVqjd5kCDu4xwOecI51qERKprCAPVxhC8MYRK3R8KM4xc8fdzjEElKi4bdxi0+cQMfV8WtNrwJHWEavTGIeB9Dwr/iGjueigIbfxA0+8AW9PvsCtvl9aPgXaHht30WBbps32RYo27zJtkDZ5k12BVI3b7IrkLp5k02BDVTZvMmmwC6qbN40XuAZl7iGhtcVNmXzpvEC73jEG3Rvkzq4iQKpaW0B958B999CrbkOuL8St+ZeyJJ6JrIt4P73gKXsTGRfwP1vYku3M+GmgJ2JLJ8LuXgy5/7ZqMXt02mL+/8HIpFIJNKGFMUvhlWNjAU7KuUAAAAASUVORK5CYII=
endtext
this.image7.pictureVal=strconv(m.x,14)

text to m.x noshow
iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAO/SURBVGhD7dlXqFRHGMDxa49djFgjiIoVkRgSFOz6oJFExIaCvSVEkURQDNgL9oIa1GjAmmBLTHzQqMlDJNggqFgeLKAiiqCo2LDl/wcHBlkPd+W6ex/OBz9kz7B355s5Z87MZ0EaaaSRhlEOVdAUndEbQ9EDbfARyqIUimXYeTv5JWbgJxzCCoxGW1SESeQ1SrxWHQ3RHv3xLZZgO/7Gf7iMo/gd62BiY/EFPkEdVEZOw86XRCN0xxTswBk8wwu8yuAp7uNfmIyJeGuZxHsN721HqTEc7QFwtBdiMw7iLG7Bzr9EpgSewySu4ST+gInMRDwr9VGkz4qdd5R8GB3tnbiCu8jU0WzdgAmFWWmHSsj6WQn3dg00QScMwndYjC0Io23nHyNTh7L1ACGJMCs+K2PQC95mtWFSiRHubZdBvzgde3EeTv/bbo2i9gT3cAQ/YBRawyQS4wNUxWBsgyvJBdxGrjovB8skruIEfsYcdEViuI7Xw1Jk+sP54gB6F4xHYpRHNbimex/ug2u5D+ydPHBZPoCNmIUuSAyXrTLwbepy9jV8m/6FSzl2Ed46LiBuSVqiJhLDB9gkvJXq4lP45UnwYfK5cJXwwf4VyzERi7AVu2C7L7VNWADbV8LrgavZKtg+DWsRt2/AXAyDS2oz2Hm3Ie8U/gET8R70R+chntLP8A2+h+2T4d7H5c/wbe314Cv4Tgkvrb6I211ECjXihQ1HwTfvj3Bpc3X6E0NguHlbD2fFdmfADZydNEbC64GzOQ490QK+HON2B6cjGqBI4nM45cfgqhD2NFNh+MKx7TpsdwPnLtSttOFWIV5V/sF82O7sOTBx+y/og+YokkgTQNzBNIFsI00AcQfTBLKNNAHEHUwTyDbSBBB3ME2gsOGW1hrQMliMsp7jD4Qz6364k9wNz68exG33NOWBxF2p7SYTd9ATnjta21fjOOL2U7DeNAEm6DH3ncLOWwM6DTtsx8OPeMh/BDv7EHFFzn/97HXb3yy/2OY1251JZzRu97Ollt/gGcQksgpPZqXhQWQ2PB+71/ckFk5N1jr3wFH0X9u8Ftr8HNr9bviewonOdk9xdjRu97Oz6m8PRCvYJ8s+hQo7b4nlY1jYGg4rZrnWD5ZSrMF61DWJxLDj1kG7waLWGmQaoVxx9jxbe0IbAQc0McJ/UPgF78E37818CQ+9d0JiVMCHcPRvwoJSqNHk0zkchlWKxLB4WgtWFzLVavLFom9cRHhrWM42iQ6wnlNc+EDbeQu8aaSRRhrFLgoK/gf6AS21ISl7sAAAAABJRU5ErkJggg==
endtext
this.image8.pictureVal=strconv(m.x,14)

text to m.x noshow
iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAJQSURBVGhD7Zg9T1RBFIb3D/gHlBoLSg1SAIFoKVLJPyBQaLTjy0JJJLbYS6ihEzo+AomVJGpjaWJMaOxtbPB5kp3kZjPIsjuTuzfMmzzJna9zzr0795zZ2yoqKioqGgTdgttwF+61r6uybb/jXjt/oGRQ92EG5sFgq7Jtv+PO67zB2jUGL2ATPsIqTFewbb/jznP+QOkp7MB3uIATeFPBtv2OO8/5tWgIHsBDmIUJGIE1+AznYKA/waADtu133HnOd53rtaM97Wo/q3TyHDZgC9waPs1t+A1/wEAvw3HnOd91rteO9rSr/azySb0Ft8FXOGpffwOD+wuxwAOOO8/5rnO9drzWrvazyp/7A3yBWIC9oj3taj+r3LMrcAixQHpFe9rVflb54oWMEwukV7SnXe0nVaiw5m0dmD18Ad3DsUB6RXva1b5+9JekYocKa/HxKZkCu8k21yVkJ+3rR39JKrZnlyfwHixC5vFuss11CdlJ+/qxYutX/33Jp7AI+xBznIs9WAD996WwhZbhAH5AzGEqfsEneAVJtlDQOCyBNxFznAqDfwePIKkmwadyDDHHqch2A1PwGsKpMhfJbyC8Ax66qqfKXCR/BzRSRxbSn37135fqqgP6S1IHwhZqbCVu/FmoU407jXaq8f8HGv+PrPH/iXN9lTD4ZzAKWfW/70JnYB43UCv2aYVuvgsZ/B2oRXOwCxYhAzXo9Qq27Xc8ZJyBknn7JTT222io2Fd9nX7cvu67wqZWqNieXWIB2rZ/uH2dvMIWFRUVFd1EtVr/ALOcabNDnXMhAAAAAElFTkSuQmCC
endtext
this.image9.pictureVal=strconv(m.x,14)

text to m.x noshow
iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAALASURBVGhD7ZnL605BGMdf94UShZVCFMmOsmDnFiWW2CslO2yxcGeh38r/4LaXy1ZZkS07YWOBNZ/P4qnTNO85XnPOyat56tOvmXnm+c7Mb67nnVSrVq1atSFtFWyA3XCshSNwALbAYlgETTNt/lY4CPrn4gTqqat+kRlkD5yFBy3ch5twCJaCjW2aafMPwy3QPxcnUE9d9YtsF5wBg75p4Tk8htOwDJZA00wvB8v10z8XJ1BPXfWL7CgswGv41cIXeAfnwYamHXD0V4Dl+umfixOop676RdbVgZ/wFZ7CRdgHNn7aFLJcP/2tZ/1c3NE6YCPewyVYDyuhzSzXT3/rWT8Xd7QOfIOPcBU2wxpos9WwES7DB7B+Lu5oHfgBzuc7sBMc3TZbC9vhBnyC75CLO1gHYs47cjY+eAW34QSsg3QqmTb/OLjdvgAbH/WN11wTg3Ug5rzT5jMobr5/TbvH7wAb2zTT5lueq2e85prorQMePPfgGThVnoAL8ArYmJdgIwLT5jvSNjow3eZvPOMaXx317oL6RbYfrsNDeAsXwHm+CdpG1HzLgy4/4xnX+Oqodw3ULzLvNt5dTsI52AvOZ3eTPxnZYFp5/KeMZ1zjq6OeuuoXWRxAQXpAKd42wkGar7/1rN+0Lr2ZLW6RQXrL7NpdUrp2qy69wcz9fRtM299t/CznxejWdUDVDvytxZz0hpm7Zfa9BlKt4jVgEHcDHym5e76N6HMXMr466vWyC8U5cAp8jHifd9SGOgeMr456vZwDcRI/Al9SPkaGPImNr4566hafxOldyJfUkHch48ddSN3iu9Dc30bTDsz9eyBF8Vn2964TOxitA47cXL+JY024AB39dOqkZrl++jfnfMpoHYg1MbffhQLXwT/5ZW7uv432/XXacv1G+zrd9+8Dlus32u8D1apVq1btf7bJ5Dd1ZQvGtMpUvwAAAABJRU5ErkJggg==
endtext
this.image10.pictureVal=strconv(m.x,14)

text to m.x noshow
iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAATcSURBVGhD7dhp6KZTGMfxf/axjJqaGSFpmoxtlqzZGWOJIoxlLBMiGqKQLGXfsjQJL7wgZpRlbJEkFGMp5YVCyP5OyMibSTL8PuXUScfk/P/PoNxXfes557qu33U993Puc5/7GRtssMEGG+zfsA3CJmFqmBF2DXuFfcOBYX44vMLYPL848fLk06H3j5qiW4adw4JwSrggXBquDjeGOyqMzfOLEy9PPh1669RcKcVczbPCZeHWcF9YFp4ML4SXwqvh9fBWhbF5fnHi5d0bbgn06B4W1FFvpEb0hOBqrgxfhTXhtwlC49fwZfAlbw/qqDchWy9Yl3OCn/v68HhwNb8OP4ZWQ+PBl1gVXBT66qinrvr60E+XSdo4nB6eDR+HVvF1hXrqqq+P7pt8h3BUuDsQ+z60Cq0Ort4nwdKyxhV+KjxRYc2bezG8Fj4KPwT5LV311FVfH/rpsiPCXeHt0CpQ0PwX4blwc7DLnBlOCydWWA7mLgqWxzPhs+BLtHQL6utDP11mi7M7WI/vrgX+m8I54dBgn58XrN1dKuz75vYOh4Szg631sdDSLdDXh3667OBwbbgz3L8WNDKeba9sy/JbugX19aGfLjsprAivhNaVKVwXdg9bhx4TL09+S7egvj7002UXBjfad6G1NgsPhP3CdqHHxMuT39ItqK8P/XSZb2znsC9/3uDTYOdxQ+4YxrOE5MmnQ69VR319dP8C1pyf98HwcgPb4fPBzauZzUKPiZcnnw69Vh319dF9D2wfJB0bFjfwgDk17BY0s1HoMfHy5NOh16qjvj708/+yPcL5wSnRT7gkLAyzw4bB+f6aYIvjPyPsE+z3blBXznzB2Dy/OPHm5dOhR5e+Ourxq68P/XSZpPfCN8Fu8H54NCwKmwYPoV+CkyS/I8Ql4eSwf7B2693E2Dy/OPHm5dOhR5e+Ourxq68P/XSZK/BB+DYQ+jDYj63VzYNjg+LlSO2Guzw4LlizDwXzBWPz/OLEmy/HaXp06aujHr/6+tBPl/35OeDz08GNtUXweC/NwQPnysDvSPFwqP3G5vnFia/99Ojyq6Oe+XE/B44Litri3gzLww3BG9mkcG5YGd4I/EuDn98blbPQVcF8wdg8vzjx5uXToUeXvjrq8auvD/10mRdv764K3xYuDk6VbjJnc4crhzhXjt/roJvTwW3bcHwwXzA2zy9OvHn5dOjRpa+Oevzq60M/XbZNkHRAIO7nt4adKDWyZzgmOKu7av5xED83eMJq8ugKY/P84sTLk0+HHl366qinrvri9TMhmxZcPQ04hHnB2CpMDusHBTyU+ODBY00XjItPnHh58unQ46OvjnojtSODdetfBMfcK4LziavjSGB7rI/B5wVXtWBc+8XLk0+Hnnn66qg3UrNz/BR+DnaHd8I9wQNp1h+f613FTsJXMK794uXx+UzPPH111Bup/dUXsO1Z265c3aBXRr6Cce0XL49v+AJ/x5xlvHw8EvzLYOtT3EuJm9C26P21/Avh5Z6vYFx84sTL46NDj4++OuqN1GYGNxZh+/RBYaegCf/b2L/9o+Ygxu/mnF5hbJ5fnHh58unQ46evjnojtSmBqJ/dNmdbtIs4v3gAadJLOvhtk3wFY/MlRrw8Pjr0+Omro95ggw022GCDDfYft7Gx3wESp+++LHI0vwAAAABJRU5ErkJggg==
endtext
this.image11.pictureVal=strconv(m.x,14)

text to m.x noshow
iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAANQSURBVGhD7dlZqE1hFMDxa57neShDkSFJvCEZUkiUPFA8IA8yPhheiBcRHkRKUhIRCinkxQsPJIWE5EVmpUwpEv9/+Wr77tn7nnuce8892at+da972mettdf+vr23mjzyyCOPPMoRLdEWozEXY9ARrVEVYfJdsRCHsQh9YRFVER3QGxtwB5sxGBbVENHsj14YgVHw7MeGoag8OmMA9uEXDsID90RDhMk3x0jMxwJ49mOzMQUWkRmVKmAqtuMQzhRwBHswE5lRiQLktXYBj+H3xt7jEVYjMypVwHiswHl8x09URQEhXOX6YCe+wCKqooCw70yGK99lVNUZCPvOGtzGSyQTDxqtAHds9xKTcm3350LRCu0wCWvhSmPyn+D3fsU7PMcTeHE3SgFhI3S9dlOyiEJh8t2wDm6YrxC6LZN/iBu4hJto0ALsvBei6/km7MBeuDH1RycYyc6b/FmY/Gf4faHzLqkeZxWWYCuOYh4yo9QCwiril9o5T/0H7IdLpEUYxXbe43i8LrA5E7AM45AZ9S0g7rydM4mP+AZHwCIWYyhmoZjOezyP60XeAjbA5PshM+pbQNx5kwjdlEV4JryznYFdKKbzHrekKLaAsNrYqY0InbeTycR+wCJM+jg8I3HnXSIvwjvfaTB5j19SFFtAWG1M/gHeIpl4scL6vgWOR7jYS466Cig08ybv9u/n7awdfoaswsLMJztv8m3wT1FXAXXNvMk7LtdwChaR/HtQtpmPI60AV4Gsmbfzr3EO67EcPogcwD28gZ8r+8zHkVbAIGTNvMnfhTdkPWCxLn9uZF68FuHnyj7zcaQVMB3uiCdQaOZd1+28d5XtYUd90vJ51iJ24zp8sirrzMeRVsBKmPx9+O9BmHk3J3dYd9pkWIRnwtHbhjko68zHkVaACbibHsMLmHhy5u28yXuvk4zwzDsEPpQPR1lnPo60AgYi3Lffgl1Pzrxj0yQirQBfbnlfMhEW4cgkZz7ufMUirYCwD4S7ySCe+YpHXMBVJNd1r4OlCf6efAHVWMai0DVXq4CnuAI3nvhlUyXZvO6oNQHhJi28G/WW4DROwg2pqfDMFxzh+O10U2V+5mm+f0X8/wNNlfmZp/nmkUceeeTx30dNzW9zLasyfpANQwAAAABJRU5ErkJggg==
endtext
this.image12.pictureVal=strconv(m.x,14)

this.refresh
    endproc

ENDDEFINE
*
*-- EndDefine: cntH

*
DEFINE CLASS cntV AS container
	Top = 84
	Left = 36
	Width = 60
	Height = 624
	BorderWidth = 0
	Name = "cntV"

	ADD OBJECT image1 AS image WITH ;
		Picture = "align-justify_resized.png", ;
		Height = 48, ;
		Left = -2, ;
		Top = 5, ;
		Width = 48, ;
		Name = "Image1"

	ADD OBJECT image2 AS image WITH ;
		Picture = "arrow-circle-left_resized.png", ;
		Height = 48, ;
		Left = -2, ;
		Top = 51, ;
		Width = 48, ;
		Name = "Image2"

	ADD OBJECT image3 AS image WITH ;
		Picture = "binoculars_resized.png", ;
		Height = 48, ;
		Left = -2, ;
		Top = 103, ;
		Width = 48, ;
		Name = "Image3"

	ADD OBJECT image4 AS image WITH ;
		Picture = "building-o_resized.png", ;
		Height = 48, ;
		Left = -2, ;
		Top = 150, ;
		Width = 48, ;
		Name = "Image4"

	ADD OBJECT image5 AS image WITH ;
		Picture = "check-circle_resized.png", ;
		Height = 48, ;
		Left = -2, ;
		Top = 200, ;
		Width = 48, ;
		Name = "Image5"

	ADD OBJECT image6 AS image WITH ;
		Picture = "balance-scale_resized.png", ;
		Height = 48, ;
		Left = -2, ;
		Top = 247, ;
		Width = 48, ;
		Name = "Image6"

	ADD OBJECT label1 AS label WITH ;
		AutoSize = .T., ;
		FontBold = .T., ;
		FontName = "Webdings", ;
		FontSize = 24, ;
		Anchor = 768, ;
		BackStyle = 0, ;
		Caption = "5", ;
		Height = 35, ;
		Left = 5, ;
		MousePointer = 15, ;
		Top = 585, ;
		Width = 35, ;
		ForeColor = RGB(255,128,0), ;
		Name = "Label1"

	ADD OBJECT image7 AS image WITH ;
		Picture = "step-backward_resized.png", ;
		Height = 48, ;
		Left = -2, ;
		Top = 297, ;
		Width = 48, ;
		Name = "Image7"

	ADD OBJECT image8 AS image WITH ;
		Picture = "institution_resized.png", ;
		Height = 48, ;
		Left = -2, ;
		Top = 346, ;
		Width = 48, ;
		Name = "Image8"

	ADD OBJECT image9 AS image WITH ;
		Picture = "certificate_resized.png", ;
		Height = 48, ;
		Left = -2, ;
		Top = 396, ;
		Width = 48, ;
		Name = "Image9"

	ADD OBJECT image10 AS image WITH ;
		Picture = "arrows-alt_resized.png", ;
		Height = 48, ;
		Left = -2, ;
		Top = 444, ;
		Width = 48, ;
		Name = "Image10"

	ADD OBJECT image11 AS image WITH ;
		Picture = "tty_resized.png", ;
		Height = 48, ;
		Left = -2, ;
		Top = 494, ;
		Width = 48, ;
		Name = "Image11"

	ADD OBJECT image12 AS image WITH ;
		Picture = "line-chart_resized.png", ;
		Height = 48, ;
		Left = -2, ;
		Top = 540, ;
		Width = 48, ;
		Name = "Image12"

   procedure init
	this.setall("mousepointer",15)
	with this
	for i=1 to .controlcount
	if lower(.controls(i).name)=="image1"
	loop
	endi
	if lower(.controls(i).class)=="image"
	bindevent(.controls(i),"mouseEnter",this,"my1")
	bindevent(.controls(i),"mouseLeave",this,"my2")
	bindevent(.controls(i),"mouseDown",this,"my")
	endi
	endfor
	endwith	
	
	this.populate()	
    endproc		

    procedure image1.click
    this.parent.label1.click
    endproc

	PROCEDURE label1.Click
		do case
		case this.caption="5"
		this.caption="6"
		this.parent.height=48+10
		this.top=this.top-5

		case this.caption="6"
		this.caption="5"
		this.top=this.top+5
		this.parent.height=624
		endcase
	ENDPROC
	
	procedure my
	Lparameters nButton, nShift, nXCoord, nYCoord
*--- aevent create an array laEvents
Aevents( myArray, 0)
*--- reference the calling object
loObject = myArray[1]
messagebox(loObject.name+" clicked..write some code from here.",0+32+4096,"",1200)
	endproc
	
	procedure my1
	Lparameters nButton, nShift, nXCoord, nYCoord
*--- aevent create an array laEvents
Aevents( myArray, 0)
*--- reference the calling object
loObject = myArray[1]
with loObject
.top=.top-2
.left=.left-2
endwith
thisform.yinfo.caption=loObject.name
	endproc
	
	procedure my2
	Lparameters nButton, nShift, nXCoord, nYCoord
*--- aevent create an array laEvents
Aevents( myArray, 0)
*--- reference the calling object
loObject = myArray[1]
with loObject
.top=.top+2
.left=.left+2
endwith
thisform.yinfo.caption=""
	endproc
	
procedure populate()
	local m.x
text to m.x	noshow
iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHESURBVGhD7ZivS15xGEffvmURLBNhQQUFwWAQLQbFWXRiUEHwF4jFYBFcm8G6gQj+AeKKWMQ2FAwiYrFsbfgDYXVxntNvecLuM3m/B0783s+BV+9739soFAqFwr+gFXtxEMcTdd8Oe0J4aB63cC9R9+2wJ8QH3McTvErUfTvsCbGGd/iMfxN13w57Qizgd/yJfxJ13w57QkzjN7zG34m6b4c9IbrRQ8u4maj7dtjTXHTgCH7EpUTdt8OeEB7axSOsur3Vpft22BNiBo/Ri9wn6r4d9oR49d8D/u358V2g9+Is3bfDnhBD+AkP8CxR9+2wJ8Q79NAEziXqvh32NBc9OIvr6EeYpft22BPCQ6f4A6vuDnXpvh32hFjES/yFVReuS/ftsCfEq/8eGMOv6KPseaLu22FPiE6cRP+JdhJ13w57QrRhP45i1f25Lt23w54Qb9FXGe+xL1H37bAnxABu4Geset1Rl+7bYU8If8r5e/QBq+4Odem+HfaEWMEbfMSqC9el+3bYE2IVb/EJqy5cl+7bYU8InwC38QseJuq+HeHH6Rb0VcYwTiXqvh32hHiDHmrHrkTdt8OeQqFQKBQK/xmNxgtxU8M3k2sjVwAAAABJRU5ErkJggg==
endtext
this.image1.pictureVal=strconv(m.x,14)

text to m.x noshow
iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAANcSURBVGhD7ZhJ6E5RFMC/WGBhiJUhQ2JvLlHYGTYWWIiFYWGhxMJKkTWZimwMe4qFkpWiiLKSEhspRaFkyPz71f/U7XX7vu/vvfcNead+i/fePfece9+555z3Wo000kgjjQyCjIcpMA8Ww0pYl+C1933uOMcPlOjUXNDZ3XAIjid47f21MAcc31cZB5NgCWwDHTwJl+EG3Ia7CV573+eOc7x66juP8/VUNDoL9sJ1eAo/4Tf8aYPPHed49dR3HufrifjqDYHNYGhcg2fwForOex0U7ztePfWdx/lmw2SoVXR+NZwDnfgMqXOpk+70rxGKiwjUd56zsApcRC0SMe9O6fx90Ph3SB36AV/hAVyAiyM8hG/gotLx6jvPPXARzl/LmYiY93W323mdfw+nYSkshxXgoj+Ci8jpxZtw/lrOhNnCA2fMttt5d1Lnt8IMmAk6dAB89gpSvSDehPNrR3uViinPrOHByzmQ7rzGdT6VTXAeHkFOP3B+7WivEokKa9429b2D1GDsvGfiDMTOTwRlGiyEw+C5eA2pfhHn1472KqnYkTYtPrk8r/MfQOeXgSGTis5vhKuQO8RFIntpz8peumLbu1j+raCp87mY1/k4fBNgKmyAY2BYPIcX8DLBM/EGPkG6CO1pV/ulxAbMHsY2IAxIxPwpcMx0SEXn58N+uAW2EncyGHpPwEWk82tvFyyCUmIXaTzqQEzuDhnP7vwW0PmI+ZB4A6bQ7bADdmbYA/vgJvhWLXra0J52tV9K7C7NzTZk4bwxapHKZZvRyhgYC0fgC7gI7WhPu9ovJc0COkjtCxj6MzD0WSjqwCVw58OAu9VNHVgPR8Eepy91wA8Me/QTYOyni5BOlXgBWMyuwGgrcSXfzvYiLuIg/Gsv5CL61guFVNGNmrkeQ04/qLwbDdGpof4eGPovsvSb2G9Xd7Pdmxi4b+IQM5J/DzTW7k1ENhmYvxIhkVbdKV+3MevB04mik14HxfuOV09953E+5639v1BInAkPnFnD1JerE0V87jjHq6d+LTHfSeJMmC1MedYJi50V2zbA1sGGLPDa+z53nOPVU7/WmO9WIrTWgD2MhcjQCLz2vs97GirdSlRsP8RtwOwibYUDr73vc8dVVmEbaaSRRhr5n6XV+guGag4Ujuk/cwAAAABJRU5ErkJggg==
endtext
this.image2.pictureVal=strconv(m.x,14)

text to m.x noshow
iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAANeSURBVGhD7ZlL6I15GMf/7iPUSDIWiLCYKDaS28KlyGVFSTIzm7EgLFyzQzasJLFgQXLZsJKixNJl5TJTY7IaGzM2ioViPp/6/+rXr+ecznvOe0Teb306/W7f53n+5/yf9z3vGWjUqNH3paEwHBbCTtgFuzPWw88wEXI5dt71fL/n9dFPX/37KoP8AHvgT/gL/s44BxvBZHM5dt71fL/n9dFPX/37qpEwBg7Dv/AfvM24Cr/CPMjl2HnX8/2e10c/ffXvq0bBODgOnwNugR+JBZDLsfOuR+f001f/viq9A77lzwPOwhaYC7kcO+96dE6/L/IOjIDRYDLXAw7BapgJuRw773p0Tj999e+LxsN0WAYGOwJRIgdgBayDTRmOnXc9Oqefvvobx3i1StPlsB+iBBJ7wSR87WS+RH/jGK9WLQbNL0P0GU6cgg2Dr53Ml+i/D4xXq/wYXINnEHWRxA3YNvjayXyJ/rZarxm1aAh4ddwOj+AfiAInei3gNRjHeMY1fk/SZBgcBC867yEKnOi1gA/gBc5uVcutxY8wDU6AyX+EKHCi1wL0twjjGdf4PWkq+A91HqKAJb0WkDDeIpgCPSndw9yEKFBJXQW47xco76kqy558DB5AFKikrgLuw1Ewfk/qtH0m6iqgtnZqO3sCtrcoUEldBRjvMfwOXcm7wrFgO9PsHUSBSuoqwHhec4zf1W22yf8EtrNPEAWJqKsAMe5JmAwWUUm2zyXQaftMXIJV4E3bxQzHzrsenWvFBTAPrwmVZPuyjVX5i8kZmAN+SV+Z4dh516NzrTB+V+3U9mUbs51FxiVv4A/wfn8SeAGakeHYedfd5/7Ip6Trdmr7ugJPITIuMSn/WpvBG7DyJizNue4+90c+JcY3j8rt1KvvPXgFkXHJQzgNa6FdAa67z/2RT4nxzcN8KmkHvIBO3+q7YMtbCu3kuvvcH/mUGN88zKeSfARS5bPazwLMw3wqqSmghZoCOlVTQAs1BXSqb76ArXAbvJTnz/MjfNzi5f43mA/t5Lr73F/+thBhfPMwn0ryYayPwu9A/otKyUvwVxYfGa6BWdBOrrvP/Z7zfOSbML55mE8lzQYP+SUk/02rxN+4JCU/AdrJ9VREOhv5JoxvHubTqFGjRl+dBgb+B3VhNVpgbJvnAAAAAElFTkSuQmCC
endtext
this.image3.pictureVal=strconv(m.x,14)

text to m.x noshow
iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAOBSURBVGhD7dlb6E1pGMfxfw4pN5IoJGfjmLNICGMcGoxxDCHJMZGUlJRLV8zNqCkluVNS7twSlzNypzQ3UjMX1JRcmt+nrHqbtvg3e7/a2U99+/c87/P81vus/1rvu9bafT3rWc++DZsd9oQj4UwHoe84jtdWI3o/PA0vOwh9x3G8ttqJ8Cw8CQ/DvXC7jdCjS99xHK+tdjH8Ex6HX8PlcLSN0KNL33Ecr63WNPAgnA97w+qwKWwPa8PC8H3YGcRXFvDFjcuTr06cDj269DvagH/3trAkjA1zwqowIbBJweTERxXwxY0z+erE6dCjS79KA+vDinAwXAnOIlsXrgbxRQV8ceNMvjpxOvSqNmCVOBB+CY/C4cCOh9/D9SCvgS9unMlXp54OvaoNOINzw8ZgMvMDc7ZNckOYUcAXN87kq1NPh17VBkyqnUavagOu2+8+/v05NA3ZQXcHcTdsA1+82WHlqyt1qjbwU9gSxO8Ek2EmaVMSt+o08MWNM/nqxOnQq9pA169CNqdZwYSsIm5EtiB4IBOfWsAXN87kqxOnQ69qA8uCzWhxsMJMCcz1vDk46zaoBr64cSZfnXo69Ko24HFgZDARZ3V0YCZrUpPD8AK+uHEmX516OvSqNtD198C+4Jr+LfwRmh3WS4nnevFdBXxx40y+OnE69Ko2sCa4BFzX5Q67NJikuJuzgS9unMlXJ06HXtUGun4nXh7cgM7oj2FaYNODTUl8fAFf3DiTr06cDr2qDfjXWwbPhhvBZJhJ3goul/KFhi9unMlXp54OvaoNOKjV41D4P6uQejr0qjbQ3MRbw6ngjYrZkM4FzzczC/jixpl8deq/yk1sIhNDsxN7XGDjgjE7rg2qgS9unMlXp56OsaoNzAvDwphgMiNCf0y+OvV06FVt4Idg5dgfLgUv6P0x+erU06FXtQEHPhZuhufhZOiPyVenng69qg14SXH9ejFptcNaHi8U8Fvt2Orp0KvagJVlYBgShobBgZmkrw9/hjcF/PKrhHx16unQq97AgDAomIxJsNPhRfgrvC/gixtn8tWpp1O9gU89C1nrXwW5Hwr44sZbWbVnoebb6I7gJeS/XAt/h3ehbIAvbrxVHb0q30Y/93X6bngbXDZlA3xx463qOv51+kt/HzCB18HZLm9ivrjxVnUd/32g63+h6frfyHrWs571rBPW1/cvf3a07q2HPJEAAAAASUVORK5CYII=
endtext
this.image4.pictureVal=strconv(m.x,14)

text to m.x noshow
iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAPTSURBVGhD7ZhLqE5RFICv96O8pt5GJshrJAoZYCYJ5RXJwIwMEAOKJCKPESEj70hKmSjKyIi8SjJRHkUib75vsGp3Ovf/z73/+f97b86qr3vPv/dee+211157ndNWSSWVVFJJd5CBMBwmwHSYBfMTfPZ32+1n/24lGjUeNHYDbIW9CT77+zwYB/bvUhkAQ2EGLAcNPAxn4TrchrsJPvu77fazv+Mcrx71tVScdDRshKvwGH7BH/hbA9vtZ3/HOV496muJuPWGwBIwNK7AE3gL9YwP7Gd/xzlePeobC8OgqaLxc+A4aMQXyDOyKI5XzzGYDS6iKRIxr6c0/j44+Q/IM6wojleP+k7AUmhKloqYd7vL8HyWr/AB9oPZrPQsZbbwwBmzZXj+N6jDvz7/BBdxDTbBTChVTHlmDQ9e1pjOEKGTdYT6ncf5SpG4Yc3bpr53kE7YUQw/9VyE3XAO7sFrsF39tm8BM1LDZ0HjjUkvnyJ5vh4adwlWQn9YCAfARdge98QhKCWtWrtYHniDpsb7v/H7EfTeJ4i2PMLzJ2EFTIE+MBEWw3nQcHWq+wzMBZ3XkFiAWcNYBqQGOZEH7xWkIdAeETbGdl/oDUo/GAx74Du4CPs733qYBg2JVaTxby2TZ9A+cKIjcAdeQtpPzz8CPa/xk0Hj9b4L0UHrwOyThqjzOa/zNySGj7nfgiw17DIYCpNA8XbeDi4i7afxFyDref/3clwLt+AFpOOcz3mdvyHJLiBi/xTonTGgRImxC1zEA6jneY0/DRrvJdaSBWi8ufsgjIJsFRk7cRQ64/mgtAVkz0DsgF7eAQtgCEQ9HzuxCJaBIdYRzwelnYH2stB7eAYuYiS4iFR6JShFPR+UloW8B3wNNC9HhhDrFhdxE2InDKfYiTA+vD8VVoNnp5bnxXm8d5zX+RsSb0JvRG/GvJtYQ57DTsg7ExrvjbsKboC7lo7Pon7n8eYv5d3ZWsRFWJuY+7O1UJTB6U4YToPAsDEE1oCe13h3LR2fJWoh47/U9wKzSa1qNHsmRkBHYj4ovRoNqfc+EGdCY60yt8FmsMapF/MS5bX6ncf5SpWib2QWddZFT+EhvIG8flnUp171N+UrheGgUt+JfQG3gMvbiW/gItwNjf8MaXuW8Lz61Kv+NJuVLmYkvx44Wa2dKEp4vulfJUIirfbY70IhcSZ63Je5kDgT8W3Ue8LLzhvbMsBaxoIs8Nnfbbef/R3XZd9GsxKh5WugNYwXkaER+Ozvtrc0VIpK3Ni+w3r7WkVaCgc++7vt9ivthq2kkkoqqeR/lra2f164S9COhj4JAAAAAElFTkSuQmCC
endtext
this.image5.pictureVal=strconv(m.x,14)

text to m.x noshow
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
endtext
this.image6.pictureVal=strconv(m.x,14)

text to m.x noshow
iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAFlSURBVGhD7dm7SsRgEMXxKIqIWHlrrUQRwQdQsLKyEUHBasHGywtoZaWNYGtroYX4CoKVNjaCvoD4GF7/pxiw2c2XIuabMAd+5WbnTNhNNltEIpFIpIlMYwWrWMMiJjCCKhnDDMbRjz78SzT8Mc5wgQ7moBJVouG1gFkMQCVqjd5kCDu4xwOecI51qERKprCAPVxhC8MYRK3R8KM4xc8fdzjEElKi4bdxi0+cQMfV8WtNrwJHWEavTGIeB9Dwr/iGjueigIbfxA0+8AW9PvsCtvl9aPgXaHht30WBbps32RYo27zJtkDZ5k12BVI3b7IrkLp5k02BDVTZvMmmwC6qbN40XuAZl7iGhtcVNmXzpvEC73jEG3Rvkzq4iQKpaW0B958B999CrbkOuL8St+ZeyJJ6JrIt4P73gKXsTGRfwP1vYku3M+GmgJ2JLJ8LuXgy5/7ZqMXt02mL+/8HIpFIJNKGFMUvhlWNjAU7KuUAAAAASUVORK5CYII=
endtext
this.image7.pictureVal=strconv(m.x,14)

text to m.x noshow
iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAO/SURBVGhD7dlXqFRHGMDxa49djFgjiIoVkRgSFOz6oJFExIaCvSVEkURQDNgL9oIa1GjAmmBLTHzQqMlDJNggqFgeLKAiiqCo2LDl/wcHBlkPd+W6ex/OBz9kz7B355s5Z87MZ0EaaaSRhlEOVdAUndEbQ9EDbfARyqIUimXYeTv5JWbgJxzCCoxGW1SESeQ1SrxWHQ3RHv3xLZZgO/7Gf7iMo/gd62BiY/EFPkEdVEZOw86XRCN0xxTswBk8wwu8yuAp7uNfmIyJeGuZxHsN721HqTEc7QFwtBdiMw7iLG7Bzr9EpgSewySu4ST+gInMRDwr9VGkz4qdd5R8GB3tnbiCu8jU0WzdgAmFWWmHSsj6WQn3dg00QScMwndYjC0Io23nHyNTh7L1ACGJMCs+K2PQC95mtWFSiRHubZdBvzgde3EeTv/bbo2i9gT3cAQ/YBRawyQS4wNUxWBsgyvJBdxGrjovB8skruIEfsYcdEViuI7Xw1Jk+sP54gB6F4xHYpRHNbimex/ug2u5D+ydPHBZPoCNmIUuSAyXrTLwbepy9jV8m/6FSzl2Ed46LiBuSVqiJhLDB9gkvJXq4lP45UnwYfK5cJXwwf4VyzERi7AVu2C7L7VNWADbV8LrgavZKtg+DWsRt2/AXAyDS2oz2Hm3Ie8U/gET8R70R+chntLP8A2+h+2T4d7H5c/wbe314Cv4Tgkvrb6I211ECjXihQ1HwTfvj3Bpc3X6E0NguHlbD2fFdmfADZydNEbC64GzOQ490QK+HON2B6cjGqBI4nM45cfgqhD2NFNh+MKx7TpsdwPnLtSttOFWIV5V/sF82O7sOTBx+y/og+YokkgTQNzBNIFsI00AcQfTBLKNNAHEHUwTyDbSBBB3ME2gsOGW1hrQMliMsp7jD4Qz6364k9wNz68exG33NOWBxF2p7SYTd9ATnjta21fjOOL2U7DeNAEm6DH3ncLOWwM6DTtsx8OPeMh/BDv7EHFFzn/97HXb3yy/2OY1251JZzRu97Ollt/gGcQksgpPZqXhQWQ2PB+71/ckFk5N1jr3wFH0X9u8Ftr8HNr9bviewonOdk9xdjRu97Oz6m8PRCvYJ8s+hQo7b4nlY1jYGg4rZrnWD5ZSrMF61DWJxLDj1kG7waLWGmQaoVxx9jxbe0IbAQc0McJ/UPgF78E37818CQ+9d0JiVMCHcPRvwoJSqNHk0zkchlWKxLB4WgtWFzLVavLFom9cRHhrWM42iQ6wnlNc+EDbeQu8aaSRRhrFLgoK/gf6AS21ISl7sAAAAABJRU5ErkJggg==
endtext
this.image8.pictureVal=strconv(m.x,14)

text to m.x noshow
iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAJQSURBVGhD7Zg9T1RBFIb3D/gHlBoLSg1SAIFoKVLJPyBQaLTjy0JJJLbYS6ihEzo+AomVJGpjaWJMaOxtbPB5kp3kZjPIsjuTuzfMmzzJna9zzr0795zZ2yoqKioqGgTdgttwF+61r6uybb/jXjt/oGRQ92EG5sFgq7Jtv+PO67zB2jUGL2ATPsIqTFewbb/jznP+QOkp7MB3uIATeFPBtv2OO8/5tWgIHsBDmIUJGIE1+AznYKA/waADtu133HnOd53rtaM97Wo/q3TyHDZgC9waPs1t+A1/wEAvw3HnOd91rteO9rSr/azySb0Ft8FXOGpffwOD+wuxwAOOO8/5rnO9drzWrvazyp/7A3yBWIC9oj3taj+r3LMrcAixQHpFe9rVflb54oWMEwukV7SnXe0nVaiw5m0dmD18Ad3DsUB6RXva1b5+9JekYocKa/HxKZkCu8k21yVkJ+3rR39JKrZnlyfwHixC5vFuss11CdlJ+/qxYutX/33Jp7AI+xBznIs9WAD996WwhZbhAH5AzGEqfsEneAVJtlDQOCyBNxFznAqDfwePIKkmwadyDDHHqch2A1PwGsKpMhfJbyC8Ax66qqfKXCR/BzRSRxbSn37135fqqgP6S1IHwhZqbCVu/FmoU407jXaq8f8HGv+PrPH/iXN9lTD4ZzAKWfW/70JnYB43UCv2aYVuvgsZ/B2oRXOwCxYhAzXo9Qq27Xc8ZJyBknn7JTT222io2Fd9nX7cvu67wqZWqNieXWIB2rZ/uH2dvMIWFRUVFd1EtVr/ALOcabNDnXMhAAAAAElFTkSuQmCC
endtext
this.image9.pictureVal=strconv(m.x,14)

text to m.x noshow
iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAALASURBVGhD7ZnL605BGMdf94UShZVCFMmOsmDnFiWW2CslO2yxcGeh38r/4LaXy1ZZkS07YWOBNZ/P4qnTNO85XnPOyat56tOvmXnm+c7Mb67nnVSrVq1atSFtFWyA3XCshSNwALbAYlgETTNt/lY4CPrn4gTqqat+kRlkD5yFBy3ch5twCJaCjW2aafMPwy3QPxcnUE9d9YtsF5wBg75p4Tk8htOwDJZA00wvB8v10z8XJ1BPXfWL7CgswGv41cIXeAfnwYamHXD0V4Dl+umfixOop676RdbVgZ/wFZ7CRdgHNn7aFLJcP/2tZ/1c3NE6YCPewyVYDyuhzSzXT3/rWT8Xd7QOfIOPcBU2wxpos9WwES7DB7B+Lu5oHfgBzuc7sBMc3TZbC9vhBnyC75CLO1gHYs47cjY+eAW34QSsg3QqmTb/OLjdvgAbH/WN11wTg3Ug5rzT5jMobr5/TbvH7wAb2zTT5lueq2e85prorQMePPfgGThVnoAL8ArYmJdgIwLT5jvSNjow3eZvPOMaXx317oL6RbYfrsNDeAsXwHm+CdpG1HzLgy4/4xnX+Oqodw3ULzLvNt5dTsI52AvOZ3eTPxnZYFp5/KeMZ1zjq6OeuuoXWRxAQXpAKd42wkGar7/1rN+0Lr2ZLW6RQXrL7NpdUrp2qy69wcz9fRtM299t/CznxejWdUDVDvytxZz0hpm7Zfa9BlKt4jVgEHcDHym5e76N6HMXMr466vWyC8U5cAp8jHifd9SGOgeMr456vZwDcRI/Al9SPkaGPImNr4566hafxOldyJfUkHch48ddSN3iu9Dc30bTDsz9eyBF8Vn2964TOxitA47cXL+JY024AB39dOqkZrl++jfnfMpoHYg1MbffhQLXwT/5ZW7uv432/XXacv1G+zrd9+8Dlus32u8D1apVq1btf7bJ5Dd1ZQvGtMpUvwAAAABJRU5ErkJggg==
endtext
this.image10.pictureVal=strconv(m.x,14)

text to m.x noshow
iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAATcSURBVGhD7dhp6KZTGMfxf/axjJqaGSFpmoxtlqzZGWOJIoxlLBMiGqKQLGXfsjQJL7wgZpRlbJEkFGMp5YVCyP5OyMibSTL8PuXUScfk/P/PoNxXfes557qu33U993Puc5/7GRtssMEGG+zfsA3CJmFqmBF2DXuFfcOBYX44vMLYPL848fLk06H3j5qiW4adw4JwSrggXBquDjeGOyqMzfOLEy9PPh1669RcKcVczbPCZeHWcF9YFp4ML4SXwqvh9fBWhbF5fnHi5d0bbgn06B4W1FFvpEb0hOBqrgxfhTXhtwlC49fwZfAlbw/qqDchWy9Yl3OCn/v68HhwNb8OP4ZWQ+PBl1gVXBT66qinrvr60E+XSdo4nB6eDR+HVvF1hXrqqq+P7pt8h3BUuDsQ+z60Cq0Ort4nwdKyxhV+KjxRYc2bezG8Fj4KPwT5LV311FVfH/rpsiPCXeHt0CpQ0PwX4blwc7DLnBlOCydWWA7mLgqWxzPhs+BLtHQL6utDP11mi7M7WI/vrgX+m8I54dBgn58XrN1dKuz75vYOh4Szg631sdDSLdDXh3667OBwbbgz3L8WNDKeba9sy/JbugX19aGfLjsprAivhNaVKVwXdg9bhx4TL09+S7egvj7002UXBjfad6G1NgsPhP3CdqHHxMuT39ItqK8P/XSZb2znsC9/3uDTYOdxQ+4YxrOE5MmnQ69VR319dP8C1pyf98HwcgPb4fPBzauZzUKPiZcnnw69Vh319dF9D2wfJB0bFjfwgDk17BY0s1HoMfHy5NOh16qjvj708/+yPcL5wSnRT7gkLAyzw4bB+f6aYIvjPyPsE+z3blBXznzB2Dy/OPHm5dOhR5e+Ourxq68P/XSZpPfCN8Fu8H54NCwKmwYPoV+CkyS/I8Ql4eSwf7B2693E2Dy/OPHm5dOhR5e+Ourxq68P/XSZK/BB+DYQ+jDYj63VzYNjg+LlSO2Guzw4LlizDwXzBWPz/OLEmy/HaXp06aujHr/6+tBPl/35OeDz08GNtUXweC/NwQPnysDvSPFwqP3G5vnFia/99Ojyq6Oe+XE/B44Litri3gzLww3BG9mkcG5YGd4I/EuDn98blbPQVcF8wdg8vzjx5uXToUeXvjrq8auvD/10mRdv764K3xYuDk6VbjJnc4crhzhXjt/roJvTwW3bcHwwXzA2zy9OvHn5dOjRpa+Oevzq60M/XbZNkHRAIO7nt4adKDWyZzgmOKu7av5xED83eMJq8ugKY/P84sTLk0+HHl366qinrvri9TMhmxZcPQ04hHnB2CpMDusHBTyU+ODBY00XjItPnHh58unQ46OvjnojtSODdetfBMfcK4LziavjSGB7rI/B5wVXtWBc+8XLk0+Hnnn66qg3UrNz/BR+DnaHd8I9wQNp1h+f613FTsJXMK794uXx+UzPPH111Bup/dUXsO1Z265c3aBXRr6Cce0XL49v+AJ/x5xlvHw8EvzLYOtT3EuJm9C26P21/Avh5Z6vYFx84sTL46NDj4++OuqN1GYGNxZh+/RBYaegCf/b2L/9o+Ygxu/mnF5hbJ5fnHh58unQ46evjnojtSmBqJ/dNmdbtIs4v3gAadJLOvhtk3wFY/MlRrw8Pjr0+Omro95ggw022GCDDfYft7Gx3wESp+++LHI0vwAAAABJRU5ErkJggg==
endtext
this.image11.pictureVal=strconv(m.x,14)

text to m.x noshow
iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAANQSURBVGhD7dlZqE1hFMDxa57neShDkSFJvCEZUkiUPFA8IA8yPhheiBcRHkRKUhIRCinkxQsPJIWE5EVmpUwpEv9/+Wr77tn7nnuce8892at+da972mettdf+vr23mjzyyCOPPMoRLdEWozEXY9ARrVEVYfJdsRCHsQh9YRFVER3QGxtwB5sxGBbVENHsj14YgVHw7MeGoag8OmMA9uEXDsID90RDhMk3x0jMxwJ49mOzMQUWkRmVKmAqtuMQzhRwBHswE5lRiQLktXYBj+H3xt7jEVYjMypVwHiswHl8x09URQEhXOX6YCe+wCKqooCw70yGK99lVNUZCPvOGtzGSyQTDxqtAHds9xKTcm3350LRCu0wCWvhSmPyn+D3fsU7PMcTeHE3SgFhI3S9dlOyiEJh8t2wDm6YrxC6LZN/iBu4hJto0ALsvBei6/km7MBeuDH1RycYyc6b/FmY/Gf4faHzLqkeZxWWYCuOYh4yo9QCwiril9o5T/0H7IdLpEUYxXbe43i8LrA5E7AM45AZ9S0g7rydM4mP+AZHwCIWYyhmoZjOezyP60XeAjbA5PshM+pbQNx5kwjdlEV4JryznYFdKKbzHrekKLaAsNrYqY0InbeTycR+wCJM+jg8I3HnXSIvwjvfaTB5j19SFFtAWG1M/gHeIpl4scL6vgWOR7jYS466Cig08ybv9u/n7awdfoaswsLMJztv8m3wT1FXAXXNvMk7LtdwChaR/HtQtpmPI60AV4Gsmbfzr3EO67EcPogcwD28gZ8r+8zHkVbAIGTNvMnfhTdkPWCxLn9uZF68FuHnyj7zcaQVMB3uiCdQaOZd1+28d5XtYUd90vJ51iJ24zp8sirrzMeRVsBKmPx9+O9BmHk3J3dYd9pkWIRnwtHbhjko68zHkVaACbibHsMLmHhy5u28yXuvk4zwzDsEPpQPR1lnPo60AgYi3Lffgl1Pzrxj0yQirQBfbnlfMhEW4cgkZz7ufMUirYCwD4S7ySCe+YpHXMBVJNd1r4OlCf6efAHVWMai0DVXq4CnuAI3nvhlUyXZvO6oNQHhJi28G/WW4DROwg2pqfDMFxzh+O10U2V+5mm+f0X8/wNNlfmZp/nmkUceeeTx30dNzW9zLasyfpANQwAAAABJRU5ErkJggg==
endtext
this.image12.pictureVal=strconv(m.x,14)

this.refresh
    endproc
ENDDEFINE
*
*-- EndDefine: cntV


VFP  collapsible and accordion menus demos.

Important:All Codes above are tested on VFP9SP2 & windows 10 pro 64 bits version 1703 ( creator update).

To be informed of the latest articles, subscribe:
Comment on this post
D
Thank so much for this. We have a huge VFP app that we are probably not going to rewrite, Though Remote App has extended our app life, the UI has been needing a fresh look. I'm looking forward to implementing these ideas. Thanks again.
Reply
M
This is incredible, you are the best.<br /> I will definitely use some of these codes in my programs.<br /> Let me ask you a question. Where can I find a downloads section? I see that everything is in text, do you have those codes already in the forms?
Reply