25
ImageSize property on 32 (specifies the size of the control' icons)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oButton

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oButton := XbpActiveXControl():new( oForm:drawingArea )
	oButton:CLSID  := "Exontrol.Button.1" /*{F3A2203A-6B28-4A74-9DC9-4065D1C0A29D}*/
	oButton:create(,, {10,60},{610,370} )

		oButton:ImageSize := 32
		oButton:Font():Size := 16
		oButton:SetProperty("HTMLPicture","icon",oButton:ExecuteTemplate("loadpicture(`gAAAABAACAAgEAQgULdEGAAmhYQiULgQoggABwDisLEELIELggEigAQEOkcnlEUQEClcslctkkxQEtYE1kkzhb/gU6nc6ngAn1Anj/okpo1HpFJkYwQ9KBA3AFNpCAG53qNHBAPqtWqUoQD/rdclFZsB3s1ikdfstnqxwilktb/s4It0solroFmBELuD/H73swAwMUu7/Gd/tkju74W6zxGDnNEQ57PZzx+Kf74R63zmOwGYRaPymUyz3xWMzeczo/xWT0WjykaimaW6Pf+qzknR+iR53f+wlGbR7732qlAPf54zaI3574++XCIW/MW/H4nN50/kYP6u36tK39Knfi8nlo2F9GFeF3cA/ojA5D/QADotAf0CH78gQffECA54IEB5wP3AYAA/AsDwJBUDQRBqBD/Ao/wAAA/v1CkLQrB77gIohGAOu8PqIZ70ruFCIo4kAAJEihgPMlKWpgnEYpkmibJmmChsioCcx2+q7qSGCUBuuq" +;
		"KKrIgAK030iLKoC3OQxAALcojDsBKR8Mqv8pEQe7Gh/AB8DwfbSSCeB8OSP7vgAfZEEW5icjhNCYR486eH4P6BH4D6BHwA6BHgi8CgBFqWIXGdCJYi5AUA2R4z6oBHoEgI`)"))
		oButton:Images("gBJJgBAIDAAEg4AEEKAD/hz/EMNh8TIRNGwAjEZAEXjAojKAjMLjABhkaABAk0plUrlktl0vmExmUzmk1m03nE5nU7nk9miAoE+oVDolFo1HpFJpU5h8Sf9OqFNqUOqNUqdPq9VrFWrlbr1QpdhAFAkFis1ntFptVrtkrpszrNvmVxqk3uVtm1kmF3sdBvF/wGBmV+j9BYGHwWJulfxdax2NyFdx2JlV6l9Nw7AAGZymdz2Cy2GxErvWcz9ivlwyV21cuxugwktzGIzmvwtl0+53U5y0a0Wazmmyu/3dCyOMyXHx/J5nIr9q3uyqnBxFN3G46ma4vb7mD2Ng4nZze00fDkHC7t7us2rOX5tguetpHRlmz4HVqnXk1PjHO+CMPo9MBMC+j2vC8j7wS8cFNI4kBo05UIvfCT/NsnsApU+0Fqg/T+oy/kPxC0sEQfErKQK96+w28UWRI8UGvO8sTLS9r2PWmsMJTDTask3CsIbIEQRA3shOXEEAO/GclJ9" +;
		"FEKrrA8FRbKMXRIlb0JxCkjS1LMswhCcvuel0cv26cSMa8Ufx+2sQwhEUoSXOCjSbLcnxjKc7sdKUVyq28NtVI71P9P7JxtQEapjQ6fzfM8zPfNE2PhIsLL63E40slk5y7N89LcyU9SvMb3SdUc6VJLj5VLVLfO/PS9KzNFHUa/0XyBD0dxlS9cxhMlTRSoNXypPErWDPyfNS+MwprRNO0FD8wVVZ1AI08URwVRjtJ1WCn21QkkUrXVLVPQS/XIkFgTxT9iONZ9xVTdq+L1eKg3kkF6Upe68XtfV51/MtrVjBlwYFL1ev8y1/P6/lyzzYl02wntj0RVFmS1Qa+M5as93QxEUW9e993rfmQ2+vy65M/mL1lhl/2bj2ByVduMtNhCJT9hdz41nN14Ld12Z9UjfI/oUAaGseiw6+uFLLhcVabJOS5RqOE0BHlZ5VnEr5fOMs3st+aa/bbRzrJGV51Y0b0DbqaWXZD90hIsPbjWu52+6Wyadpe66hhO+P/Xi" +;
		"oW5rD8ZbrUZuVg6n1dsE/cXmewu1m9PVwnd35/nueXho/NaJzmjc61W76esuT77eG8pTquy9TwWH8LEzG8RDfFalx3Gcfvna9rvG/cptGLd9tuI6TZOP5Fiqi99vea+X4VRcBq/JZZtVQ9cwSs5lsXE372+a9z7PbfB3VVqHyvMctLto8uob6eV0m/cD6MN2v+T33t6sBut42vdv2bJ8a997x2maFJfK+qArbGJPEKE+1qTflMsIdW/GCJX17KcT6/czr/X+u1g29B7j/4BQfWkkx4zIHisjhPCmE0K4SwtXM+d4BvHRwNZOoBph9IJvPek9d40FoMJxf691jj2ywQQcHEWET4XJwkTszlVqm2GokewxtBT1DpQjRxDN0rUVDNKdC3lb6tzNOwh6upMSSYfv4YBCl/bsn9PxiFCEo7SI6Obc9HeOrnY8x4jtHtdpN4GRbaorhsbu18Pph5CiHymI0RpSXGJ/z2oUOxYxG858AyiI+bfJtuTcG5yelBJy" +;
		"T8okhqFd4a5yxL0rvulYtKCsZiWxWkc1s1cRoxxwhA31DLE0mR9l9HqX8fJgTDmFMVH0MIsRzVYnwnMi1dyzmhLt2kS2pxIiU62Wj5ptQGlSYFakLonTUJNLKaM5WzlffEkuFkk5wTrhVO2eE7G6lJhxFFYUZ55zmn0WuBCD4pzhirFCKkbomsOoIYmZx5p90LoYWGPdD5g0QmJRKYxbZ6zYoVQ2jVGylSak7KSkFH6RSjpHKFuU+YMyNo5SulkC6I0vonTCitMXPoEpVS2H5FQfEqp2R1opIgAEkJISYARTCukOhmPNI5Ex/wzGHUsicMwA1LHgQ90Y/KpoQHAD+pB/R4NzIaMAB9Xaw1gqaAOsh/A/ptIkWUfhGK1kZH8RgH5GqvgArqRmt4AAPrTroRofBGADkqr6Rmu4D7CEaHARiwpJrEEZsXXwlVjyMWRsaRqwdkLGNBABZmytmyMnaINZqyVpLR2ftKAAAdd6h2osbaskdiq4EZtgSmyNcbVW" +;
		"RJNXe3AA7REar3b0stlAAXBtoRmvJGLjEYAHUWsFcwCD/rnaop9aEICMAPdK5hT6xpeuzdOtAgKuJeGfdq6ggEbkTvAP+p9UCHXrvKkcgIA==")
		oButton:Caption := "As Picture: <img>icon</img>(non-sized picture)<br>As Picture: <img>icon:16</img> (sized picture)<br>As Icon: <img>1</img> (icon)"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
24
ImageSize property on 16 (default) (specifies the size of the control' icons)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oButton

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oButton := XbpActiveXControl():new( oForm:drawingArea )
	oButton:CLSID  := "Exontrol.Button.1" /*{F3A2203A-6B28-4A74-9DC9-4065D1C0A29D}*/
	oButton:create(,, {10,60},{610,370} )

		oButton:ImageSize := 16
		oButton:SetProperty("HTMLPicture","icon",oButton:ExecuteTemplate("loadpicture(`gAAAABAACAAgEAQgULdEGAAmhYQiULgQoggABwDisLEELIELggEigAQEOkcnlEUQEClcslctkkxQEtYE1kkzhb/gU6nc6ngAn1Anj/okpo1HpFJkYwQ9KBA3AFNpCAG53qNHBAPqtWqUoQD/rdclFZsB3s1ikdfstnqxwilktb/s4It0solroFmBELuD/H73swAwMUu7/Gd/tkju74W6zxGDnNEQ57PZzx+Kf74R63zmOwGYRaPymUyz3xWMzeczo/xWT0WjykaimaW6Pf+qzknR+iR53f+wlGbR7732qlAPf54zaI3574++XCIW/MW/H4nN50/kYP6u36tK39Knfi8nlo2F9GFeF3cA/ojA5D/QADotAf0CH78gQffECA54IEB5wP3AYAA/AsDwJBUDQRBqBD/Ao/wAAA/v1CkLQrB77gIohGAOu8PqIZ70ruFCIo4kAAJEihgPMlKWpgnEYpkmibJmmChsioCcx2+q7qSGCUBuuq" +;
		"KKrIgAK030iLKoC3OQxAALcojDsBKR8Mqv8pEQe7Gh/AB8DwfbSSCeB8OSP7vgAfZEEW5icjhNCYR486eH4P6BH4D6BHwA6BHgi8CgBFqWIXGdCJYi5AUA2R4z6oBHoEgI`)"))
		oButton:Images("gBJJgBAIDAAEg4ACEKAD/hz/EMNh8TIRNGwAjEZAEXjAojJAjMLjABAAgjUYkUnlUrlktl0vmExmUzmk1m03nE5nU7nkrQCAntBoVDolFo1HoM/ADAplLptImdMYFOqdSqlXq1QrVbrlGpVWsFNrNdnNjsk7pQAtNroFnt0sh8Yr9iulTuNxs1Eu8OiT/vsnsNVutXlk/oGGtVKxGLxWNtsZtN8iUYuNvy0Zvd+xNYwdwvl4p870GCqc8vOeuVttmp1knyOayWVy+WzN/ze1wOElenm+12WUz/Bv2/3UyyWrzeutux2GSyGP2dQ33C1ur3GD3M4zUNzHdlWjq/E3nGzVpjWv4HA7fRy/Tv2IrN8rPW6nZ3ve7mUlfu20Z8acvQyb+vY9jasYoDwMm+LytVBDqKG3z8O3Cb8P+mkAuY9cCQ2uL4KaxDKvkp8RNLEjqugnrwQo/UWPzFyeQw5sNLZFENrI4kOqU66pw8uzmOKvTqNqjULJvGL1JO48GtT" +;
		"GsbLdEL3scxLlyiw8dQeoUVxdLTtyKmUjwGlslRPJsnK1HbAKbKCrsQo8uQk/CeP44iaR/ATnTNPLvyxPU+z9P9AUDQVBowiofJXQ6Oo+kKMpIkjztE4TKn4P6JowfgPnwD5/nAjB8AOeAPo0eAA1IAFH07UhAIMpYAVIYFHqBUhwVjV1S1EtQAHxW65V0AZwAeuQAnwB5gAPYViEDVhwAHTQBkCjB4gOhwDmCyhH0sACAg==")
		oButton:Caption := "As Picture: <img>icon</img>(non-sized picture)<br>As Picture: <img>icon:16</img> (sized picture)<br>As Icon: <img>1</img> (icon)"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
23
Show the control's tooltip

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oButton

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oButton := XbpActiveXControl():new( oForm:drawingArea )
	oButton:CLSID  := "Exontrol.Button.1" /*{F3A2203A-6B28-4A74-9DC9-4065D1C0A29D}*/
	oButton:create(,, {10,60},{610,370} )

		oButton:Caption := "move the cursor, and wait for a short time, so the tooltip appear"
		oButton:ToolTipText := "This is a bit of <b>text</b> that should appear once you hover the cursor"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
22
The color I set for the control's background is not what I expect. Is there anything I can do

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oButton

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oButton := XbpActiveXControl():new( oForm:drawingArea )
	oButton:CLSID  := "Exontrol.Button.1" /*{F3A2203A-6B28-4A74-9DC9-4065D1C0A29D}*/
	oButton:create(,, {10,60},{610,370} )

		oButton:SetProperty("BackColor",AutomationTranslateColor( GraMakeRGBColor  ( { 255,0,0 } )  , .F. ))
		oButton:RenderType := -1
		oButton:Caption := "Command"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
21
How can I display the pointer (hand cursor) when the mouse cursor hovers the control
#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oButton

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oButton := XbpActiveXControl():new( oForm:drawingArea )
	oButton:CLSID  := "Exontrol.Button.1" /*{F3A2203A-6B28-4A74-9DC9-4065D1C0A29D}*/
	oButton:create(,, {10,60},{610,370} )

		oButton:MousePointer := 16

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
20
How can I align the picture inside the caption (3)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oButton

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oButton := XbpActiveXControl():new( oForm:drawingArea )
	oButton:CLSID  := "Exontrol.Button.1" /*{F3A2203A-6B28-4A74-9DC9-4065D1C0A29D}*/
	oButton:create(,, {10,60},{610,370} )

		oButton:SetProperty("HTMLPicture","pic1","c:\exontrol\images\zipdisk.gif")
		oButton:Alignment := 0/*exLeft*/
		oButton:Caption := "<img>pic1</img><br>This is a just the rest of the caption"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
19
How can I align the picture inside the caption (2)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oButton

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oButton := XbpActiveXControl():new( oForm:drawingArea )
	oButton:CLSID  := "Exontrol.Button.1" /*{F3A2203A-6B28-4A74-9DC9-4065D1C0A29D}*/
	oButton:create(,, {10,60},{610,370} )

		oButton:SetProperty("HTMLPicture","pic1","c:\exontrol\images\zipdisk.gif")
		oButton:Alignment := 0/*exLeft*/
		oButton:Caption := "This is a just the rest of the caption<r><img>pic1</img>"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
18
How can I align the picture inside the caption (1)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oButton

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oButton := XbpActiveXControl():new( oForm:drawingArea )
	oButton:CLSID  := "Exontrol.Button.1" /*{F3A2203A-6B28-4A74-9DC9-4065D1C0A29D}*/
	oButton:create(,, {10,60},{610,370} )

		oButton:SetProperty("HTMLPicture","pic1","c:\exontrol\images\zipdisk.gif")
		oButton:Alignment := 0/*exLeft*/
		oButton:Caption := "<img>pic1</img>This is a just the rest of the caption"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
17
How can I display the caption in mirror

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oButton

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oButton := XbpActiveXControl():new( oForm:drawingArea )
	oButton:CLSID  := "Exontrol.Button.1" /*{F3A2203A-6B28-4A74-9DC9-4065D1C0A29D}*/
	oButton:create(,, {10,60},{610,370} )

		oButton:Alignment := 1/*exCenter*/
		oButton:VAlignment := 1/*exMiddle*/
		oButton:Caption := "Command"
		oButton:SetProperty("BackColor",AutomationTranslateColor( GraMakeRGBColor  ( { 255,255,255 } )  , .F. ))
		oButton:Rotate := 16/*exHTMLMirror*/

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
16
How can I display vertically the caption

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oButton

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oButton := XbpActiveXControl():new( oForm:drawingArea )
	oButton:CLSID  := "Exontrol.Button.1" /*{F3A2203A-6B28-4A74-9DC9-4065D1C0A29D}*/
	oButton:create(,, {10,60},{610,370} )

		oButton:Alignment := 1/*exCenter*/
		oButton:VAlignment := 1/*exMiddle*/
		oButton:Caption := "Command"
		oButton:SetProperty("BackColor",AutomationTranslateColor( GraMakeRGBColor  ( { 255,255,255 } )  , .F. ))
		oButton:Rotate := 1/*exHTMLVertical*/

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
15
How can I display a picture on the button's face to be scaled automatically once the button is resized

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oButton

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oButton := XbpActiveXControl():new( oForm:drawingArea )
	oButton:CLSID  := "Exontrol.Button.1" /*{F3A2203A-6B28-4A74-9DC9-4065D1C0A29D}*/
	oButton:create(,, {10,60},{610,370} )

		oButton:Picture := oButton:ExecuteTemplate("loadpicture(`c:\exontrol\images\zipdisk.gif`)")
		oButton:PictureDisplay := 49/*Stretch*/

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
14
How can I display an & ( ampersand ) in the button's caption

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oButton

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oButton := XbpActiveXControl():new( oForm:drawingArea )
	oButton:CLSID  := "Exontrol.Button.1" /*{F3A2203A-6B28-4A74-9DC9-4065D1C0A29D}*/
	oButton:create(,, {10,60},{610,370} )

		oButton:Caption := "Briana && Iasmina && Rares"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
13
How can I define my own visual appearance / style for my button

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oButton

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oButton := XbpActiveXControl():new( oForm:drawingArea )
	oButton:CLSID  := "Exontrol.Button.1" /*{F3A2203A-6B28-4A74-9DC9-4065D1C0A29D}*/
	oButton:create(,, {10,60},{610,370} )

		oButton:Style := -1/*exCustom1*/
		oButton:AllowHotState := .T.
		oButton:SetProperty("BackColor",AutomationTranslateColor( GraMakeRGBColor  ( { 255,255,255 } )  , .F. ))
		oButton:Skin(0/*exNormal*/,"c:\exontrol\images\normal.ebn")
		oButton:Skin(1/*exPushed*/,"c:\exontrol\images\pushed.ebn")
		oButton:Skin(2/*exHot*/,"c:\exontrol\images\hot.ebn")
		oButton:Skin(3/*exDisabled*/,"c:\exontrol\images\border.ebn")

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
12
How can I display a percent bar over the control

PROCEDURE OnClick(oButton)
	oButton:SetProperty("BackgroundExtValue",5/*exIndexExt5*/,2/*exClientExt*/,"25%")
	oButton:SetProperty("BackgroundExtValue",5/*exIndexExt5*/,4/*exTextExt*/,oButton:BackgroundExtValue(5/*exIndexExt5*/,2/*exClientExt*/))
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oButton

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oButton := XbpActiveXControl():new( oForm:drawingArea )
	oButton:CLSID  := "Exontrol.Button.1" /*{F3A2203A-6B28-4A74-9DC9-4065D1C0A29D}*/
	oButton:create(,, {10,60},{610,370} )

		oButton:Click := {|| OnClick(oButton)} /*Occurs when the user presses and then releases the left mouse button over the control.*/

		oButton:Caption := "Command"
		oButton:VAlignment := 0/*exTop*/
		oButton:BackgroundExt := "bottom[4],left[4],right[4],bottom[16,pattern=0x000,frame=RGB(0,0,0)](left[50%,back=RGB(0,255,0),text=`<font ;6><sha ;;0>50%`,align=0x11,pattern=0x006,patterncolor=RGB(0,128,0),frame=RGB(0,128,0)])"
		oButton:SetProperty("BackgroundExtValue",5/*exIndexExt5*/,2/*exClientExt*/,"75%")
		oButton:SetProperty("BackgroundExtValue",5/*exIndexExt5*/,4/*exTextExt*/,oButton:BackgroundExtValue(5/*exIndexExt5*/,2/*exClientExt*/))

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
11
Is it possible to display an additional caption on the control's background

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oButton

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oButton := XbpActiveXControl():new( oForm:drawingArea )
	oButton:CLSID  := "Exontrol.Button.1" /*{F3A2203A-6B28-4A74-9DC9-4065D1C0A29D}*/
	oButton:create(,, {10,60},{610,370} )

		oButton:BackgroundExt := "root[text=`<font ;6>additional`,align=0x21]"
		oButton:Caption := "Command"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
10
How can I display a pattern over the button

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oButton

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oButton := XbpActiveXControl():new( oForm:drawingArea )
	oButton:CLSID  := "Exontrol.Button.1" /*{F3A2203A-6B28-4A74-9DC9-4065D1C0A29D}*/
	oButton:create(,, {10,60},{610,370} )

		oButton:BackgroundExt := "root[pattern=0x006,patterncolor=RGB(128,128,128)]"
		oButton:Caption := "Command"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
9
Does your control support subscript or superscript, in HTML captions

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oButton

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oButton := XbpActiveXControl():new( oForm:drawingArea )
	oButton:CLSID  := "Exontrol.Button.1" /*{F3A2203A-6B28-4A74-9DC9-4065D1C0A29D}*/
	oButton:create(,, {10,60},{610,370} )

		oButton:Caption := "Text with <font ;7><off 6><sha ;;0>subscript</off></font></sha> and <font ;7><off -6><sha ;;0>superscript</off></font></sha> support"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
8
How can I change the caption

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oButton

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oButton := XbpActiveXControl():new( oForm:drawingArea )
	oButton:CLSID  := "Exontrol.Button.1" /*{F3A2203A-6B28-4A74-9DC9-4065D1C0A29D}*/
	oButton:create(,, {10,60},{610,370} )

		oButton:Caption := "Mühle"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
7
Is it possible to specify the control's background color when disabled

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oButton

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oButton := XbpActiveXControl():new( oForm:drawingArea )
	oButton:CLSID  := "Exontrol.Button.1" /*{F3A2203A-6B28-4A74-9DC9-4065D1C0A29D}*/
	oButton:create(,, {10,60},{610,370} )

		oButton:Caption := "<fgcolor=808080>Disabled"
		oButton:Enabled := .F.
		oButton:SetProperty("ForeColorState",3/*exDisabled*/,AutomationTranslateColor( GraMakeRGBColor  ( { 0,255,0 } )  , .F. ))

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
6
How can I disable the control

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oButton

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oButton := XbpActiveXControl():new( oForm:drawingArea )
	oButton:CLSID  := "Exontrol.Button.1" /*{F3A2203A-6B28-4A74-9DC9-4065D1C0A29D}*/
	oButton:create(,, {10,60},{610,370} )

		oButton:Caption := "just the button's caption"
		oButton:Enabled := .F.

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
5
How do I put/resize/stretch a picture on the control's background

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oButton

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oButton := XbpActiveXControl():new( oForm:drawingArea )
	oButton:CLSID  := "Exontrol.Button.1" /*{F3A2203A-6B28-4A74-9DC9-4065D1C0A29D}*/
	oButton:create(,, {10,60},{610,370} )

		oButton:Picture := oButton:ExecuteTemplate("loadpicture(`c:\exontrol\images\zipdisk.gif`)")

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
4
How can I change the control's font

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oButton
	LOCAL f

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oButton := XbpActiveXControl():new( oForm:drawingArea )
	oButton:CLSID  := "Exontrol.Button.1" /*{F3A2203A-6B28-4A74-9DC9-4065D1C0A29D}*/
	oButton:create(,, {10,60},{610,370} )

		f := CreateObject("StdFont")
			f:Name := "Verdana"
			f:Size := 12
		oButton:Font := f
		oButton:Caption := "just the button's caption"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
3
How do I change the control's foreground color

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oButton

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oButton := XbpActiveXControl():new( oForm:drawingArea )
	oButton:CLSID  := "Exontrol.Button.1" /*{F3A2203A-6B28-4A74-9DC9-4065D1C0A29D}*/
	oButton:create(,, {10,60},{610,370} )

		oButton:Caption := "<font ;16><fgcolor=FF0000>just</fgcolor></font> the button's caption"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2
How do I change the control's foreground color

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oButton

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oButton := XbpActiveXControl():new( oForm:drawingArea )
	oButton:CLSID  := "Exontrol.Button.1" /*{F3A2203A-6B28-4A74-9DC9-4065D1C0A29D}*/
	oButton:create(,, {10,60},{610,370} )

		oButton:SetProperty("ForeColor",AutomationTranslateColor( GraMakeRGBColor  ( { 255,0,0 } )  , .F. ))
		oButton:Caption := "just the button's caption"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1
How do I change the control's background color

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oButton

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oButton := XbpActiveXControl():new( oForm:drawingArea )
	oButton:CLSID  := "Exontrol.Button.1" /*{F3A2203A-6B28-4A74-9DC9-4065D1C0A29D}*/
	oButton:create(,, {10,60},{610,370} )

		oButton:SetProperty("BackColor",AutomationTranslateColor( GraMakeRGBColor  ( { 255,0,0 } )  , .F. ))
		oButton:BorderWidth := 8
		oButton:BorderHeight := 8

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN