77
Gets the measurement of the width/height/size of the control's Text, including content not visible on the screen due to overflow
PROCEDURE OnChange(oHTML)
	DevOut( "Required Width:" )
	DevOut( Transform(oHTML:TextScrollWidth(),"") )
	DevOut( "Required Height:" )
	DevOut( Transform(oHTML:TextScrollHeight(),"") )
RETURN

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

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

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

	oHTML := XbpActiveXControl():new( oForm:drawingArea )
	oHTML:CLSID  := "Exontrol.HTML.1" /*{0036F83C-D892-4B7B-AA0B-BEDD8D16A738}*/
	oHTML:create(,, {10,60},{610,370} )

		oHTML:Change := {|| OnChange(oHTML)} /*Indicates that the control's text have changed.*/

		oHTML:Text := "This is a <b>bit</b> of text"

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

PROCEDURE OnAnchorClick(oHTML,AnchorID,Options)
	DevOut( Transform(AnchorID,"") )
RETURN

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

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

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

	oHTML := XbpActiveXControl():new( oForm:drawingArea )
	oHTML:CLSID  := "Exontrol.HTML.1" /*{0036F83C-D892-4B7B-AA0B-BEDD8D16A738}*/
	oHTML:create(,, {10,60},{610,370} )

		oHTML:AnchorClick := {|AnchorID,Options| OnAnchorClick(oHTML,AnchorID,Options)} /*Occurs when an anchor element is clicked.*/

		oHTML:Text := "<solidline> <c><b>Bank Account</b></solidline><br>+ owner: String <r><a 1;e64=gA8ABzABvABsABpABkg8JABuABlAA+AAgAECMcTi4AMwAM4AjMGhEGOUVAA4AAwk8plcqihwAElg0wiUlOkOiUEgQvgcFhsKhkIhUQiUUnccj0gn0jmMagUlowAMNOpEfkMNkkmlEqrctjQmAAjAA5AA2sssHcbnkdq1Ln1QtVSjQAAEBA==>▲</a><br><solidline>+ balance: Currency = 0</solidline><br>+ deposit(amount: Currency)<r><a 2;e64=gA8ABjAA+AECMwAM8DABvABshoAOQAEAAHAAGEWjEajMGNoAMoAOgANERMgAOcHAAvAEJhcEh0Qh0Tg0CmkqMMFlUuhkxiMTisXjNCjk6EwAEYAHIAG1MjY7lUsnkwh8/nUClk5gwAAEBA==>	" +;
		"650;</a><br>+ withdraw(amount: Currency)"

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

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

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

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

	oHTML := XbpActiveXControl():new( oForm:drawingArea )
	oHTML:CLSID  := "Exontrol.HTML.1" /*{0036F83C-D892-4B7B-AA0B-BEDD8D16A738}*/
	oHTML:create(,, {10,60},{610,370} )

		oHTML:Text := "<solidline><b>Header</b></solidline><br>Line1<r><a ;exp=show lines>+</a><br>Line2<br>Line3"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
74
Force hover-all feature
#include "AppEvent.ch"
#include "ActiveX.ch"

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

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

	oHTML := XbpActiveXControl():new( oForm:drawingArea )
	oHTML:CLSID  := "Exontrol.HTML.1" /*{0036F83C-D892-4B7B-AA0B-BEDD8D16A738}*/
	oHTML:create(,, {10,60},{610,370} )

		oHTML:SetProperty("Background",500/*exScrollHoverAll*/,-1)

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
73
Disable hover-all feature (Windows 11 or greater)
#include "AppEvent.ch"
#include "ActiveX.ch"

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

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

	oHTML := XbpActiveXControl():new( oForm:drawingArea )
	oHTML:CLSID  := "Exontrol.HTML.1" /*{0036F83C-D892-4B7B-AA0B-BEDD8D16A738}*/
	oHTML:create(,, {10,60},{610,370} )

		oHTML:SetProperty("Background",500/*exScrollHoverAll*/,AutomationTranslateColor( GraMakeRGBColor  ( { 1,0,0 } )  , .F. ))

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
72
Display a custom tooltip
PROCEDURE OnMouseMove(oHTML,Button,Shift,X,Y)
	oHTML:ShowToolTip("new content","",,"+8","+8")
RETURN

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

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

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

	oHTML := XbpActiveXControl():new( oForm:drawingArea )
	oHTML:CLSID  := "Exontrol.HTML.1" /*{0036F83C-D892-4B7B-AA0B-BEDD8D16A738}*/
	oHTML:create(,, {10,60},{610,370} )

		oHTML:MouseMove := {|Button,Shift,X,Y| OnMouseMove(oHTML,Button,Shift,X,Y)} /*Occurs when the user moves the mouse.*/


	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
71
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 oHTML

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

	oHTML := XbpActiveXControl():new( oForm:drawingArea )
	oHTML:CLSID  := "Exontrol.HTML.1" /*{0036F83C-D892-4B7B-AA0B-BEDD8D16A738}*/
	oHTML:create(,, {10,60},{610,370} )

		oHTML:ImageSize := 32
		oHTML:Font():Size := 16
		oHTML:SetProperty("HTMLPicture","icon",oHTML: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`)"))
		oHTML: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==")
		oHTML:Text := "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
70
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 oHTML

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

	oHTML := XbpActiveXControl():new( oForm:drawingArea )
	oHTML:CLSID  := "Exontrol.HTML.1" /*{0036F83C-D892-4B7B-AA0B-BEDD8D16A738}*/
	oHTML:create(,, {10,60},{610,370} )

		oHTML:ImageSize := 16
		oHTML:SetProperty("HTMLPicture","icon",oHTML: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`)"))
		oHTML: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==")
		oHTML:Text := "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
69
How do I set the initial control's text so that it is shown in decoded HTML
#include "AppEvent.ch"
#include "ActiveX.ch"

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

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

	oHTML := XbpActiveXControl():new( oForm:drawingArea )
	oHTML:CLSID  := "Exontrol.HTML.1" /*{0036F83C-D892-4B7B-AA0B-BEDD8D16A738}*/
	oHTML:create(,, {10,60},{610,370} )

		DevOut( "Text" )
		DevOut( oHTML:Text() )
		DevOut( "CursorText" )
		DevOut( oHTML:CursorText(0,-1,.T.) )
		DevOut( "HTML" )
		DevOut( oHTML:HTML() )
		oHTML:Text := "This is a <b>bit</b> of text"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
68
I can't find any open and store button. And no method to add it. What I can I do (icon only,last)

PROCEDURE OnToolBarEvent(oHTML,Ev,ID,Item,Reserved)
	DevOut( "You clicked: " )
	DevOut( Transform(ID,"") )
RETURN

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

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

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

	oHTML := XbpActiveXControl():new( oForm:drawingArea )
	oHTML:CLSID  := "Exontrol.HTML.1" /*{0036F83C-D892-4B7B-AA0B-BEDD8D16A738}*/
	oHTML:create(,, {10,60},{610,370} )

		oHTML:ToolBarEvent := {|Ev,ID,Item,Reserved| OnToolBarEvent(oHTML,Ev,ID,Item,Reserved)} /*Occurs once a change occurs in the control's toolbar.*/

		oHTML:ToolBarAnchor := 2/*exToolBarAnchorTop*/
		oHTML:ToolBarImages("gBJJgBAICAADAAEAAUhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaKEahkZAIAEEbjIZlErlktl0vmExmUzjQXmwjJk5OJcniJLs/Rc/LtBoFColDo1JotLpFMo6LnJMOQWqg5mlXrFZrVbrldr1fsFhjJCshoQ1nZSatTlTNttlutqZt9yuNzu11vFwvV0tyWvzgKuBRYIwgVsWHxGJxViA+NGodyBwFeTSRDyyTImZzGazJEzeezuf0WhyxDSeTFaSyAdN+NA41lpK2SFvyWcit3D+3Ct3W53e93m/4W+4nB4vA5G/PHLWIf5w6xfR6XT6kZD3XOBn7TXRPdfrV8D+bPj8Xk8bZ8vo8/p9nr8DVf3dRL9M31a/XDxwlpI/iUTj/nOWcBH8WECwJA0ClhA8FQTBcHQbCEEQlBkJn8RULmQG0NDI6sOw9D6stQSZCRIfran8dEUn8dUWRRFUUnRF0YxhGR/HTG8VxbGkTxIQh/BZIBJpaJsiFIU8jnUXclH8" +;
		"WUmyZJ0mllJ8pSjKcrSrLEoS1Kktn8Tcvm8KUxEbEEyzNM6MyAFkRxLE8aG9OB/GpOZ/GhO06zvOxoTxPb3n9OBvRrE5C0JH8gpaKlElmWNGHcYFHn8WtJH8WlK0pS1KlpS9NUzTdPU7UFMVFTlLFZUx5vkWs0VXVjpTUSazkMf03RVQB/GnXB/GfXddV5XZn17YE5mpP84x2vx/VjQ01paMNnGFTJ4mTaZ/GDax/F1bJ/Fvblt27bhb29cNwXFctyXPb903DSRan2St3mWDV5IlVt63srdX2USl9n8cN/H8cmAn8cGCWLQNbYRON/HDgGBYWf19kpZKz2XISWDfjBpUyepo46fxmZAfxe5Gf1HmAfxh5SfxiZYfxhZefxf5lmOZyUXZ/FznOcZ1nJc53n2e5+fxPaIbIc6OJ976VpaY3zihH6hlGVVwaZ/Gvq+raxq5r6zrmt67W9c5SYZ/agR+J1lV6Wj9thwwEWZ8GtuR/Gxup/GNvB/WmZJ/Gbv1" +;
		"gn8ZfBZXlpj8Nl2YZGXp/F5xvGcdxpecfyXIn8VHLnIL/NEFpnO88jWnVlZRHdIfxP9OfxSdV1PV9UUnWdf13YdN1HSEdtHcbUlhD94ctGFie25Gsfhy+K9lf8B5GQGZqWyb2fxkeifmxn5k2aF/6/s5l7G3neRHv1Vz/xaV0PcWV75EPi7v1ET9n3Pl930fNilld0lYxfwThO/2a09HoiwdQ/hzwDYMP4bcB26N2eEP5P0C3ojIHi3gYw9IHj+GLBeC0GILjFgzBxkw+EojifHCNer5VlQnfpCl0UKn5wrhdC1ipLQEwzBcDOGwQ0xBSCyJGHgnUYD7YIOAe7YxuipiMMCHgkRRh3iYIYoQawSxRCmDSKgZg6xXEqJiLQwEvibGGf8TgxIwDEElGUXLGA3iOhJGtND5VCCFH8H+OQ/o3j+EXHcfzto8ulj1HqO4i46KFjkH+QMcH6qHJmAEAsiwFAqkcEF3ghxIh8koIIH8lw2Aok0FY/AQF5AaBmkQ" +;
		"JoaDVhBAxKcFcmgUA1BJK0K0rQSBYiiCULMswsgilwFICsuzYRsl8h98qPR/B9mIP4Scx2htEH8KKZjszfivmg5Zy4/i4zDmLMKQ6zCtADm4AoCk3wMEEIKTGRYBQLBqnQK8Mc6xNBJncGA1YKZxALI0SWX893yJBjeP1ZT8HFOIGEthbTLBiQCgIO2hA/h2ULH8NKhz7llCDokPk1AjytziAKYQBADiNAHI0AgjQCZuADAaBukwJw9UpFiKClg64tCYHKGimQoQOU1BfR2fFOYSz6UIP1+S7xKj+beg52SphWD+eKOUf1CB20KoZAuoA/n5P4DELqT4VStgCq0AsENXQXlRD1DkQhPAuCUDnWcWBahNDSmgK8eCUR9G7HzGUSQ1AnV3DrVoAQE6dV9TRLgEQcA42DGu+gftL1yi4sUchTo5rHVLoTUxsFQB8zrDGLo1YXa9AbK8ASjQGgi2hDBRIQYsBR2nG0gkdrPR9M2H6tkXSkVJD3dsMCRwKgdz" +;
		"iATX63iIIZgJBrYAOALbiCSBlccSYPrlCTkuD8SYPLoXJuXKISddwnXVruJM/gSBJgxu8I+q9mzFAGAheUE87gkhuiuHUTcbxXvoFiIG+Qp5mCiGxF0ZwV79B/pHbsklvcAYBfFOIAd5QIAcBBgkGgI8GA4JsBcEtlhFBZwoIIqgFgZYCw1hvDWDwWAOxACLDmIzEEWB8SzE5HiQEinqACexGh4FeIhiTGmGyAg==")
		oHTML:ToolBarItems := Transform(oHTML:FormatABC("A +`,[sep],[id=20][img=15][ttp=save the text],[id=30][img=16][ttp=load the text]`",oHTML:ToolBarItems()),"")
		oHTML:Text := "This is just the initial text"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
67
I can't find any open and store button. And no method to add it. What I can I do (icon only,first)

PROCEDURE OnToolBarEvent(oHTML,Ev,ID,Item,Reserved)
	DevOut( "You clicked: " )
	DevOut( Transform(ID,"") )
RETURN

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

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

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

	oHTML := XbpActiveXControl():new( oForm:drawingArea )
	oHTML:CLSID  := "Exontrol.HTML.1" /*{0036F83C-D892-4B7B-AA0B-BEDD8D16A738}*/
	oHTML:create(,, {10,60},{610,370} )

		oHTML:ToolBarEvent := {|Ev,ID,Item,Reserved| OnToolBarEvent(oHTML,Ev,ID,Item,Reserved)} /*Occurs once a change occurs in the control's toolbar.*/

		oHTML:ToolBarAnchor := 2/*exToolBarAnchorTop*/
		oHTML:ToolBarImages("gBJJgBAICAADAAEAAUhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaKEahkZAIAEEbjIZlErlktl0vmExmUzjQXmwjJk5OJcniJLs/Rc/LtBoFColDo1JotLpFMo6LnJMOQWqg5mlXrFZrVbrldr1fsFhjJCshoQ1nZSatTlTNttlutqZt9yuNzu11vFwvV0tyWvzgKuBRYIwgVsWHxGJxViA+NGodyBwFeTSRDyyTImZzGazJEzeezuf0WhyxDSeTFaSyAdN+NA41lpK2SFvyWcit3D+3Ct3W53e93m/4W+4nB4vA5G/PHLWIf5w6xfR6XT6kZD3XOBn7TXRPdfrV8D+bPj8Xk8bZ8vo8/p9nr8DVf3dRL9M31a/XDxwlpI/iUTj/nOWcBH8WECwJA0ClhA8FQTBcHQbCEEQlBkJn8RULmQG0NDI6sOw9D6stQSZCRIfran8dEUn8dUWRRFUUnRF0YxhGR/HTG8VxbGkTxIQh/BZIBJpaJsiFIU8jnUXclH8" +;
		"WUmyZJ0mllJ8pSjKcrSrLEoS1Kktn8Tcvm8KUxEbEEyzNM6MyAFkRxLE8aG9OB/GpOZ/GhO06zvOxoTxPb3n9OBvRrE5C0JH8gpaKlElmWNGHcYFHn8WtJH8WlK0pS1KlpS9NUzTdPU7UFMVFTlLFZUx5vkWs0VXVjpTUSazkMf03RVQB/GnXB/GfXddV5XZn17YE5mpP84x2vx/VjQ01paMNnGFTJ4mTaZ/GDax/F1bJ/Fvblt27bhb29cNwXFctyXPb903DSRan2St3mWDV5IlVt63srdX2USl9n8cN/H8cmAn8cGCWLQNbYRON/HDgGBYWf19kpZKz2XISWDfjBpUyepo46fxmZAfxe5Gf1HmAfxh5SfxiZYfxhZefxf5lmOZyUXZ/FznOcZ1nJc53n2e5+fxPaIbIc6OJ976VpaY3zihH6hlGVVwaZ/Gvq+raxq5r6zrmt67W9c5SYZ/agR+J1lV6Wj9thwwEWZ8GtuR/Gxup/GNvB/WmZJ/Gbv1" +;
		"gn8ZfBZXlpj8Nl2YZGXp/F5xvGcdxpecfyXIn8VHLnIL/NEFpnO88jWnVlZRHdIfxP9OfxSdV1PV9UUnWdf13YdN1HSEdtHcbUlhD94ctGFie25Gsfhy+K9lf8B5GQGZqWyb2fxkeifmxn5k2aF/6/s5l7G3neRHv1Vz/xaV0PcWV75EPi7v1ET9n3Pl930fNilld0lYxfwThO/2a09HoiwdQ/hzwDYMP4bcB26N2eEP5P0C3ojIHi3gYw9IHj+GLBeC0GILjFgzBxkw+EojifHCNer5VlQnfpCl0UKn5wrhdC1ipLQEwzBcDOGwQ0xBSCyJGHgnUYD7YIOAe7YxuipiMMCHgkRRh3iYIYoQawSxRCmDSKgZg6xXEqJiLQwEvibGGf8TgxIwDEElGUXLGA3iOhJGtND5VCCFH8H+OQ/o3j+EXHcfzto8ulj1HqO4i46KFjkH+QMcH6qHJmAEAsiwFAqkcEF3ghxIh8koIIH8lw2Aok0FY/AQF5AaBmkQ" +;
		"JoaDVhBAxKcFcmgUA1BJK0K0rQSBYiiCULMswsgilwFICsuzYRsl8h98qPR/B9mIP4Scx2htEH8KKZjszfivmg5Zy4/i4zDmLMKQ6zCtADm4AoCk3wMEEIKTGRYBQLBqnQK8Mc6xNBJncGA1YKZxALI0SWX893yJBjeP1ZT8HFOIGEthbTLBiQCgIO2hA/h2ULH8NKhz7llCDokPk1AjytziAKYQBADiNAHI0AgjQCZuADAaBukwJw9UpFiKClg64tCYHKGimQoQOU1BfR2fFOYSz6UIP1+S7xKj+beg52SphWD+eKOUf1CB20KoZAuoA/n5P4DELqT4VStgCq0AsENXQXlRD1DkQhPAuCUDnWcWBahNDSmgK8eCUR9G7HzGUSQ1AnV3DrVoAQE6dV9TRLgEQcA42DGu+gftL1yi4sUchTo5rHVLoTUxsFQB8zrDGLo1YXa9AbK8ASjQGgi2hDBRIQYsBR2nG0gkdrPR9M2H6tkXSkVJD3dsMCRwKgdz" +;
		"iATX63iIIZgJBrYAOALbiCSBlccSYPrlCTkuD8SYPLoXJuXKISddwnXVruJM/gSBJgxu8I+q9mzFAGAheUE87gkhuiuHUTcbxXvoFiIG+Qp5mCiGxF0ZwV79B/pHbsklvcAYBfFOIAd5QIAcBBgkGgI8GA4JsBcEtlhFBZwoIIqgFgZYCw1hvDWDwWAOxACLDmIzEEWB8SzE5HiQEinqACexGh4FeIhiTGmGyAg==")
		oHTML:ToolBarItems := Transform(oHTML:FormatABC("`[id=20][img=15][ttp=save the text],[id=30][img=16][ttp=load the text],[sep],` + A",oHTML:ToolBarItems()),"")
		oHTML:Text := "This is just the initial text"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
66
I can't find any open and store button. And no method to add it. What I can I do (caption,icon,first)

PROCEDURE OnToolBarEvent(oHTML,Ev,ID,Item,Reserved)
	DevOut( "You clicked: " )
	DevOut( Transform(ID,"") )
RETURN

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

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

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

	oHTML := XbpActiveXControl():new( oForm:drawingArea )
	oHTML:CLSID  := "Exontrol.HTML.1" /*{0036F83C-D892-4B7B-AA0B-BEDD8D16A738}*/
	oHTML:create(,, {10,60},{610,370} )

		oHTML:ToolBarEvent := {|Ev,ID,Item,Reserved| OnToolBarEvent(oHTML,Ev,ID,Item,Reserved)} /*Occurs once a change occurs in the control's toolbar.*/

		oHTML:ToolBarAnchor := 2/*exToolBarAnchorTop*/
		oHTML:ToolBarImages("gBJJgBAICAADAAEAAUhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaKEahkZAIAEEbjIZlErlktl0vmExmUzjQXmwjJk5OJcniJLs/Rc/LtBoFColDo1JotLpFMo6LnJMOQWqg5mlXrFZrVbrldr1fsFhjJCshoQ1nZSatTlTNttlutqZt9yuNzu11vFwvV0tyWvzgKuBRYIwgVsWHxGJxViA+NGodyBwFeTSRDyyTImZzGazJEzeezuf0WhyxDSeTFaSyAdN+NA41lpK2SFvyWcit3D+3Ct3W53e93m/4W+4nB4vA5G/PHLWIf5w6xfR6XT6kZD3XOBn7TXRPdfrV8D+bPj8Xk8bZ8vo8/p9nr8DVf3dRL9M31a/XDxwlpI/iUTj/nOWcBH8WECwJA0ClhA8FQTBcHQbCEEQlBkJn8RULmQG0NDI6sOw9D6stQSZCRIfran8dEUn8dUWRRFUUnRF0YxhGR/HTG8VxbGkTxIQh/BZIBJpaJsiFIU8jnUXclH8" +;
		"WUmyZJ0mllJ8pSjKcrSrLEoS1Kktn8Tcvm8KUxEbEEyzNM6MyAFkRxLE8aG9OB/GpOZ/GhO06zvOxoTxPb3n9OBvRrE5C0JH8gpaKlElmWNGHcYFHn8WtJH8WlK0pS1KlpS9NUzTdPU7UFMVFTlLFZUx5vkWs0VXVjpTUSazkMf03RVQB/GnXB/GfXddV5XZn17YE5mpP84x2vx/VjQ01paMNnGFTJ4mTaZ/GDax/F1bJ/Fvblt27bhb29cNwXFctyXPb903DSRan2St3mWDV5IlVt63srdX2USl9n8cN/H8cmAn8cGCWLQNbYRON/HDgGBYWf19kpZKz2XISWDfjBpUyepo46fxmZAfxe5Gf1HmAfxh5SfxiZYfxhZefxf5lmOZyUXZ/FznOcZ1nJc53n2e5+fxPaIbIc6OJ976VpaY3zihH6hlGVVwaZ/Gvq+raxq5r6zrmt67W9c5SYZ/agR+J1lV6Wj9thwwEWZ8GtuR/Gxup/GNvB/WmZJ/Gbv1" +;
		"gn8ZfBZXlpj8Nl2YZGXp/F5xvGcdxpecfyXIn8VHLnIL/NEFpnO88jWnVlZRHdIfxP9OfxSdV1PV9UUnWdf13YdN1HSEdtHcbUlhD94ctGFie25Gsfhy+K9lf8B5GQGZqWyb2fxkeifmxn5k2aF/6/s5l7G3neRHv1Vz/xaV0PcWV75EPi7v1ET9n3Pl930fNilld0lYxfwThO/2a09HoiwdQ/hzwDYMP4bcB26N2eEP5P0C3ojIHi3gYw9IHj+GLBeC0GILjFgzBxkw+EojifHCNer5VlQnfpCl0UKn5wrhdC1ipLQEwzBcDOGwQ0xBSCyJGHgnUYD7YIOAe7YxuipiMMCHgkRRh3iYIYoQawSxRCmDSKgZg6xXEqJiLQwEvibGGf8TgxIwDEElGUXLGA3iOhJGtND5VCCFH8H+OQ/o3j+EXHcfzto8ulj1HqO4i46KFjkH+QMcH6qHJmAEAsiwFAqkcEF3ghxIh8koIIH8lw2Aok0FY/AQF5AaBmkQ" +;
		"JoaDVhBAxKcFcmgUA1BJK0K0rQSBYiiCULMswsgilwFICsuzYRsl8h98qPR/B9mIP4Scx2htEH8KKZjszfivmg5Zy4/i4zDmLMKQ6zCtADm4AoCk3wMEEIKTGRYBQLBqnQK8Mc6xNBJncGA1YKZxALI0SWX893yJBjeP1ZT8HFOIGEthbTLBiQCgIO2hA/h2ULH8NKhz7llCDokPk1AjytziAKYQBADiNAHI0AgjQCZuADAaBukwJw9UpFiKClg64tCYHKGimQoQOU1BfR2fFOYSz6UIP1+S7xKj+beg52SphWD+eKOUf1CB20KoZAuoA/n5P4DELqT4VStgCq0AsENXQXlRD1DkQhPAuCUDnWcWBahNDSmgK8eCUR9G7HzGUSQ1AnV3DrVoAQE6dV9TRLgEQcA42DGu+gftL1yi4sUchTo5rHVLoTUxsFQB8zrDGLo1YXa9AbK8ASjQGgi2hDBRIQYsBR2nG0gkdrPR9M2H6tkXSkVJD3dsMCRwKgdz" +;
		"iATX63iIIZgJBrYAOALbiCSBlccSYPrlCTkuD8SYPLoXJuXKISddwnXVruJM/gSBJgxu8I+q9mzFAGAheUE87gkhuiuHUTcbxXvoFiIG+Qp5mCiGxF0ZwV79B/pHbsklvcAYBfFOIAd5QIAcBBgkGgI8GA4JsBcEtlhFBZwoIIqgFgZYCw1hvDWDwWAOxACLDmIzEEWB8SzE5HiQEinqACexGh4FeIhiTGmGyAg==")
		oHTML:ToolBarItems := Transform(oHTML:FormatABC("`Save[id=20][img=15][ttp=save the text],Load[id=30][img=16][ttp=load the text],[sep],` + A",oHTML:ToolBarItems()),"")
		oHTML:Text := "This is just the initial text"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
65
Can I change the visual appearance of the UI shortcut keys, when user toggles the CTRL key (EBN background)

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

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

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

	oHTML := XbpActiveXControl():new( oForm:drawingArea )
	oHTML:CLSID  := "Exontrol.HTML.1" /*{0036F83C-D892-4B7B-AA0B-BEDD8D16A738}*/
	oHTML:create(,, {10,60},{610,370} )

		oHTML:VisualAppearance():Add(1,"gBFLBCJwBAEHhEJAAEhABCYDg6AADACAxRDgMQBQKAAzQFAYchkHCGAAGMZxTgmFgAQhFcZQSKUOQTDKMIziYBYJhEMQ0DAAUIjKLMIweGCQBjASQpUhqHYDTbIMByBIUIxNFCQILhEY5ADKPIbUbGU7RfBMVQGf6oAAqB74Xj+MIJUJAdCRZR0aRAAyNQRkWjIDp2U5SVDFUrDKItVzbFYYLbgMZbmxFEC7IRsCA7ZjWPZYShXMqScLFLy1Ei/L6nGaZAomVZjQRQFYTDQuHQtRwMMgAAK7EACZpRWbaWAYMAFMwlIqubrvKCcZgOYoDZxOdKwTY+Q40GS2LaiG5LSADPJ9RbeGqaXqGEz9KzBBxmGRhRDfFqdaJfHB8NJThEK5lFCeYDH0TQjggAIImuQAal6JBvHUHJclwN47niXR3gWUoBl6uBMEyAARAkKAaEwZxDimSJLiYCoQkECBNgAEYglkCQKBCF4FjESBeDQDJ0HcHBlEyQgwkwMogik" +;
		"KhKEKDgagaYYoFiKAwiIBYckEMAMBgXIpC0IoCmCN4KguCI2C0LRjAiGJDgSQAChSJApEsMpIjMLoLjKag8C6Y5YnoQIPguKJojIKQjHAAIfhKSxyliNgvT2chQhQZQpFYVQtmWCQsh8AAKAIfIghYCxynYYoYmYIpyGWGRmAkdIghKJJJGIZIbmcCYCEuGpKVkOQuEuAp8j8L4nimdI+h+Z4pnCOIeCaKRyHULonHmdoKiKJ5JmodwuGcWZSgeEAMAoVoWiKS56FoQAumkGgYiGFRiEoWgjiWKhDAYQAvAoGa2CiCgSgYY4ICsAwOhUMBrEMAgTDCJg6jSIYqkoIoKGOBQsAiTo3oGOYOiwKIrkKCh7C+TBLDSRYzGwGBQkSM5oAqdpIjWJ5TBSRTJisapNjOLZZnaVgACGOpMkaOZugsdpdjoKgYG6ZIGisQwGmgMYMHMHpzjmbxjBqcY7iSAoSkAMkuAadI+EwbAGkCPxjFKFIljADIcAMDZAHEAw" +;
		"gkkMhsAiWIlAAL5TAyRAwnEPB3BORAxlMKpSkIL5bHSS5JnKDB7BOSgtlwIIjgYbZDBSTPUjMMwok2cwzDKaIGEoTBiEiPRMHMNxClCcxch8NpQnAHITC+QB0D0NxOlIMAJdGO5KDMIp1lCDJjDiTZWjWPRnEMM4wAMHpuiQaRjD8ZuiAMPJQlmZ4jAKHYdkuAhvHLQgbHaU5djcTZIhuCoVoBx8hlF+JEDgCB9jBHgJwEIDgiAQH2PkMwsxOhrHUAIgI")
		oHTML:SetProperty("Background",143/*0x8f+*/,0x1000000)
		oHTML:SetProperty("Background",145/*0x91+*/,AutomationTranslateColor( GraMakeRGBColor  ( { 255,255,255 } )  , .F. ))

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
64
Can I change the visual appearance of the UI shortcut keys, when user toggles the CTRL key (solid background)

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

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

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

	oHTML := XbpActiveXControl():new( oForm:drawingArea )
	oHTML:CLSID  := "Exontrol.HTML.1" /*{0036F83C-D892-4B7B-AA0B-BEDD8D16A738}*/
	oHTML:create(,, {10,60},{610,370} )

		oHTML:SetProperty("Background",144/*0x90+*/,AutomationTranslateColor( GraMakeRGBColor  ( { 0,0,1 } )  , .F. ))
		oHTML:SetProperty("Background",145/*0x91+*/,AutomationTranslateColor( GraMakeRGBColor  ( { 255,255,255 } )  , .F. ))

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
63
Is it possible to remove all shortcut key combinations from the control's toolbar
#include "AppEvent.ch"
#include "ActiveX.ch"

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

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

	oHTML := XbpActiveXControl():new( oForm:drawingArea )
	oHTML:CLSID  := "Exontrol.HTML.1" /*{0036F83C-D892-4B7B-AA0B-BEDD8D16A738}*/
	oHTML:create(,, {10,60},{610,370} )

		oHTML:ToolBarItems := Transform(oHTML:FormatABC("value replace `key=` with ``",oHTML:ToolBarItems()),"")

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
62
How can I replace the shortcut key combination for the control's toolbar

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

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

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

	oHTML := XbpActiveXControl():new( oForm:drawingArea )
	oHTML:CLSID  := "Exontrol.HTML.1" /*{0036F83C-D892-4B7B-AA0B-BEDD8D16A738}*/
	oHTML:create(,, {10,60},{610,370} )

		oHTML:ToolBarItems := Transform(oHTML:FormatABC("value replace `CTRL+T+C` with `CTRL+1` replace `CTRL+T+B` with `CTRL+2`",oHTML:ToolBarItems()),"")

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
61
Is it possible to export the control's text in W3/standard HTML format (sample 2)

PROCEDURE OnSelChange(oHTML)
	DevOut( oHTML:SelHTML() )
RETURN

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

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

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

	oHTML := XbpActiveXControl():new( oForm:drawingArea )
	oHTML:CLSID  := "Exontrol.HTML.1" /*{0036F83C-D892-4B7B-AA0B-BEDD8D16A738}*/
	oHTML:create(,, {10,60},{610,370} )

		oHTML:SelChange := {|| OnSelChange(oHTML)} /*Occurs when the user selects text in the control.*/

		oHTML:Text := "This is a <off -4><b>bit</b></off> of <i><fgcolor=FF0000>formatted</fgcolor></i> text."
		oHTML:SelStart := 0
		oHTML:SelLength := -1
		DevOut( oHTML:SelHTML() )

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
60
Is it possible to export the control's text in W3/standard HTML format (sample 1)

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

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

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

	oHTML := XbpActiveXControl():new( oForm:drawingArea )
	oHTML:CLSID  := "Exontrol.HTML.1" /*{0036F83C-D892-4B7B-AA0B-BEDD8D16A738}*/
	oHTML:create(,, {10,60},{610,370} )

		oHTML:Text := "This is a <off -4><b>bit</b></off> of <i><fgcolor=FF0000>formatted</fgcolor></i> text."
		DevOut( oHTML:HTML() )

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
59
Is it possible to show the toolbar anchored to the left side of the control

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

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

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

	oHTML := XbpActiveXControl():new( oForm:drawingArea )
	oHTML:CLSID  := "Exontrol.HTML.1" /*{0036F83C-D892-4B7B-AA0B-BEDD8D16A738}*/
	oHTML:create(,, {10,60},{610,370} )

		oHTML:SetProperty("Background",162/*exToolBarAppearance*/,oHTML:BackColor())
		oHTML:ToolBarAnchor := 4/*exToolBarAnchorLeft*/
		oHTML:ToolBarItems := "<font ;6>Font[id=-57707][align=1][button=0x0311][ttp=Font][itemsbg=RGB(255,255,255)][visible=255](<font Arial>Arial</font>[id=53248][typ=1][close=0][chk=1],<font Arial Black>Arial Black</font>[id=53249][close=0],<font Comic Sans MS>Comic Sans MS</font>[id=53250][close=0],<font Courier New>Courier New</font>[id=53251][close=0],<font Georgia>Georgia</font>[id=53252][close=0],<font Impact>Impact</font>[id=53253][close=0],<font Lucida Console>Lucida Console</font>[id=53254][close=0],<font Lucida Sans Unicode>L" +;
		"ucida Sans Unicode</font>[id=53255][close=0],<font Tahoma>Tahoma</font>[id=53256][close=0],<font Times New Roman>Times New Roman</font>[id=53257][close=0],<font Trebuchet MS>Trebuchet MS</font>[id=53258][close=0],<font Verdana>Verdana</font>[id=53259][close=0],<font MS Sans Serif>MS Sans Serif</font>[id=53260][close=0],<font MS Serif>MS Serif</font>[id=53261][close=0]),<img>1</img>[align=1][id=57702][button=0x0311][ttp=Size][itemsbg=RGB(255,255,255)]([id=180][group=0x23]([id=190][group=0x0113](<font ;6>smal" +;
		"l</font>[id=57764][close=0],Normal[id=57765][close=0],<font ;14>Large</font>[id=57766][close=0],<font ;24>Huge</font>[id=57767][close=0]),[id=57768][edittype=0x0403][edit=88][border=0][freq=0][ticklabel=][ettp=])),<img>2</img>[id=57648][align=1][typ=1][show=1][ttp=Bold (CTRL+B)],<img>3</img>[align=1][id=57649][typ=1][show=1][ttp=Italic (CTRL+I)],<img>4</img>[align=1][id=57650][typ=1][show=1][ttp=Underline (CTRL+U)],<img>5</img>[align=1][id=57651][typ=1][show=1][ttp=Strikeout],<img>6</img>[align=1][id=57712]" +;
		"[button=0x01][ttp=Superscript],<img>7</img>[align=1][id=57710][button=0x01][ttp=Subscript],<img>8</img>[align=1][id=57685][button=0x0311][ttp=Text Color][itemsbg=RGB(255,255,255)][visible=255](<fgcolor 808080>foreground[id=350][align=1][group=0x0133][itemspad=2,2,2,2]([id=360][group=0x33]([id=49152][typ=2][close=0][chk=1][show=1][grp=49152][captionwidth=24][height=24][ttp=RGB(0,0,0)][data=RGB(0,0,0)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(0,0,0)]],[id=49153][typ=2][close=0][show=1][grp=49152][captionwi" +;
		"dth=24][height=24][ttp=RGB(68,68,68)][data=RGB(68,68,68)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(68,68,68)]],[id=49154][typ=2][close=0][show=1][grp=49152][captionwidth=24][height=24][ttp=RGB(102,102,102)][data=RGB(102,102,102)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(102,102,102)]],[id=49155][typ=2][close=0][show=1][grp=49152][captionwidth=24][height=24][ttp=RGB(153,153,153)][data=RGB(153,153,153)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(153,153,153)]],[id=49156][typ=2][close=0][show=1][grp=491" +;
		"52][captionwidth=24][height=24][ttp=RGB(204,204,204)][data=RGB(204,204,204)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(204,204,204)]],[id=49157][typ=2][close=0][show=1][grp=49152][captionwidth=24][height=24][ttp=RGB(238,238,238)][data=RGB(238,238,238)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(238,238,238)]],[id=49158][typ=2][close=0][show=1][grp=49152][captionwidth=24][height=24][ttp=RGB(243,243,243)][data=RGB(243,243,243)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(243,243,243)]],[id=49159][typ=2][cl" +;
		"ose=0][show=1][grp=49152][captionwidth=24][height=24][ttp=RGB(255,255,255)][data=RGB(255,255,255)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(255,255,255)]]),[id=450][group=0x33]([id=49160][typ=2][close=0][show=1][grp=49152][captionwidth=24][height=24][ttp=RGB(255,0,0)][data=RGB(255,0,0)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(255,0,0)]],[id=49161][typ=2][close=0][show=1][grp=49152][captionwidth=24][height=24][ttp=RGB(255,153,0)][data=RGB(255,153,0)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(255,153" +;
		",0)]],[id=49162][typ=2][close=0][show=1][grp=49152][captionwidth=24][height=24][ttp=RGB(255,255,0)][data=RGB(255,255,0)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(255,255,0)]],[id=49163][typ=2][close=0][show=1][grp=49152][captionwidth=24][height=24][ttp=RGB(0,255,0)][data=RGB(0,255,0)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(0,255,0)]],[id=49164][typ=2][close=0][show=1][grp=49152][captionwidth=24][height=24][ttp=RGB(0,255,255)][data=RGB(0,255,255)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(0,255,255" +;
		")]],[id=49165][typ=2][close=0][show=1][grp=49152][captionwidth=24][height=24][ttp=RGB(0,0,255)][data=RGB(0,0,255)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(0,0,255)]],[id=49166][typ=2][close=0][show=1][grp=49152][captionwidth=24][height=24][ttp=RGB(153,0,255)][data=RGB(153,0,255)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(153,0,255)]],[id=49167][typ=2][close=0][show=1][grp=49152][captionwidth=24][height=24][ttp=RGB(255,0,255)][data=RGB(255,0,255)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(255,0,255)]" +;
		"]),[id=540][group=0x33]([id=49168][typ=2][close=0][show=1][grp=49152][captionwidth=24][height=24][ttp=RGB(244,204,204)][data=RGB(244,204,204)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(244,204,204)]],[id=49169][typ=2][close=0][show=1][grp=49152][captionwidth=24][height=24][ttp=RGB(252,229,205)][data=RGB(252,229,205)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(252,229,205)]],[id=49170][typ=2][close=0][show=1][grp=49152][captionwidth=24][height=24][ttp=RGB(255,242,204)][data=RGB(255,242,204)][bgext=none[(2" +;
		"D,2D,100%-4D,100%-4D),back=RGB(255,242,204)]],[id=49171][typ=2][close=0][show=1][grp=49152][captionwidth=24][height=24][ttp=RGB(217,234,211)][data=RGB(217,234,211)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(217,234,211)]],[id=49172][typ=2][close=0][show=1][grp=49152][captionwidth=24][height=24][ttp=RGB(208,224,227)][data=RGB(208,224,227)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(208,224,227)]],[id=49173][typ=2][close=0][show=1][grp=49152][captionwidth=24][height=24][ttp=RGB(207,226,243)][data=RGB(207,2" +;
		"26,243)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(207,226,243)]],[id=49174][typ=2][close=0][show=1][grp=49152][captionwidth=24][height=24][ttp=RGB(217,210,233)][data=RGB(217,210,233)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(217,210,233)]],[id=49175][typ=2][close=0][show=1][grp=49152][captionwidth=24][height=24][ttp=RGB(234,209,220)][data=RGB(234,209,220)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(234,209,220)]]),[id=630][group=0x33]([id=49176][typ=2][close=0][show=1][grp=49152][captionwidth=24][hei" +;
		"ght=24][ttp=RGB(234,153,153)][data=RGB(234,153,153)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(234,153,153)]],[id=49177][typ=2][close=0][show=1][grp=49152][captionwidth=24][height=24][ttp=RGB(249,203,156)][data=RGB(249,203,156)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(249,203,156)]],[id=49178][typ=2][close=0][show=1][grp=49152][captionwidth=24][height=24][ttp=RGB(255,229,153)][data=RGB(255,229,153)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(255,229,153)]],[id=49179][typ=2][close=0][show=1][grp=49152" +;
		"][captionwidth=24][height=24][ttp=RGB(182,215,168)][data=RGB(182,215,168)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(182,215,168)]],[id=49180][typ=2][close=0][show=1][grp=49152][captionwidth=24][height=24][ttp=RGB(162,196,201)][data=RGB(162,196,201)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(162,196,201)]],[id=49181][typ=2][close=0][show=1][grp=49152][captionwidth=24][height=24][ttp=RGB(159,197,232)][data=RGB(159,197,232)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(159,197,232)]],[id=49182][typ=2][clos" +;
		"e=0][show=1][grp=49152][captionwidth=24][height=24][ttp=RGB(180,167,214)][data=RGB(180,167,214)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(180,167,214)]],[id=49183][typ=2][close=0][show=1][grp=49152][captionwidth=24][height=24][ttp=RGB(213,166,189)][data=RGB(213,166,189)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(213,166,189)]]),[id=720][group=0x33]([id=49184][typ=2][close=0][show=1][grp=49152][captionwidth=24][height=24][ttp=RGB(224,102,102)][data=RGB(224,102,102)][bgext=none[(2D,2D,100%-4D,100%-4D),ba" +;
		"ck=RGB(224,102,102)]],[id=49185][typ=2][close=0][show=1][grp=49152][captionwidth=24][height=24][ttp=RGB(246,178,107)][data=RGB(246,178,107)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(246,178,107)]],[id=49186][typ=2][close=0][show=1][grp=49152][captionwidth=24][height=24][ttp=RGB(255,217,102)][data=RGB(255,217,102)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(255,217,102)]],[id=49187][typ=2][close=0][show=1][grp=49152][captionwidth=24][height=24][ttp=RGB(147,196,125)][data=RGB(147,196,125)][bgext=none[(2D," +;
		"2D,100%-4D,100%-4D),back=RGB(147,196,125)]],[id=49188][typ=2][close=0][show=1][grp=49152][captionwidth=24][height=24][ttp=RGB(118,165,175)][data=RGB(118,165,175)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(118,165,175)]],[id=49189][typ=2][close=0][show=1][grp=49152][captionwidth=24][height=24][ttp=RGB(111,168,220)][data=RGB(111,168,220)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(111,168,220)]],[id=49190][typ=2][close=0][show=1][grp=49152][captionwidth=24][height=24][ttp=RGB(142,124,195)][data=RGB(142,124" +;
		",195)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(142,124,195)]],[id=49191][typ=2][close=0][show=1][grp=49152][captionwidth=24][height=24][ttp=RGB(194,123,160)][data=RGB(194,123,160)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(194,123,160)]]),[id=810][group=0x33]([id=49192][typ=2][close=0][show=1][grp=49152][captionwidth=24][height=24][ttp=RGB(204,0,0)][data=RGB(204,0,0)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(204,0,0)]],[id=49193][typ=2][close=0][show=1][grp=49152][captionwidth=24][height=24][ttp=RG" +;
		"B(230,145,56)][data=RGB(230,145,56)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(230,145,56)]],[id=49194][typ=2][close=0][show=1][grp=49152][captionwidth=24][height=24][ttp=RGB(241,194,50)][data=RGB(241,194,50)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(241,194,50)]],[id=49195][typ=2][close=0][show=1][grp=49152][captionwidth=24][height=24][ttp=RGB(106,168,79)][data=RGB(106,168,79)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(106,168,79)]],[id=49196][typ=2][close=0][show=1][grp=49152][captionwidth=24][heig" +;
		"ht=24][ttp=RGB(69,129,142)][data=RGB(69,129,142)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(69,129,142)]],[id=49197][typ=2][close=0][show=1][grp=49152][captionwidth=24][height=24][ttp=RGB(61,133,198)][data=RGB(61,133,198)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(61,133,198)]],[id=49198][typ=2][close=0][show=1][grp=49152][captionwidth=24][height=24][ttp=RGB(103,78,167)][data=RGB(103,78,167)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(103,78,167)]],[id=49199][typ=2][close=0][show=1][grp=49152][captionw" +;
		"idth=24][height=24][ttp=RGB(166,77,121)][data=RGB(166,77,121)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(166,77,121)]]),[id=900][group=0x33]([id=49200][typ=2][close=0][show=1][grp=49152][captionwidth=24][height=24][ttp=RGB(153,0,0)][data=RGB(153,0,0)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(153,0,0)]],[id=49201][typ=2][close=0][show=1][grp=49152][captionwidth=24][height=24][ttp=RGB(180,95,6)][data=RGB(180,95,6)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(180,95,6)]],[id=49202][typ=2][close=0][show=1]" +;
		"[grp=49152][captionwidth=24][height=24][ttp=RGB(191,144,0)][data=RGB(191,144,0)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(191,144,0)]],[id=49203][typ=2][close=0][show=1][grp=49152][captionwidth=24][height=24][ttp=RGB(56,118,29)][data=RGB(56,118,29)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(56,118,29)]],[id=49204][typ=2][close=0][show=1][grp=49152][captionwidth=24][height=24][ttp=RGB(19,79,92)][data=RGB(19,79,92)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(19,79,92)]],[id=49205][typ=2][close=0][show=1" +;
		"][grp=49152][captionwidth=24][height=24][ttp=RGB(11,83,148)][data=RGB(11,83,148)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(11,83,148)]],[id=49206][typ=2][close=0][show=1][grp=49152][captionwidth=24][height=24][ttp=RGB(53,28,117)][data=RGB(53,28,117)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(53,28,117)]],[id=49207][typ=2][close=0][show=1][grp=49152][captionwidth=24][height=24][ttp=RGB(116,27,71)][data=RGB(116,27,71)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(116,27,71)]]),[id=990][group=0x33]([id=492" +;
		"08][typ=2][close=0][show=1][grp=49152][captionwidth=24][height=24][ttp=RGB(102,0,0)][data=RGB(102,0,0)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(102,0,0)]],[id=49209][typ=2][close=0][show=1][grp=49152][captionwidth=24][height=24][ttp=RGB(120,63,4)][data=RGB(120,63,4)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(120,63,4)]],[id=49210][typ=2][close=0][show=1][grp=49152][captionwidth=24][height=24][ttp=RGB(127,96,0)][data=RGB(127,96,0)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(127,96,0)]],[id=49211][typ=" +;
		"2][close=0][show=1][grp=49152][captionwidth=24][height=24][ttp=RGB(39,78,19)][data=RGB(39,78,19)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(39,78,19)]],[id=49212][typ=2][close=0][show=1][grp=49152][captionwidth=24][height=24][ttp=RGB(12,52,61)][data=RGB(12,52,61)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(12,52,61)]],[id=49213][typ=2][close=0][show=1][grp=49152][captionwidth=24][height=24][ttp=RGB(7,55,99)][data=RGB(7,55,99)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(7,55,99)]],[id=49214][typ=2][close" +;
		"=0][show=1][grp=49152][captionwidth=24][height=24][ttp=RGB(32,18,77)][data=RGB(32,18,77)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(32,18,77)]],[id=49215][typ=2][close=0][show=1][grp=49152][captionwidth=24][height=24][ttp=RGB(76,17,48)][data=RGB(76,17,48)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(76,17,48)]]))),<img>9</img>[align=1][id=57686][button=0x0311][ttp=Text Background Color][itemsbg=RGB(255,255,255)][visible=255](<fgcolor 808080>background[id=1090][align=1][group=0x0133][itemspad=2,2,2,2]([id=" +;
		"1100][group=0x33]([id=45056][typ=2][close=0][show=1][grp=45056][captionwidth=24][height=24][ttp=RGB(0,0,0)][data=RGB(0,0,0)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(0,0,0)]],[id=45057][typ=2][close=0][show=1][grp=45056][captionwidth=24][height=24][ttp=RGB(68,68,68)][data=RGB(68,68,68)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(68,68,68)]],[id=45058][typ=2][close=0][show=1][grp=45056][captionwidth=24][height=24][ttp=RGB(102,102,102)][data=RGB(102,102,102)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(10" +;
		"2,102,102)]],[id=45059][typ=2][close=0][show=1][grp=45056][captionwidth=24][height=24][ttp=RGB(153,153,153)][data=RGB(153,153,153)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(153,153,153)]],[id=45060][typ=2][close=0][show=1][grp=45056][captionwidth=24][height=24][ttp=RGB(204,204,204)][data=RGB(204,204,204)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(204,204,204)]],[id=45061][typ=2][close=0][show=1][grp=45056][captionwidth=24][height=24][ttp=RGB(238,238,238)][data=RGB(238,238,238)][bgext=none[(2D,2D,100%-4" +;
		"D,100%-4D),back=RGB(238,238,238)]],[id=45062][typ=2][close=0][show=1][grp=45056][captionwidth=24][height=24][ttp=RGB(243,243,243)][data=RGB(243,243,243)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(243,243,243)]],[id=45063][typ=2][close=0][chk=1][show=1][grp=45056][captionwidth=24][height=24][ttp=RGB(255,255,255)][data=RGB(255,255,255)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(255,255,255)]]),[id=1190][group=0x33]([id=45064][typ=2][close=0][show=1][grp=45056][captionwidth=24][height=24][ttp=RGB(255,0,0)]" +;
		"[data=RGB(255,0,0)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(255,0,0)]],[id=45065][typ=2][close=0][show=1][grp=45056][captionwidth=24][height=24][ttp=RGB(255,153,0)][data=RGB(255,153,0)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(255,153,0)]],[id=45066][typ=2][close=0][show=1][grp=45056][captionwidth=24][height=24][ttp=RGB(255,255,0)][data=RGB(255,255,0)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(255,255,0)]],[id=45067][typ=2][close=0][show=1][grp=45056][captionwidth=24][height=24][ttp=RGB(0,255,0)][d" +;
		"ata=RGB(0,255,0)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(0,255,0)]],[id=45068][typ=2][close=0][show=1][grp=45056][captionwidth=24][height=24][ttp=RGB(0,255,255)][data=RGB(0,255,255)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(0,255,255)]],[id=45069][typ=2][close=0][show=1][grp=45056][captionwidth=24][height=24][ttp=RGB(0,0,255)][data=RGB(0,0,255)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(0,0,255)]],[id=45070][typ=2][close=0][show=1][grp=45056][captionwidth=24][height=24][ttp=RGB(153,0,255)][data=RG" +;
		"B(153,0,255)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(153,0,255)]],[id=45071][typ=2][close=0][show=1][grp=45056][captionwidth=24][height=24][ttp=RGB(255,0,255)][data=RGB(255,0,255)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(255,0,255)]]),[id=1280][group=0x33]([id=45072][typ=2][close=0][show=1][grp=45056][captionwidth=24][height=24][ttp=RGB(244,204,204)][data=RGB(244,204,204)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(244,204,204)]],[id=45073][typ=2][close=0][show=1][grp=45056][captionwidth=24][heigh" +;
		"t=24][ttp=RGB(252,229,205)][data=RGB(252,229,205)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(252,229,205)]],[id=45074][typ=2][close=0][show=1][grp=45056][captionwidth=24][height=24][ttp=RGB(255,242,204)][data=RGB(255,242,204)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(255,242,204)]],[id=45075][typ=2][close=0][show=1][grp=45056][captionwidth=24][height=24][ttp=RGB(217,234,211)][data=RGB(217,234,211)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(217,234,211)]],[id=45076][typ=2][close=0][show=1][grp=45056][" +;
		"captionwidth=24][height=24][ttp=RGB(208,224,227)][data=RGB(208,224,227)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(208,224,227)]],[id=45077][typ=2][close=0][show=1][grp=45056][captionwidth=24][height=24][ttp=RGB(207,226,243)][data=RGB(207,226,243)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(207,226,243)]],[id=45078][typ=2][close=0][show=1][grp=45056][captionwidth=24][height=24][ttp=RGB(217,210,233)][data=RGB(217,210,233)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(217,210,233)]],[id=45079][typ=2][close=" +;
		"0][show=1][grp=45056][captionwidth=24][height=24][ttp=RGB(234,209,220)][data=RGB(234,209,220)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(234,209,220)]]),[id=1370][group=0x33]([id=45080][typ=2][close=0][show=1][grp=45056][captionwidth=24][height=24][ttp=RGB(234,153,153)][data=RGB(234,153,153)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(234,153,153)]],[id=45081][typ=2][close=0][show=1][grp=45056][captionwidth=24][height=24][ttp=RGB(249,203,156)][data=RGB(249,203,156)][bgext=none[(2D,2D,100%-4D,100%-4D),bac" +;
		"k=RGB(249,203,156)]],[id=45082][typ=2][close=0][show=1][grp=45056][captionwidth=24][height=24][ttp=RGB(255,229,153)][data=RGB(255,229,153)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(255,229,153)]],[id=45083][typ=2][close=0][show=1][grp=45056][captionwidth=24][height=24][ttp=RGB(182,215,168)][data=RGB(182,215,168)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(182,215,168)]],[id=45084][typ=2][close=0][show=1][grp=45056][captionwidth=24][height=24][ttp=RGB(162,196,201)][data=RGB(162,196,201)][bgext=none[(2D,2" +;
		"D,100%-4D,100%-4D),back=RGB(162,196,201)]],[id=45085][typ=2][close=0][show=1][grp=45056][captionwidth=24][height=24][ttp=RGB(159,197,232)][data=RGB(159,197,232)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(159,197,232)]],[id=45086][typ=2][close=0][show=1][grp=45056][captionwidth=24][height=24][ttp=RGB(180,167,214)][data=RGB(180,167,214)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(180,167,214)]],[id=45087][typ=2][close=0][show=1][grp=45056][captionwidth=24][height=24][ttp=RGB(213,166,189)][data=RGB(213,166," +;
		"189)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(213,166,189)]]),[id=1460][group=0x33]([id=45088][typ=2][close=0][show=1][grp=45056][captionwidth=24][height=24][ttp=RGB(224,102,102)][data=RGB(224,102,102)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(224,102,102)]],[id=45089][typ=2][close=0][show=1][grp=45056][captionwidth=24][height=24][ttp=RGB(246,178,107)][data=RGB(246,178,107)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(246,178,107)]],[id=45090][typ=2][close=0][show=1][grp=45056][captionwidth=24][heigh" +;
		"t=24][ttp=RGB(255,217,102)][data=RGB(255,217,102)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(255,217,102)]],[id=45091][typ=2][close=0][show=1][grp=45056][captionwidth=24][height=24][ttp=RGB(147,196,125)][data=RGB(147,196,125)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(147,196,125)]],[id=45092][typ=2][close=0][show=1][grp=45056][captionwidth=24][height=24][ttp=RGB(118,165,175)][data=RGB(118,165,175)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(118,165,175)]],[id=45093][typ=2][close=0][show=1][grp=45056][" +;
		"captionwidth=24][height=24][ttp=RGB(111,168,220)][data=RGB(111,168,220)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(111,168,220)]],[id=45094][typ=2][close=0][show=1][grp=45056][captionwidth=24][height=24][ttp=RGB(142,124,195)][data=RGB(142,124,195)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(142,124,195)]],[id=45095][typ=2][close=0][show=1][grp=45056][captionwidth=24][height=24][ttp=RGB(194,123,160)][data=RGB(194,123,160)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(194,123,160)]]),[id=1550][group=0x33]([" +;
		"id=45096][typ=2][close=0][show=1][grp=45056][captionwidth=24][height=24][ttp=RGB(204,0,0)][data=RGB(204,0,0)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(204,0,0)]],[id=45097][typ=2][close=0][show=1][grp=45056][captionwidth=24][height=24][ttp=RGB(230,145,56)][data=RGB(230,145,56)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(230,145,56)]],[id=45098][typ=2][close=0][show=1][grp=45056][captionwidth=24][height=24][ttp=RGB(241,194,50)][data=RGB(241,194,50)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(241,194,50)" +;
		"]],[id=45099][typ=2][close=0][show=1][grp=45056][captionwidth=24][height=24][ttp=RGB(106,168,79)][data=RGB(106,168,79)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(106,168,79)]],[id=45100][typ=2][close=0][show=1][grp=45056][captionwidth=24][height=24][ttp=RGB(69,129,142)][data=RGB(69,129,142)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(69,129,142)]],[id=45101][typ=2][close=0][show=1][grp=45056][captionwidth=24][height=24][ttp=RGB(61,133,198)][data=RGB(61,133,198)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RG" +;
		"B(61,133,198)]],[id=45102][typ=2][close=0][show=1][grp=45056][captionwidth=24][height=24][ttp=RGB(103,78,167)][data=RGB(103,78,167)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(103,78,167)]],[id=45103][typ=2][close=0][show=1][grp=45056][captionwidth=24][height=24][ttp=RGB(166,77,121)][data=RGB(166,77,121)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(166,77,121)]]),[id=1640][group=0x33]([id=45104][typ=2][close=0][show=1][grp=45056][captionwidth=24][height=24][ttp=RGB(153,0,0)][data=RGB(153,0,0)][bgext=none[(" +;
		"2D,2D,100%-4D,100%-4D),back=RGB(153,0,0)]],[id=45105][typ=2][close=0][show=1][grp=45056][captionwidth=24][height=24][ttp=RGB(180,95,6)][data=RGB(180,95,6)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(180,95,6)]],[id=45106][typ=2][close=0][show=1][grp=45056][captionwidth=24][height=24][ttp=RGB(191,144,0)][data=RGB(191,144,0)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(191,144,0)]],[id=45107][typ=2][close=0][show=1][grp=45056][captionwidth=24][height=24][ttp=RGB(56,118,29)][data=RGB(56,118,29)][bgext=none[(2" +;
		"D,2D,100%-4D,100%-4D),back=RGB(56,118,29)]],[id=45108][typ=2][close=0][show=1][grp=45056][captionwidth=24][height=24][ttp=RGB(19,79,92)][data=RGB(19,79,92)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(19,79,92)]],[id=45109][typ=2][close=0][show=1][grp=45056][captionwidth=24][height=24][ttp=RGB(11,83,148)][data=RGB(11,83,148)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(11,83,148)]],[id=45110][typ=2][close=0][show=1][grp=45056][captionwidth=24][height=24][ttp=RGB(53,28,117)][data=RGB(53,28,117)][bgext=none[(" +;
		"2D,2D,100%-4D,100%-4D),back=RGB(53,28,117)]],[id=45111][typ=2][close=0][show=1][grp=45056][captionwidth=24][height=24][ttp=RGB(116,27,71)][data=RGB(116,27,71)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(116,27,71)]]),[id=1730][group=0x33]([id=45112][typ=2][close=0][show=1][grp=45056][captionwidth=24][height=24][ttp=RGB(102,0,0)][data=RGB(102,0,0)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(102,0,0)]],[id=45113][typ=2][close=0][show=1][grp=45056][captionwidth=24][height=24][ttp=RGB(120,63,4)][data=RGB(120," +;
		"63,4)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(120,63,4)]],[id=45114][typ=2][close=0][show=1][grp=45056][captionwidth=24][height=24][ttp=RGB(127,96,0)][data=RGB(127,96,0)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(127,96,0)]],[id=45115][typ=2][close=0][show=1][grp=45056][captionwidth=24][height=24][ttp=RGB(39,78,19)][data=RGB(39,78,19)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(39,78,19)]],[id=45116][typ=2][close=0][show=1][grp=45056][captionwidth=24][height=24][ttp=RGB(12,52,61)][data=RGB(12,52,61)" +;
		"][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(12,52,61)]],[id=45117][typ=2][close=0][show=1][grp=45056][captionwidth=24][height=24][ttp=RGB(7,55,99)][data=RGB(7,55,99)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(7,55,99)]],[id=45118][typ=2][close=0][show=1][grp=45056][captionwidth=24][height=24][ttp=RGB(32,18,77)][data=RGB(32,18,77)][bgext=none[(2D,2D,100%-4D,100%-4D),back=RGB(32,18,77)]],[id=45119][typ=2][close=0][show=1][grp=45056][captionwidth=24][height=24][ttp=RGB(76,17,48)][data=RGB(76,17,48)][bgext=" +;
		"none[(2D,2D,100%-4D,100%-4D),back=RGB(76,17,48)]]))),<img>10</img>[align=1][id=57654][button=0x0311][ttp=Align][itemsbg=RGB(255,255,255)][visible=255](<img>10</img>[id=57655],<img>11</img>[id=57656],<img>12</img>[id=57657]),<img>14</img>[align=1][id=57770][button=0x01][ttp=Indent Less (Shift_TAB)],<img>13</img>[align=1][id=57769][button=0x01][ttp=Indent More (TAB)],<img>15</img>[align=1][id=57771][button=0x01][ttp=Remove Formatting]"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
58
How can I place the control's toolbar on the top of the control rather than bottom side

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

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

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

	oHTML := XbpActiveXControl():new( oForm:drawingArea )
	oHTML:CLSID  := "Exontrol.HTML.1" /*{0036F83C-D892-4B7B-AA0B-BEDD8D16A738}*/
	oHTML:create(,, {10,60},{610,370} )

		oHTML:ToolBarAnchor := 2/*exToolBarAnchorTop*/

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
57
Is it possible to replace/add commands in the control's toolbar

PROCEDURE OnToolBarEvent(oHTML,Ev,ID,Item,Reserved)
	oHTML:SelText := Transform(Item,"")
RETURN

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

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

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

	oHTML := XbpActiveXControl():new( oForm:drawingArea )
	oHTML:CLSID  := "Exontrol.HTML.1" /*{0036F83C-D892-4B7B-AA0B-BEDD8D16A738}*/
	oHTML:create(,, {10,60},{610,370} )

		oHTML:ToolBarEvent := {|Ev,ID,Item,Reserved| OnToolBarEvent(oHTML,Ev,ID,Item,Reserved)} /*Occurs once a change occurs in the control's toolbar.*/

		oHTML:ToolBarItems := "Insert(Caption 1,Caption 2,Caption 3)"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
56
How do I hide the control's toolbar
#include "AppEvent.ch"
#include "ActiveX.ch"

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

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

	oHTML := XbpActiveXControl():new( oForm:drawingArea )
	oHTML:CLSID  := "Exontrol.HTML.1" /*{0036F83C-D892-4B7B-AA0B-BEDD8D16A738}*/
	oHTML:create(,, {10,60},{610,370} )

		oHTML:ToolBarSize := 0

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
55
How can I remove the text formatting

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

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

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

	oHTML := XbpActiveXControl():new( oForm:drawingArea )
	oHTML:CLSID  := "Exontrol.HTML.1" /*{0036F83C-D892-4B7B-AA0B-BEDD8D16A738}*/
	oHTML:create(,, {10,60},{610,370} )

		oHTML:Text := "This is a bit of <b>HTML</b> text. Select the text and call <a>FormatSelection(exHTMLFormatRemove)</a> to remove all formatting."
		oHTML:SelLength := -1
		oHTML:SetProperty("FormatSelection",48/*exHTMLFormatRemove*/,1)

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
54
Can I display an icon file as picture and icon as well

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

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

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

	oHTML := XbpActiveXControl():new( oForm:drawingArea )
	oHTML:CLSID  := "Exontrol.HTML.1" /*{0036F83C-D892-4B7B-AA0B-BEDD8D16A738}*/
	oHTML:create(,, {10,60},{610,370} )

		oHTML:SetProperty("HTMLPicture","icon",oHTML:ExecuteTemplate("loadpicture(`gAAAABgYACAQgUCEAANAEgQWhIohMIhUJgkLhIAIEOjMdj0Cf8hAMhf8jkUkk0llEJGMJGcumECl8ymIAmc2lkonUnnkqkS3Qosea2QIkf61P4go5/D9LptIp9MpdKolGoFCnc+rUpri2QQlklhsVjsllqr/lk1m9rly1QAisTqbq6f7qbi4f7obKzf7na6xf7mayvwLWV1iqD/q9DotTp2PWh+Dz/WZ7DT/WB3CWYO2bXaKGV1u99v+FwjlaqssWRydnsuv2FiWB2CD/fj7ej/fL0dL/fDyc2+eTl1eSx9hwWHwWEczXWGB52mwuHsKuOgO3z1c7/ejubj/ebsbPgdjY4uT1li1Gq5fS9vt9di63Yezwbz/eLoaL/eDmZr+HO/6wvS9Kwt+4jfuCfB5u3BcGuA4TiOq678HUaZ/nueJyNikJaD+9DjLC8LxxG8htPJEjxPI80Juwd5yGOsRnlWNp/lYOACsQt5/wKkj8me/B0GhIM" +;
		"hngc8gP6/8jQEkj5n+dZvF4sUbxysJ2G4YjFEGE5Wx6kJ2nHGMwGQf8wRi+pww4zgIzVK8srcERTpRL0nm7KR1m6Xsnm4XcZRpG0cLEWY+g4o5ABCx04S1LisgCxKwnObDAUjSborDKixSuYZ/q8ExS0bUCegC101NhN1DTjUKt1UAJckOFp3rOxMCONDynx2W8tmrVleVEkC0AAkNf2HYNgWFYtiWPZVjWZZNmICA`)"))
		oHTML:Images("gBJJgBggAAwAAgACEKAD/hz/EMNh8TIRNGwAjEZAEXjAojJAjIgjIBAEijUlk8plUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTqlVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9oEEwGBwWDwMZGMZGeIxUYxOMxYAxuQw1+ykswmXzCuPwpea2QIkf61P4g0J/D+l0+i1Om0ukz2gzWcyuzk+Y22CWyCEsT3m932/h+vf+04kaw+O5GS5IzWqAEW8dTdXT/dTcXD/dDZWb/c7XWL/czWV/gayu3mq4fF2exzuf1uo+C0Pwef6zPYaf6wO4S/J2/hdkUGTqOs7jvPI8ZymqVjePk+j1Nm4TgQlCaHFgOwIH+fh9nof58nodJ/nweRzRCeRywY+b0wevz0Im8LzPC8ZzGuWDwRpA7yPMiZXDoB0Qnqc5/nodxuH+eZ2GzIx2Gx" +;
		"FEHRWv0Gt5BMFxjHEqyrKbeR5Hx7Hgbx/nidBon+eBzGbMhzzOicoyfKEUonEUTxFEh8HnIM6zvEcSxPHcezAdRpn+e54nJCh/loP8nTavcoonI8k0fJRtSVSEkSVJk+x8d5yGO3hnlWNp/lYOACvO50VUWvNGofMJnzAdBoVfWJ4HPV0yzPWk1IfLZ/nWbxeN5UdSomdhuGIf4+CwDRW1TRk3oedpx07aJkH/aNOy6cNDQsCNDWLY47CmCxTsLZtVWehx1m7YF1F7XpuF3T1QVFUjeFmPoONCQAQve5rn2TZbL3MvMWoec5sO/g+ExuidhN5Yphn+OoqAwUrb4ukmBrvCNDQlb5/3DceMZHjONLqVo/BUd7hPRKOXNZfx/kwNoQGrkmb5Lky5oqHyVZ6jqPpCkYAZyjGipoh+daUo6Ag")
		oHTML:Text := "As Picture: <img>icon</img><br>As Icon:     <img>1</img>"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
53
How do I show a gradient text

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

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

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

	oHTML := XbpActiveXControl():new( oForm:drawingArea )
	oHTML:CLSID  := "Exontrol.HTML.1" /*{0036F83C-D892-4B7B-AA0B-BEDD8D16A738}*/
	oHTML:create(,, {10,60},{610,370} )

		oHTML:Text := "first line<br>second line<br>third line"
		oHTML:SelStart := oHTML:XYToPosition(0,1)
		oHTML:SelLength := 11
		oHTML:HideSelection := .F.
		oHTML:SetProperty("FormatSelection",15/*exHTMLFormatFont*/,"Tahoma")
		oHTML:SetProperty("FormatSelection",16/*exHTMLFormatFontSize*/,32)
		oHTML:SetProperty("FormatSelection",18/*exHTMLFormatGradient*/,255)
		oHTML:SelLength := 0

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

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

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

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

	oHTML := XbpActiveXControl():new( oForm:drawingArea )
	oHTML:CLSID  := "Exontrol.HTML.1" /*{0036F83C-D892-4B7B-AA0B-BEDD8D16A738}*/
	oHTML:create(,, {10,60},{610,370} )

		oHTML:Text := "first line<br>second line<br>third line"
		oHTML:SelStart := oHTML:XYToPosition(0,1)
		oHTML:SelLength := 11
		oHTML:HideSelection := .F.
		oHTML:SetProperty("FormatSelection",15/*exHTMLFormatFont*/,"Tahoma")
		oHTML:SetProperty("FormatSelection",16/*exHTMLFormatFontSize*/,32)
		oHTML:SelLength := 0

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
51
How can I programmatically change the selection's foreground color
#include "AppEvent.ch"
#include "ActiveX.ch"

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

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

	oHTML := XbpActiveXControl():new( oForm:drawingArea )
	oHTML:CLSID  := "Exontrol.HTML.1" /*{0036F83C-D892-4B7B-AA0B-BEDD8D16A738}*/
	oHTML:create(,, {10,60},{610,370} )

		oHTML:Text := "first line<br>second line<br>third line"
		oHTML:SelStart := oHTML:XYToPosition(0,1)
		oHTML:SelLength := 11
		oHTML:HideSelection := .F.
		oHTML:SetProperty("FormatSelection",13/*exHTMLFormatForeColor*/,255)
		oHTML:SelLength := 4
		oHTML:SetProperty("FormatSelection",13/*exHTMLFormatForeColor*/,"")
		DevOut( Transform(oHTML:FormatSelection(13/*exHTMLFormatForeColor*/),"") )
		oHTML:SelLength := 0

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
50
How can I programmatically resizes a picture
#include "AppEvent.ch"
#include "ActiveX.ch"

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

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

	oHTML := XbpActiveXControl():new( oForm:drawingArea )
	oHTML:CLSID  := "Exontrol.HTML.1" /*{0036F83C-D892-4B7B-AA0B-BEDD8D16A738}*/
	oHTML:create(,, {10,60},{610,370} )

		oHTML:SetProperty("HTMLPicture","pic1","c:\exontrol\images\zipdisk.gif")
		oHTML:Text := "first line<br>second line<br>third line"
		oHTML:HideSelection := .F.
		oHTML:SelStart := oHTML:XYToPosition(0,1)
		oHTML:SetProperty("FormatSelection",11/*exHTMLFormatImage*/,"pic1")
		oHTML:SetProperty("FormatSelection",12/*exHTMLFormatImageSize*/,64)
		oHTML:SelLength := 0

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
49
How can I programmatically inserts an icon/picture

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

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

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

	oHTML := XbpActiveXControl():new( oForm:drawingArea )
	oHTML:CLSID  := "Exontrol.HTML.1" /*{0036F83C-D892-4B7B-AA0B-BEDD8D16A738}*/
	oHTML:create(,, {10,60},{610,370} )

		oHTML:SetProperty("HTMLPicture","pic1","c:\exontrol\images\zipdisk.gif")
		oHTML:Images("gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTqlVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/yNAOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=")
		oHTML:Text := "first line<br>second line<br>third line"
		oHTML:HideSelection := .F.
		oHTML:SelStart := oHTML:XYToPosition(0,1)
		oHTML:SetProperty("FormatSelection",11/*exHTMLFormatImage*/,1)
		oHTML:SelStart := oHTML:XYToPosition(1,1)
		oHTML:SetProperty("FormatSelection",11/*exHTMLFormatImage*/,"pic1")
		oHTML:SelLength := 0

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
48
How can I programmatically inserts a line

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

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

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

	oHTML := XbpActiveXControl():new( oForm:drawingArea )
	oHTML:CLSID  := "Exontrol.HTML.1" /*{0036F83C-D892-4B7B-AA0B-BEDD8D16A738}*/
	oHTML:create(,, {10,60},{610,370} )

		oHTML:Text := "first line<br>second line<br>third line"
		oHTML:SelStart := oHTML:XYToPosition(0,1)
		oHTML:HideSelection := .F.
		oHTML:SetProperty("FormatSelection",9/*exHTMLFormatLine*/,1)

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
47
How can I programmatically format the selection

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

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

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

	oHTML := XbpActiveXControl():new( oForm:drawingArea )
	oHTML:CLSID  := "Exontrol.HTML.1" /*{0036F83C-D892-4B7B-AA0B-BEDD8D16A738}*/
	oHTML:create(,, {10,60},{610,370} )

		oHTML:Text := "first line<br>second line<br>third line"
		oHTML:SelStart := oHTML:XYToPosition(0,1)
		oHTML:SelLength := 11
		oHTML:HideSelection := .F.
		oHTML:SetProperty("FormatSelection",1/*exHTMLFormatBold*/,.T.)
		oHTML:SetProperty("FormatSelection",8/*exHTMLFormatAlign*/,1)
		DevOut( Transform(oHTML:FormatSelection(1/*exHTMLFormatBold*/),"") )
		oHTML:SelStart := oHTML:XYToPosition(0,2)
		oHTML:SelLength := -1
		oHTML:SetProperty("FormatSelection",4/*exHTMLFormatUnderline*/,.T.)
		oHTML:SetProperty("FormatSelection",8/*exHTMLFormatAlign*/,2)

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
46
How can I select the text giving (column,line)-coordinates
#include "AppEvent.ch"
#include "ActiveX.ch"

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

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

	oHTML := XbpActiveXControl():new( oForm:drawingArea )
	oHTML:CLSID  := "Exontrol.HTML.1" /*{0036F83C-D892-4B7B-AA0B-BEDD8D16A738}*/
	oHTML:create(,, {10,60},{610,370} )

		oHTML:Text := "This sample shows how to select the text giving (column,line)-coordinates.<br>This is the second line"
		oHTML:SelStart := oHTML:XYToPosition(0,1)
		oHTML:SelLength := 4
		oHTML:HideSelection := .F.

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
45
How can I determine the (column,line)-coordinates of the cursor's position
PROCEDURE OnSelChange(oHTML)
	DevOut( "Column" )
	DevOut( Transform(oHTML:PositionToX(oHTML:CursorPos()),"") )
	DevOut( "Line" )
	DevOut( Transform(oHTML:PositionToY(oHTML:CursorPos()),"") )
RETURN

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

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

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

	oHTML := XbpActiveXControl():new( oForm:drawingArea )
	oHTML:CLSID  := "Exontrol.HTML.1" /*{0036F83C-D892-4B7B-AA0B-BEDD8D16A738}*/
	oHTML:create(,, {10,60},{610,370} )

		oHTML:SelChange := {|| OnSelChange(oHTML)} /*Occurs when the user selects text in the control.*/

		oHTML:WordWrap := .T.
		oHTML:Text := "This sample shows how to determine the <b>(column,line)</b> - coordinates."

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
44
How can I provide my own context menu

PROCEDURE OnExecuteContextMenu(oHTML,Item,Position)
	DevOut( "You selected: " )
	DevOut( Transform(Item,"") )
	oHTML:SelText := Transform(Item,"")
RETURN

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

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

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

	oHTML := XbpActiveXControl():new( oForm:drawingArea )
	oHTML:CLSID  := "Exontrol.HTML.1" /*{0036F83C-D892-4B7B-AA0B-BEDD8D16A738}*/
	oHTML:create(,, {10,60},{610,370} )

		oHTML:ExecuteContextMenu := {|Item,Position| OnExecuteContextMenu(oHTML,Item,Position)} /*Occurs when the user selects an user item from the control's context menu.*/

		oHTML:Text := "This is a bit of <b>HTML</b> text. Right-click the text."
		oHTML:ContextMenuItems := "1,2,3,others[id=0](4,5,6) "

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
43
How can I change the context menu's visual appearance

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

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

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

	oHTML := XbpActiveXControl():new( oForm:drawingArea )
	oHTML:CLSID  := "Exontrol.HTML.1" /*{0036F83C-D892-4B7B-AA0B-BEDD8D16A738}*/
	oHTML:create(,, {10,60},{610,370} )

		oHTML:WordWrap := .T.
		oHTML:Text := "This sample show change the visual appearance of the built-in context menu"
		oHTML:VisualAppearance():Add(1,"c:\exontrol\images\normal.ebn")
		oHTML:SetProperty("Background",99/*exContextMenuAppearance*/,0x1000000)
		oHTML:SetProperty("Background",102/*exContextMenuSelBackColor*/,0x10000ff)

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
42
How can I insert my own HTML words to the control's context menu

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

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

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

	oHTML := XbpActiveXControl():new( oForm:drawingArea )
	oHTML:CLSID  := "Exontrol.HTML.1" /*{0036F83C-D892-4B7B-AA0B-BEDD8D16A738}*/
	oHTML:create(,, {10,60},{610,370} )

		oHTML:WordWrap := .T.
		oHTML:Text := " <off 5><font ;7><fgcolor 808080>sub-note</fgcolor></font></off> This is just a bit of text <off -5><font ;7><fgcolor 808080>super-note</fgcolor></font></off> "
		oHTML:ContextMenuItems := "<off 5><font ;7><fgcolor 808080>sub-note</fgcolor></font></off>[id=57763],<off -5><font ;7><fgcolor 808080>super-note</fgcolor></font></off>[id=57763]"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
41
When I use the context menu to insert an image, the size seems to be fixed to 32 pixels. How can I control / change this

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

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

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

	oHTML := XbpActiveXControl():new( oForm:drawingArea )
	oHTML:CLSID  := "Exontrol.HTML.1" /*{0036F83C-D892-4B7B-AA0B-BEDD8D16A738}*/
	oHTML:create(,, {10,60},{610,370} )

		oHTML:SetProperty("HTMLPicture","pic1","c:\exontrol\images\zipdisk.gif")
		oHTML:SetProperty("HTMLPicture","pic2","c:\exontrol\images\auction.gif")
		oHTML:SetProperty("HTMLPicture","pic3","c:\exontrol\images\colorize.gif")
		oHTML:WordWrap := .T.
		oHTML:Text := "The text displays pictures <img>pic1:32</img>,..., <img>pic2:32</img>.<br><b>1.</b> Select a single picture, right click to resize it<br><b>2.</b> Right click to insert a new picture"
		oHTML:ContextMenuItems := "Size[id=57680][edittype=515][border=0][min=16][max=128][freq=16][editwidth=-128][ticklabel=value = %i ? '<b>'+value : ( value = vmax ? '<fgcolor 808080><font ;6><b>'+value : ( value = vmin ? '<fgcolor 808080><font ;6><b>'+value : '' ) )],Insert[group=3](<img>pic1:32</img>[id=57763],<img>pic2:32</img>[id=57763],Others[id=1000](default[group=3](<img>pic3</img>[id=57763]),<font ;6>other sizes[sep],<img>pic3:16</img>[id=57763],<img>pic3:32</img>[id=57763],<img>pic3:64</img>[id=57763]))"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
40
How can I programatically selects the entire text

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

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

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

	oHTML := XbpActiveXControl():new( oForm:drawingArea )
	oHTML:CLSID  := "Exontrol.HTML.1" /*{0036F83C-D892-4B7B-AA0B-BEDD8D16A738}*/
	oHTML:create(,, {10,60},{610,370} )

		oHTML:HideSelection := .F.
		oHTML:WordWrap := .T.
		oHTML:Text := "<b>Job</b><br>/jäb/<br><br><i>noun</i><br><b>1.</b> a paid position of regular employment.<br><b>2.</b> a task or piece of work, especially one that is paid."
		oHTML:SelStart := 0
		oHTML:SelLength := -1

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
39
How can I search for an exacting word

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

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

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

	oHTML := XbpActiveXControl():new( oForm:drawingArea )
	oHTML:CLSID  := "Exontrol.HTML.1" /*{0036F83C-D892-4B7B-AA0B-BEDD8D16A738}*/
	oHTML:create(,, {10,60},{610,370} )

		oHTML:HideSelection := .F.
		oHTML:WordWrap := .T.
		oHTML:Text := "<b>Class</b><br>/klas/<br><br><i>noun</i><br><b>1.</b> a set or category of things having some property or attribute in common and differentiated from others by kind, type, or quality.<br><br><b>2.</b> the system of ordering a society in which people are divided into sets based on perceived social or economic status."
		oHTML:Find("differentiated",2/*exHTMLEditMatchWholeWordOnly*/)

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
38
How can I search for a string

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

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

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

	oHTML := XbpActiveXControl():new( oForm:drawingArea )
	oHTML:CLSID  := "Exontrol.HTML.1" /*{0036F83C-D892-4B7B-AA0B-BEDD8D16A738}*/
	oHTML:create(,, {10,60},{610,370} )

		oHTML:HideSelection := .F.
		oHTML:WordWrap := .T.
		oHTML:Text := "<b>Class</b><br>/klas/<br><br><i>noun</i><br><b>1.</b> a set or category of things having some property or attribute in common and differentiated from others by kind, type, or quality.<br><br><b>2.</b> the system of ordering a society in which people are divided into sets based on perceived social or economic status."
		oHTML:Find("different",0/*exHTMLEditSearchDown*/)

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
37
I am using the ScrollBars property on 0, but the control is not scrolling anymore. What can be done

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

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

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

	oHTML := XbpActiveXControl():new( oForm:drawingArea )
	oHTML:CLSID  := "Exontrol.HTML.1" /*{0036F83C-D892-4B7B-AA0B-BEDD8D16A738}*/
	oHTML:create(,, {10,60},{610,370} )

		oHTML:SingleLine := .T.
		oHTML:Text := "This is a <b>long text</b> that should make the control to display the horizontal scroll bar."
		oHTML:ScrollBars := 3/*exBoth*/
		oHTML:ScrollWidth := 0
		oHTML:ScrollHeight := 0

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
36
How can I force the control to display a single-line only

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

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

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

	oHTML := XbpActiveXControl():new( oForm:drawingArea )
	oHTML:CLSID  := "Exontrol.HTML.1" /*{0036F83C-D892-4B7B-AA0B-BEDD8D16A738}*/
	oHTML:create(,, {10,60},{610,370} )

		oHTML:SingleLine := .T.
		oHTML:Text := "This is the first line<br>This is the second line"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
35
How can I replace the text with HTML formatting

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

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

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

	oHTML := XbpActiveXControl():new( oForm:drawingArea )
	oHTML:CLSID  := "Exontrol.HTML.1" /*{0036F83C-D892-4B7B-AA0B-BEDD8D16A738}*/
	oHTML:create(,, {10,60},{610,370} )

		oHTML:WordWrap := .T.
		oHTML:Text := "This is a bit of text"
		oHTML:SetProperty("CursorText",10,3,.F.,"<dotline><gra FFFFFF;0;1><font ;12>... this is a HTML replacement ...</font></gra></dotline>")

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
34
How can I insert HTML text (method 2)

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

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

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

	oHTML := XbpActiveXControl():new( oForm:drawingArea )
	oHTML:CLSID  := "Exontrol.HTML.1" /*{0036F83C-D892-4B7B-AA0B-BEDD8D16A738}*/
	oHTML:create(,, {10,60},{610,370} )

		oHTML:Text := "This is a simple text."
		oHTML:SetProperty("CursorText",0,0,.F.,"<b><dotline>Inserted by code</dotline></b>. ")

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
33
How can I insert HTML text (method 1)

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

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

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

	oHTML := XbpActiveXControl():new( oForm:drawingArea )
	oHTML:CLSID  := "Exontrol.HTML.1" /*{0036F83C-D892-4B7B-AA0B-BEDD8D16A738}*/
	oHTML:create(,, {10,60},{610,370} )

		oHTML:Text := "This is a simple text."
		oHTML:SelStart := 0
		oHTML:SelLength := 0
		oHTML:SelText := "<b><dotline>Inserted by code</dotline></b>. "

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
32
How can I add/append HTML text (method 2)

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

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

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

	oHTML := XbpActiveXControl():new( oForm:drawingArea )
	oHTML:CLSID  := "Exontrol.HTML.1" /*{0036F83C-D892-4B7B-AA0B-BEDD8D16A738}*/
	oHTML:create(,, {10,60},{610,370} )

		oHTML:Text := "This is a simple text."
		oHTML:SetProperty("CursorText",-1,0,.F.," <b><dotline>Added by code</dotline></b>.")

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
31
How can I add/append HTML text (method 1)

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

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

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

	oHTML := XbpActiveXControl():new( oForm:drawingArea )
	oHTML:CLSID  := "Exontrol.HTML.1" /*{0036F83C-D892-4B7B-AA0B-BEDD8D16A738}*/
	oHTML:create(,, {10,60},{610,370} )

		oHTML:Text := "This is a simple text."
		oHTML:SelStart := -1
		oHTML:SelLength := 0
		oHTML:SelText := " <b><dotline>Added by code</dotline></b>."

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
30
How can I replace the text with no HTML formatting

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

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

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

	oHTML := XbpActiveXControl():new( oForm:drawingArea )
	oHTML:CLSID  := "Exontrol.HTML.1" /*{0036F83C-D892-4B7B-AA0B-BEDD8D16A738}*/
	oHTML:create(,, {10,60},{610,370} )

		oHTML:WordWrap := .T.
		oHTML:Text := "<font ;12>This is a <fgcolor FF0000> bit </fgcolor> of <b><fgcolor 808080><u>HTML</u></fgcolor></b> text"
		oHTML:SetProperty("CursorText",11,3,"... this is a plain replacement ...")

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
29
Is there any property or method that gets the entire text with no HTML formatting

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

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

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

	oHTML := XbpActiveXControl():new( oForm:drawingArea )
	oHTML:CLSID  := "Exontrol.HTML.1" /*{0036F83C-D892-4B7B-AA0B-BEDD8D16A738}*/
	oHTML:create(,, {10,60},{610,370} )

		oHTML:WordWrap := .T.
		oHTML:Text := "<font ;12><sha  ;;0>This is a bit of <b><fgcolor 808080><u>HTML</u></fgcolor></b> text."
		DevOut( oHTML:CursorText(0,-1,.T.) )

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
28
How can I get the selection as plain text with no HTML formatting

PROCEDURE OnSelChange(oHTML)
	DevOut( oHTML:CursorText(oHTML:SelStart(),oHTML:SelLength(),.T.) )
RETURN

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

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

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

	oHTML := XbpActiveXControl():new( oForm:drawingArea )
	oHTML:CLSID  := "Exontrol.HTML.1" /*{0036F83C-D892-4B7B-AA0B-BEDD8D16A738}*/
	oHTML:create(,, {10,60},{610,370} )

		oHTML:SelChange := {|| OnSelChange(oHTML)} /*Occurs when the user selects text in the control.*/

		oHTML:WordWrap := .T.
		oHTML:Text := "<font ;12><sha  ;;0>This is a bit of <b><fgcolor 808080><u>HTML</u></fgcolor></b> text. Select a portion of text and you will get the text with no HTML formatting."

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
27
How can I customize the pictures in the control's context menu

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

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

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

	oHTML := XbpActiveXControl():new( oForm:drawingArea )
	oHTML:CLSID  := "Exontrol.HTML.1" /*{0036F83C-D892-4B7B-AA0B-BEDD8D16A738}*/
	oHTML:create(,, {10,60},{610,370} )

		oHTML:SetProperty("HTMLPicture","pic1","c:\exontrol\images\zipdisk.gif")
		oHTML:SetProperty("HTMLPicture","pic2","c:\exontrol\images\auction.gif")
		oHTML:SetProperty("HTMLPicture","pic3","c:\exontrol\images\colorize.gif")
		oHTML:WordWrap := .T.
		oHTML:Text := "The text displays pictures <img>pic1:32</img>,..., <img>pic2:32</img>.<br><b>1.</b> Select a single picture, right click to resize it<br><b>2.</b> Right click to insert a new picture"
		oHTML:ContextMenuItems := "Size[id=57680][edittype=515][border=0][min=16][max=128][freq=16][editwidth=-128][ticklabel=value = %i ? '<b>'+value : ( value = vmax ? '<fgcolor 808080><font ;6><b>'+value : ( value = vmin ? '<fgcolor 808080><font ;6><b>'+value : '' ) )],Insert[group=3](<img>pic1:32</img>[id=57763],<img>pic2:32</img>[id=57763],Others[id=1000](<img>pic3:32</img>[id=57763]))"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
26
How do I show a tooltip

PROCEDURE OnMouseMove(oHTML,Button,Shift,X,Y)
	oHTML:ShowToolTip("Just a short tooltip","")
RETURN

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

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

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

	oHTML := XbpActiveXControl():new( oForm:drawingArea )
	oHTML:CLSID  := "Exontrol.HTML.1" /*{0036F83C-D892-4B7B-AA0B-BEDD8D16A738}*/
	oHTML:create(,, {10,60},{610,370} )

		oHTML:MouseMove := {|Button,Shift,X,Y| OnMouseMove(oHTML,Button,Shift,X,Y)} /*Occurs when the user moves the mouse.*/

		oHTML:VisualAppearance():Add(1,"c:\exontrol\images\normal.ebn")
		oHTML:SetProperty("Background",64/*exToolTipAppearance*/,0x1000000)

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
25
Is it possible to assign a tooltip for items in the control's context menu

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

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

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

	oHTML := XbpActiveXControl():new( oForm:drawingArea )
	oHTML:CLSID  := "Exontrol.HTML.1" /*{0036F83C-D892-4B7B-AA0B-BEDD8D16A738}*/
	oHTML:create(,, {10,60},{610,370} )

		oHTML:Text := "This is a bit of <b>HTML</b> text. Select and right-click the selection."
		oHTML:ContextMenuItems := "<font ;18><b>B[id=57648][typ=1][align=1][show=1][ttp=Bolds/Unbolds the selection]"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
24
How do I get the selected text

PROCEDURE OnSelChange(oHTML)
	DevOut( oHTML:SelText() )
RETURN

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

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

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

	oHTML := XbpActiveXControl():new( oForm:drawingArea )
	oHTML:CLSID  := "Exontrol.HTML.1" /*{0036F83C-D892-4B7B-AA0B-BEDD8D16A738}*/
	oHTML:create(,, {10,60},{610,370} )

		oHTML:SelChange := {|| OnSelChange(oHTML)} /*Occurs when the user selects text in the control.*/

		oHTML:Text := "Press the <b>CTRL + S</b> or <b>CTRL + F</b> to search for text."

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
23
Is there any way to search through the text

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

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

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

	oHTML := XbpActiveXControl():new( oForm:drawingArea )
	oHTML:CLSID  := "Exontrol.HTML.1" /*{0036F83C-D892-4B7B-AA0B-BEDD8D16A738}*/
	oHTML:create(,, {10,60},{610,370} )

		oHTML:Text := "Press the <b>CTRL + S</b> or <b>CTRL + F</b> to search for text."
		oHTML:AllowFind := .T.
		oHTML:AllowIncrementalSearch := .T.

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
22
The selection is not shown when the control loses the focus. Is it possible to highlight the selection while the control has no focus

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

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

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

	oHTML := XbpActiveXControl():new( oForm:drawingArea )
	oHTML:CLSID  := "Exontrol.HTML.1" /*{0036F83C-D892-4B7B-AA0B-BEDD8D16A738}*/
	oHTML:create(,, {10,60},{610,370} )

		oHTML:Text := "<font ;12>This is a bit of <b>HTML</b> text."
		oHTML:HideSelection := .F.
		oHTML:SelStart := 0
		oHTML:SelLength := -1
		oHTML:SetProperty("SelBackColorHide",AutomationTranslateColor( GraMakeRGBColor  ( { 255,0,0 } )  , .F. ))

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
21
Does your control support Find/Replace

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

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

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

	oHTML := XbpActiveXControl():new( oForm:drawingArea )
	oHTML:CLSID  := "Exontrol.HTML.1" /*{0036F83C-D892-4B7B-AA0B-BEDD8D16A738}*/
	oHTML:create(,, {10,60},{610,370} )

		oHTML:Text := "This is a bit of <b>HTML</b> text."
		oHTML:AllowFind := .T.
		oHTML:AllowReplace := .T.

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
20
How can I get the current selection

PROCEDURE OnSelChange(oHTML)
	DevOut( oHTML:SelText() )
RETURN

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

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

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

	oHTML := XbpActiveXControl():new( oForm:drawingArea )
	oHTML:CLSID  := "Exontrol.HTML.1" /*{0036F83C-D892-4B7B-AA0B-BEDD8D16A738}*/
	oHTML:create(,, {10,60},{610,370} )

		oHTML:SelChange := {|| OnSelChange(oHTML)} /*Occurs when the user selects text in the control.*/

		oHTML:Text := "This is a bit of <b>HTML</b> text."

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
19
I've noticed that the text does not start exactly where the control is. How can I adjust/remove that margin

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

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

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

	oHTML := XbpActiveXControl():new( oForm:drawingArea )
	oHTML:CLSID  := "Exontrol.HTML.1" /*{0036F83C-D892-4B7B-AA0B-BEDD8D16A738}*/
	oHTML:create(,, {10,60},{610,370} )

		oHTML:Text := "This is a bit of <b>HTML</b> text."
		oHTML:BorderWidth := 0
		oHTML:BorderHeight := 0

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

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

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

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

	oHTML := XbpActiveXControl():new( oForm:drawingArea )
	oHTML:CLSID  := "Exontrol.HTML.1" /*{0036F83C-D892-4B7B-AA0B-BEDD8D16A738}*/
	oHTML:create(,, {10,60},{610,370} )

		oHTML:Text := "<c>This is a bit of centered <b>HTML</b> text."

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
17
How can I align the text to the right

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

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

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

	oHTML := XbpActiveXControl():new( oForm:drawingArea )
	oHTML:CLSID  := "Exontrol.HTML.1" /*{0036F83C-D892-4B7B-AA0B-BEDD8D16A738}*/
	oHTML:create(,, {10,60},{610,370} )

		oHTML:Text := "<r>This is a bit of <b>HTML</b> text, aligned to the right."

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
16
How can I turn on the control's OLE Drag and Drop operation
#include "AppEvent.ch"
#include "ActiveX.ch"

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

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

	oHTML := XbpActiveXControl():new( oForm:drawingArea )
	oHTML:CLSID  := "Exontrol.HTML.1" /*{0036F83C-D892-4B7B-AA0B-BEDD8D16A738}*/
	oHTML:create(,, {10,60},{610,370} )

		oHTML:Text := "This is a bit of <b>HTML</b> text."
		oHTML:OLEDropMode := -1/*exOLEDropAutomatic*/

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
15
Does your control support word-wrap, and if so how can I enable it

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

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

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

	oHTML := XbpActiveXControl():new( oForm:drawingArea )
	oHTML:CLSID  := "Exontrol.HTML.1" /*{0036F83C-D892-4B7B-AA0B-BEDD8D16A738}*/
	oHTML:create(,, {10,60},{610,370} )

		oHTML:Text := "This is a bit of <b>HTML</b> text. This is a bit of <b>HTML</b> text. This is a bit of <b>HTML</b> text. This is a bit of <b>HTML</b> text. This is a bit of <b>HTML</b> text."
		oHTML:WordWrap := .T.
		oHTML:LineNumberWidth := -1
		oHTML:DrawGridLines := .T.

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
14
Can I edit text with no formatting at all

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

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

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

	oHTML := XbpActiveXControl():new( oForm:drawingArea )
	oHTML:CLSID  := "Exontrol.HTML.1" /*{0036F83C-D892-4B7B-AA0B-BEDD8D16A738}*/
	oHTML:create(,, {10,60},{610,370} )

		oHTML:Text := "This is a bit of <b>HTML</b> text."
		oHTML:EditType := 0/*exPlainText*/

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
13
I've noticed that pressing the CTRL+B changes the Bold attribute. Can I change that behavior
#include "AppEvent.ch"
#include "ActiveX.ch"

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

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

	oHTML := XbpActiveXControl():new( oForm:drawingArea )
	oHTML:CLSID  := "Exontrol.HTML.1" /*{0036F83C-D892-4B7B-AA0B-BEDD8D16A738}*/
	oHTML:create(,, {10,60},{610,370} )

		oHTML:Text := "This is a bit of <b>HTML</b> text."
		oHTML:AllowShortcutFormat := .F.

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
12
How do I prevents shown the control's content menu

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

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

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

	oHTML := XbpActiveXControl():new( oForm:drawingArea )
	oHTML:CLSID  := "Exontrol.HTML.1" /*{0036F83C-D892-4B7B-AA0B-BEDD8D16A738}*/
	oHTML:create(,, {10,60},{610,370} )

		oHTML:Text := "This is a bit of <b>HTML</b> text."
		oHTML:AllowContextMenu := 0/*exHideContextMenu*/

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
11
How do I make the control read-only

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

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

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

	oHTML := XbpActiveXControl():new( oForm:drawingArea )
	oHTML:CLSID  := "Exontrol.HTML.1" /*{0036F83C-D892-4B7B-AA0B-BEDD8D16A738}*/
	oHTML:create(,, {10,60},{610,370} )

		oHTML:Text := "This is a bit of <b>HTML</b> text."
		oHTML:SetProperty("BackColorLocked",oHTML:BackColor())
		oHTML:SetProperty("ForeColorLocked",oHTML:ForeColor())
		oHTML:Locked := .T.
		oHTML:ShowCaret := .F.

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
10
Can I replace programatically a portion of text

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

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

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

	oHTML := XbpActiveXControl():new( oForm:drawingArea )
	oHTML:CLSID  := "Exontrol.HTML.1" /*{0036F83C-D892-4B7B-AA0B-BEDD8D16A738}*/
	oHTML:create(,, {10,60},{610,370} )

		oHTML:Text := "This is a bit of <b>HTML</b> text."
		oHTML:SelStart := 0
		oHTML:SelLength := 1
		oHTML:HideSelection := .F.
		oHTML:SelText := "<fgcolor FF><font ;18>T</font></fgcolor>"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
9
How do I select the entire text programatically

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

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

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

	oHTML := XbpActiveXControl():new( oForm:drawingArea )
	oHTML:CLSID  := "Exontrol.HTML.1" /*{0036F83C-D892-4B7B-AA0B-BEDD8D16A738}*/
	oHTML:create(,, {10,60},{610,370} )

		oHTML:Text := "This is a bit of <b>HTML</b> text."
		oHTML:SelStart := 0
		oHTML:SelLength := -1
		oHTML:HideSelection := .F.

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
8
How do I programatically add text to the control

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

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

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

	oHTML := XbpActiveXControl():new( oForm:drawingArea )
	oHTML:CLSID  := "Exontrol.HTML.1" /*{0036F83C-D892-4B7B-AA0B-BEDD8D16A738}*/
	oHTML:create(,, {10,60},{610,370} )

		oHTML:Text := "This is a bit of <b>HTML</b> text."
		oHTML:SelStart := -1
		oHTML:SelText := " <fgcolor FF0000><b>Inserted Text</b></fgcolor>"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
7
How do I programatically insert text to the control

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

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

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

	oHTML := XbpActiveXControl():new( oForm:drawingArea )
	oHTML:CLSID  := "Exontrol.HTML.1" /*{0036F83C-D892-4B7B-AA0B-BEDD8D16A738}*/
	oHTML:create(,, {10,60},{610,370} )

		oHTML:Text := "This is a bit of <b>HTML</b> text."
		oHTML:SelText := "<fgcolor FF0000><b>Inserted Text</b></fgcolor> "

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
6
How do I get the unformatted text

PROCEDURE OnSelChange(oHTML)
	DevOut( oHTML:CursorText(oHTML:SelStart(),oHTML:SelLength()) )
RETURN

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

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

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

	oHTML := XbpActiveXControl():new( oForm:drawingArea )
	oHTML:CLSID  := "Exontrol.HTML.1" /*{0036F83C-D892-4B7B-AA0B-BEDD8D16A738}*/
	oHTML:create(,, {10,60},{610,370} )

		oHTML:SelChange := {|| OnSelChange(oHTML)} /*Occurs when the user selects text in the control.*/

		oHTML:Text := "This is a bit of <b>HTML</b> text."

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
5
How do I provide my own menu for my images (emotion icons)

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

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

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

	oHTML := XbpActiveXControl():new( oForm:drawingArea )
	oHTML:CLSID  := "Exontrol.HTML.1" /*{0036F83C-D892-4B7B-AA0B-BEDD8D16A738}*/
	oHTML:create(,, {10,60},{610,370} )

		oHTML:Text := "<img>1</img> Right click the image <img>pic1</img> to get resized."
		oHTML:Images("gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTqlVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/yNAOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=")
		oHTML:ContextMenuItems := "Insert[group=3](<img>1</img>[id=57763],<img>2</img>[id=57763])"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
4
How do I display images inside text

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

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

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

	oHTML := XbpActiveXControl():new( oForm:drawingArea )
	oHTML:CLSID  := "Exontrol.HTML.1" /*{0036F83C-D892-4B7B-AA0B-BEDD8D16A738}*/
	oHTML:create(,, {10,60},{610,370} )

		oHTML:SetProperty("HTMLPicture","pic1","c:\exontrol\images\zipdisk.gif")
		oHTML:Images("gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTqlVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/yNAOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=")
		oHTML:Text := "<img>1</img> Right click the image <img>pic1</img> to get resized."

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
3
How do I allow types only to be available on the control's context menu

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

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

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

	oHTML := XbpActiveXControl():new( oForm:drawingArea )
	oHTML:CLSID  := "Exontrol.HTML.1" /*{0036F83C-D892-4B7B-AA0B-BEDD8D16A738}*/
	oHTML:create(,, {10,60},{610,370} )

		oHTML:Text := "Right click the selection."
		oHTML:HideSelection := .F.
		oHTML:SelStart := 16
		oHTML:SelLength := 9
		oHTML:AllowContextMenu := 61440/*exContextMenuFormatStrikeout+exContextMenuFormatUnderline+exContextMenuFormatItalic+exContextMenuFormatBold*/

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2
How do I programatically select the text

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

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

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

	oHTML := XbpActiveXControl():new( oForm:drawingArea )
	oHTML:CLSID  := "Exontrol.HTML.1" /*{0036F83C-D892-4B7B-AA0B-BEDD8D16A738}*/
	oHTML:create(,, {10,60},{610,370} )

		oHTML:Text := "<font ;12>This is a bit of <b>HTML</b> text."
		oHTML:HideSelection := .F.
		oHTML:SelStart := 0
		oHTML:SelLength := -1

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1
How do I assign a text to the control

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

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

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

	oHTML := XbpActiveXControl():new( oForm:drawingArea )
	oHTML:CLSID  := "Exontrol.HTML.1" /*{0036F83C-D892-4B7B-AA0B-BEDD8D16A738}*/
	oHTML:create(,, {10,60},{610,370} )

		oHTML:Text := "This is a bit of <b>HTML</b> text."

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