231
ImageSize property on 32 (specifies the size of control' icons/images/check-boxes/radio-buttons)

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oAppearance
	LOCAL oItem
	LOCAL oItems,oItems1
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:ImageSize := 32
		oRibbon:Font():Size := 16
		oRibbon:PopupFlatImageWidth := 36
		oRibbon:PopupAppearance := 4/*EtchedBorder*/
		oRibbon:LocalAppearance := 4/*EtchedBorder*/
		oRibbon: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==")
		oAppearance := oRibbon:VisualAppearance()
			oAppearance:Add(1,"gBFLBCJwBAEHhEJAAEhABfICg6AADACAxRDgMQBQKAAzQFAYbhkGCGAAGMZxRgmFgAQhFcZQSKUOQTDKMIziaQAGgkNQwCSLIwjNIsBxPFKVQChEYxSjKA40SJNUgyj6CCY+QLIE5PfQgAL9I6eJABCCSQKkYx0HScRiwPBIbAZAYhCZqaKhWgkKI/WBQIABRDVLx5ESiLRtKy7Mq2bpvXBcNxXHalaztO68LxvKyqHb5fJ/PpgL4YHgmC4NQ7EMRwF6rfbyfZ7Xg/ORPTijZ4sdzMHTzJyscx3HqfaBoOaZU5eMLceTUMofHIndxCcasPbsOatVqjG5sYjcGC3La9cz3Pq/bpuDCbMxuaK1TrYXr1TTrcofBDldAxXRKDxRDWVhLnYOw9i6XxzjuXprCaOoKB6EwbiCZZCGOdZYlcT4xHmbhMnwNxtn+G5bmqdZ7n4Pw/i+X5zm+dQ9g4CAFjsfAJheOI8HsDoWDWTB/lwSAQkmA5PEgRYoDyDwYFY" +;
		"FoFmGCBmBqBphDgRJ0gOTIYBGRB/lyRh0iSCZbjYWJzgWDwIjYLoLmMCJGDKDJjBgWgqG6YhyhGHRzA2aJ1mCABOAiOJvhCZBJBYRoRmSCQmEqEQimkAZgg8TZnDCV4UkmCUmBKZYJGYWoWCUUhiFMNZckNUh2GENoaGaGZmgmJhqhqZpGGIEx2GYIxSGGGJdggWJth2Z4JmYeoemeSZ2H6H4hGmQhihyTRHGYLg7CiCgmgqIpokoNoOiOaJ4jqAochqaZGgaCxpAoZoaiaaJqEmWIcGgShcnCJwqEqFoR3YOoFlgchflqNouiuawHmWSYqGkWZQhcatzmaOoumuSp2j6L5bBaKo0GQKRnGGCxqiyCwmkqMpsksNpOGUGI7A0ew1G0Rxlg0PptgsZuDG2Sx2l6N5tnYNZZjUDRXDCVo5l2FoymqOpukuNpujubwLjmWY5k0ZwxkaFxYlWdp6j6b5Lnafo/nABQdg2FxcUsY5BkmXAkmeQpckwNRrkKTh" +;
		"8CSHZBk4NwyC4KxxgMDwakOMZDn8GgwnGAo2C4cwthMcwmCcMoHBMHRehwTIghySYNksZwcH4HBMEsHx5hyPItiweYxnwSZEH4Mozn0fR+DMAo7EYJ50gkdZelKdNql2UgJn0GIukwH4HicQRai2GI4mSVpNl0dZGledgNgcYpYDWUx3FsOQi5YV5anaTY3G6W53A2RxylydxFjiaxEFCCgBBAQ==")
			oAppearance:Add(2,"gBFLBCJwBAEHhEJAAEhABcoFg6AADACAxRDgMQBQKAAzQFAYbhkGCGAAGMZxRgmFgAQhFcZQSKUOQTDKMIziaQAGgkNQwCSLIwjNIsBxPFKVQChEYxSjKA40SJNUgyj6CCY+QLIE5PfQgAL9I6eJABCCSQKkYx0HScRiwPBIbAZAYhCZqaKhWgkKI/WBQIABRDVLx5ESiLRtKy7Mq2bpvXBcNxXHalaztO68LxvKyqHb5fJ/PpgL4YHgmC4NQ7EMRwF6rfbyfZ7Xg/ORPTijZ4sdzMHTzJyscx3HqfaBoOaZU5eMLceTUMofHIndxCcasPbsLpOS5LNKsaxmWLYdhFdTxQi6LpvfA8BwXC6JY7heRYRbFbYxRjGNi1TS7G4nGKd5WGuL4UHwI4VkaYxii8V4pgQMgVBQdQ5iCTYGi8T4vlWbJ3nuPg+l+H5AlSCg6ByPBoE8Ap3jqYxhBido5g0OgOGOGI4CsSpCCAcgcAuEokiEN5NCKfJ9DyTRjnS" +;
		"cg1CEYxOBmBpPCgagdgcIZoHoGIFA4AxQkCAxKAgKBwgGSpIBCZhjF2E5UnQPQMiMCJBCIBwxkSQgsgo+JtDKT4ziiQw+k6EwAnsOgLnkHI+yCQ4iEuE4klkPhShEJBpAoPgymOMoaDgHBjFMBgyD0HYTiCZSZhIIIGC4ChiHSew5kwM5omILZPiOBI0hwZw5kodIdA+M4Uj4PxOmMSJ9DuTQzmyZgviceZagaHVfj4awwmaAh2GUIYmCOEZZDaDRDFGdwcg4EwyHMN4LBOaJbCoaZqgKH8qkMfIyD8DozDyfA7A0Coui0OpMmOZJdCsahKg6NooioChwmEMxLEoXJbDUTRXGSUgykyMgQG0GpPHMdI3D4TRCgSeQ0kmaw+lGNAtCOZJVCiT5DhyRQwAqMg0EoDBBGEGAsASC5yiSCw+k4Mp6lWNQuksTpRjMTxDGzJwGmGMpDDKXYTECSAxl6Q5olkK4PgMMIVkASRMBMBgzEkaZEjsNALhIZA6AeQB" +;
		"gk0ZJEgAAJ0CIAgODMNIsD6DRih9uYwFyAwfCUb5ijmbI+gwdxkk8MZMGeMpPCkDxzBiC5MHMPJLDSSROFMLIoBEQogEMFJPnENYQGgE4DCOaJfC7tYkhGTQ0kyWwykuXpMiyRpKjKR4wngM4JmOWJACCdYtHMWw+Eych4nINYLAEYA8AgdAEEsQZajaQoog4GxPiMVIolcdxNG8XZVkmNoRwWRVBlFeFEeAZQJgnFiHgHwcAhjhHgGMSI5xki2CyA4EQsA3i0HkBsLwKRFgAHcPkHopBJBcBeDUYI7xyDOHqKkWo2hLCsDIBIY4qQ5A8DoMMYwOAqCSBGKgU4yB2iDBwIgB4hxQgAAWNgBoAgsBdEcBUQ4sQ9A/HqD0JI8RpBzH2OYVgahLBHFiJQJweQiDhDUE4SAARQAzFsG0EQwA6AOWSBkFgVAIBCHeGERQFQiCQHeFkC4vkiB8DyB4F4QxVDvGMNEOQexMjlBeOAKQiQLgfDA7QEAaRiBdEkH8" +;
		"TI7AZiFBAGYBIABWjYBiGACioQ4C1A+AMMgWhfgxHgPsT4URIB0COKgPgjRwiAB8AYUArxBgCF6J4GY5hrAOCAPAAoGRRCsCIMEXATXfgAF8BMJwURuEQDgD4Q4OBoAeHGFgLIwQrC2D0JoSQ+QvhrHoSgQI8AbDFGID8C4Ah6BQAQAASACwgCYCMAUMARAvCKAiAMCAokeCKBEOAKgCBoDaHuMsEAqwJDiACDURg8R6gPCyDofYWAhgoDIJ4ZAuhoiGAYGgRoQw/A0GMMga4GwxiEDeIYYInATCDBQAoBAwAoDlA0KMBoVRGiDGwDQUYIRsgaGGDgM4LAwDWB8EcIA1APhjEgGQVwgRIgjFIIQHokgZA+CSEkLIKQSjHAwMsCwDAsAEB2ABTIwRwD6A8CMToSxkAxE4HYIw+BsgbBEDAHYBwojCBoIYFgXSjABE4MsHIbQWhlGILQS4UhvBdAUKEEwHgxDAAABQQQUAhgKHiDwE4JS4A7BGLQZwCR4g" +;
		"aBEMUYAqgKApHgGwVAIRNgvBMMQXImwZDtE4I8UIyAZCDCAE8AwrhgAdEEBACQLRCg4FEB4AYtA7CdEiPQMoJAMDNCkOMCAXAFDhH0D0Q4EgfAaGSK4NYzRUj9BuCgAgswOBjB4Fqpw8B2ADAwE4A4Qx2DAE6JIaQPQGhAGKBcIQ5B5gHByKIFARwADbAyKUfgdBKBBGyEcVIAB/ijHoIoSA0gdBNl+OATYERZgBGSDYWIWAUCEGKA4FAhR7CIBtYQGYZg4CMAiKEcAOwkBjHWE8Z4lQgA+DkBoTohwwCeAaMEEgBQCCABgHMRwQRhhMEWFQd4HwZgwDqFESItAbAGEANCpINAzANCCJkK4ah+heFYBURwsQrS2CsMYMoWGBhYDWI0EInQgiApXaOVI1QFDsC8MUNoMBMA1HMJga4eh+BeAWOgNNowGjYzCGAAwax+iJBeBVT4gxoBIAGFsJFBxgBiGKFkKQ7g5DFFQEcAo4AzDDACKEQQLgCiJDYB0M" +;
		"gRBCCQAgQEA==")
			oAppearance:Add(3,"gBFLBCJwBAEHhEJAAEhABQ4Fg6AADACAxRDgMQBQKAAzQFAYbhkGCGAAGMZxRgmFgAQhFcZQSKUOQTDKMIziaQAGgkNQwCSLIwjNIsBxPFKVQChEYxSjKA40SJNUgyj6CCY+QLIE5PfQgAL9I6eJABCCSQKkYx0HScRiwPBIbAZAYhCZqaKhWgkKI/WBQIABRDVLx5ESiLRtKy7Mq2bpvXBcNxXHalaztO68LxvKyqHb5fJ/PpgL4YHgmC4NQ7EMRwF6rfbyfZ7Xg/ORPTijZ4sdzMHTzJyscx3HqfaBoOaZU5eMLceTUMofHIndxCcasPbsLpOS5LNKsaxmWLYdhFdTxQi6LpvfA8BwXC6JY7heRYRbFbYxRjGNi1TS7G4nGKd5WGuL4UHwI4VkaYxii8V4pgQMgVBQdQ5iCTYGi8T4vlWbJ3nuPg+l+H5AlSCg6ByPBoE8Ap3jqYxhBido5g0OgOGOGI4CsSpCCAcgcAuEosiYN5NHMOJ+D4TpTnS" +;
		"eQ7CEY4uBmBpPhgagdgcIZoHibIEyUBJZDQIJShoCgcCAcoyAQOYYlcZJ1D0DxDCiQgwEiAZMHEMJLFKPJ9D2DoDnidQ4k+Y5QmKEROBkIhKD0JIZDIS4TGUCQuEeEJjnOIg8CuY4RkYNgwGMM5RllGpThDRYIGKZIpCkJFUH0PINyWcQ3CaaZCG+HBnEOTJhD8Tx4GoeQ/GcaZSHOH5nCmQhshoZhihYYwhiYA4RlkNoNEMUZ3ByDjwEsPxOnMaJ9DuDR6F6GYmCmKh0nANtMioP4Gg8aoSiIO5NhodociqaY6GaFYkEyOg8lsNRNTaUgykyMgQG0GpPiONJbD8DpDEyfA6k0KwOkWMQsGsAJU0SagwkoJQJDIPISCQCJTGSUwyGaM4KkmMgtksHpFjAZ4TGCBAbgaSpcksdhNAMIJHHsD5TjSWWMAMOpwjyLwbk6cAz0KRJiDkDYzESCwiggcgcgYIQwCIEINCMCITj6TVxkMXp2j0cQLlCTo7E2F4" +;
		"ymkMZdhMPJHDGHpLAyVg+k4UwrCCSIyByDJ8DuDY8CiWY0kiXAXC6QJwFKGIjCeJpjgyezjlyDw6klHx5myRoMGwZwbkcToTEiew4kwbQfEmUgPkOKJUD4DpTHSHQmgkXI/ASTA1g0XIEDMTBimyfI7jSLYHEiUoPk0Fw/kadAsHGao8A0A5smEMJ2mNyg5gzJZwDgCpChyIZVyIZwFCMJEPASRkBqE+IcHInRcDxA2H4bIsx0AtDsIBpwZwYicD6BscwDwUBgHCIYaIfgtiVH2O4WgUwJjEFeAEQA7y4hMCiBMS4aRdB9A4CYE4LxljyBMHcDItBxinDCLcTYmgejBFQ9UTg9gFBOEmAQTI7A4iZGMGkQAWQ7jYA2HIL8BRAjDG4HcCwARbjZHiNoDw1nLDnGyNINQ+wjCpBMEgcovQUgICQJEcgWRuBvAyJ4d4ugpCUAINcHogxIgnDiM4N4axzD3F2JMTY/hRqYF6FsWIxhYAGGoAALQYgYirBwBE" +;
		"BwpAjBEAAIEIYsA2gOHCMAGgXAACIDmMITAUgFABH0D0I4WwvhNFGMAOIvxRD2GKNcMA8gjAPDCPwBogRPAxA8PgRwZRICYDED8RAXQEghEAN8DIgwIBdB4JYWwMgtiQHoFQKAiRFguFKGwGQhglDsEOVwEQQRkCKBwOIHgSREDRBYHEXQcQdD7GIGARQHRxipBrMobgewDCUCADsEYWAzgMHKHQDQxxsDzA6EMfAeQHB4GQDkUYPA0iECiKoGgRhcDdA2GMQA8AOCjDSPgHI4QnApAKBICwHg1A+BcAwcYsgbjGGQNkCIgRsA6EcBEWANADjsB0B8YYzQQDIGSBcEYZBCCPEkFIHQSgkgZAwG4IwBAbAYGGAgL4Ch4g8BOCQAA2KKC0GcAke4AAXAFCoHkDw4xbBFEcJkE4JRSiEFeJYKQVRMgJHODwX4xAgC/AsIIZAeAHDRG0HYI40RKCLEGDUI4jAghwBWIceA+whCpHMFYZYOQxglDMHMBQGxYj" +;
		"VHiAoBIPgfgHGwPsHYJRSB6A0IERQLhCjJHMA4OQoAoCOACLYGYSx8DpBQIMWQdRnDRH+DsE4fB3CeAmM67kAAXBFEIDYDI7wLBtEoEIfYNwjiUGGJQYQMAjCHEAO0C4zxW29CoCgfIxR9AKA6J8BgUAIhDGMIoJ40hqgwCgKETgnBhhqCGI0AIqgZhGDANQDIlBDCRGkCoJISR0g1BSKQOgfAzBRG0DYHARh4DeDAOwANuw8ApCKKkYg/RPhjBsH0J4yg5hPGWN0GwFBHQBFaDoQIURljFAoB4GgzRVzbBECQFQRQoguHGHANwDRdCKy8CgSIGwhhoDYJYYI1giBICSAEgI=")
			oAppearance:Add(4,"gBFLBCJwBAEHhEJAAEhABUYCg6AADACAxRDgMQBQKAAzQFAYbhkGCGAAGMZxRgmFgAQhFcZQSKUOQTDKMIziYBYfgkMIgSbJUgDGAkRRdDSOYDmGQYDiCIoRShOMIjHLUXxtDaIZwhEAoJb+RgAUY/cTzaAEUwHHiTKInaCQShsFYJUJAdRURQ9EwvCIZBpEWwLChENQwWLCNj2TScBwjCyqbale45ViqdoDU5EUiXJJ8ZxnECfYyrGjaMpCeKBUrGYTVRBIMxLLSia5oeJqMrnBpNVrIUgXCAGFwHK6BcauXIIDp6XoWWRbAAWDpVVzNNC3YzkCIceADHKiXxmVz4JLdGZ1QTGID2XaYaxWK4oZjsVSc4KDHbETbHFi9Fo3NaaxGisew+GYc4HlCR5NAAAIIEkQJSGMOgdE4RhYDwJJsAaAYQgmPpolCWgSCiBJzjcEIAkQXIBm8d5UhOQgCDUIBDDJDhgggJgKgKYJIDSVoDk8KBFF4OohEMZgWDs" +;
		"YYDj4GoGmGSB2B6B5iAiBgYDsYRjGSbIJo4RgqDuIpIAoLoLmMCJGDKDJjJiLA7xqUAAgGTwYnYPoPmQCQGEKEJkEkFg9gGY44BoRoSmSSQ2EKEggHgRhShSZRJFYVoVmWCRmFKFAgGOTheheZgJgYYoYmYSYWGaF4lkMMJ0hqZpJjYbobmcCZGHKHJmjmJh0h2Z4JmYcIaE8WZ2H6H5oAoBoCiCaBKBYfdjGoJoKiKaJKDaDojmkChGgmIgpCoVoWiWaJZiSd4mmmSh2h6J5qAqBoiiiaY5iSeIpmqComiqKpqkqNouiuah6hqMIsmsSpWiuGhP1kOoumuSp2j6L5sAsBo54gKwWkaMZsgsJpKjKbJLDaRYxYWRpSjSbIZiSe41m2CxmlqNptksdpejebR5iSfI4m4S4W16boLiaao6m5fJ9jubwLkaco8m8S5WnaPZunuOp4j6b5Lnac4SA0PAGlgP4wEwFwGkGcIMCcCpCnCCxiA8NYAAmMJfkSbh" +;
		"FCcFpFnGDBnBqRpUhuEwTDeZ5lHCfw6HIQxLCaAxygyJwqgGcATE4FA6hWY4tjEAAQBAgIA==")
		oRibbon:SetProperty("SelBackColor",0x4000000)
		oRibbon:SetProperty("SelForeColor",AutomationTranslateColor( GraMakeRGBColor  ( { 0,0,1 } )  , .F. ))
		oRibbon:SetProperty("Background",70/*exCheckBoxState0*/,0x1000000)
		oRibbon:SetProperty("Background",71/*exCheckBoxState1*/,0x2000000)
		oRibbon:SetProperty("Background",72/*exCheckBoxState2*/,0x3000000)
		oItems := oRibbon:Items()
			oItems:Add(""):ToString := "Popup[img=1](Item 1[chk],Item 2[chk=1],Item 3[img=1],Item 4[img=2])"
			oItems:Add("",1)
			oItem := oItems:Add("Button",2)
				oItem:Image := 2
				oItem:ShowAsButton := 19/*exShowAsSelectButton+exShowAsButtonAutoSize*/
				oItems1 := oItem:Items()
					oItems1:Add("Item 1")
					oItems1:Add("Item 2")
					oItems1:Add("Item 3")
		oRibbon:Refresh()

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

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oAppearance
	LOCAL oItem
	LOCAL oItems,oItems1
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:ImageSize := 16
		oRibbon:PopupAppearance := 4/*EtchedBorder*/
		oRibbon:LocalAppearance := 4/*EtchedBorder*/
		oRibbon: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==")
		oAppearance := oRibbon:VisualAppearance()
			oAppearance:Add(4,"gBFLBCJwBAEHhEJAAEhABUYCg6AADACAxRDgMQBQKAAzQFAYbhkGCGAAGMZxRgmFgAQhFcZQSKUOQTDKMIziYBYfgkMIgSbJUgDGAkRRdDSOYDmGQYDiCIoRShOMIjHLUXxtDaIZwhEAoJb+RgAUY/cTzaAEUwHHiTKInaCQShsFYJUJAdRURQ9EwvCIZBpEWwLChENQwWLCNj2TScBwjCyqbale45ViqdoDU5EUiXJJ8ZxnECfYyrGjaMpCeKBUrGYTVRBIMxLLSia5oeJqMrnBpNVrIUgXCAGFwHK6BcauXIIDp6XoWWRbAAWDpVVzNNC3YzkCIceADHKiXxmVz4JLdGZ1QTGID2XaYaxWK4oZjsVSc4KDHbETbHFi9Fo3NaaxGisew+GYc4HlCR5NAAAIIEkQJSGMOgdE4RhYDwJJsAaAYQgmPpolCWgSCiBJzjcEIAkQXIBm8d5UhOQgCDUIBDDJDhgggJgKgKYJIDSVoDk8KBFF4OohEMZgWDs" +;
		"YYDj4GoGmGSB2B6B5iAiBgYDsYRjGSbIJo4RgqDuIpIAoLoLmMCJGDKDJjJiLA7xqUAAgGTwYnYPoPmQCQGEKEJkEkFg9gGY44BoRoSmSSQ2EKEggHgRhShSZRJFYVoVmWCRmFKFAgGOTheheZgJgYYoYmYSYWGaF4lkMMJ0hqZpJjYbobmcCZGHKHJmjmJh0h2Z4JmYcIaE8WZ2H6H5oAoBoCiCaBKBYfdjGoJoKiKaJKDaDojmkChGgmIgpCoVoWiWaJZiSd4mmmSh2h6J5qAqBoiiiaY5iSeIpmqComiqKpqkqNouiuah6hqMIsmsSpWiuGhP1kOoumuSp2j6L5sAsBo54gKwWkaMZsgsJpKjKbJLDaRYxYWRpSjSbIZiSe41m2CxmlqNptksdpejebR5iSfI4m4S4W16boLiaao6m5fJ9jubwLkaco8m8S5WnaPZunuOp4j6b5Lnac4SA0PAGlgP4wEwFwGkGcIMCcCpCnCCxiA8NYAAmMJfkSbh" +;
		"FCcFpFnGDBnBqRpUhuEwTDeZ5lHCfw6HIQxLCaAxygyJwqgGcATE4FA6hWY4tjEAAQBAgIA==")
		oRibbon:SetProperty("SelBackColor",0x4000000)
		oRibbon:SetProperty("SelForeColor",AutomationTranslateColor( GraMakeRGBColor  ( { 0,0,1 } )  , .F. ))
		oItems := oRibbon:Items()
			oItems:Add(""):ToString := "Popup[img=1](Item 1[chk],Item 2[chk=1],Item 3[img=1],Item 4[img=2])"
			oItems:Add("",1)
			oItem := oItems:Add("Button",2)
				oItem:Image := 2
				oItem:ShowAsButton := 19/*exShowAsSelectButton+exShowAsButtonAutoSize*/
				oItems1 := oItem:Items()
					oItems1:Add("Item 1")
					oItems1:Add("Item 2")
					oItems1:Add("Item 3")
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
229
How do I get the item's value without the place holders (exclude mask-characters)

PROCEDURE OnEditChange(oRibbon,Itm)
	DevOut( Transform(Itm,"") )
RETURN

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

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

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:EditChange := {|Itm| OnEditChange(oRibbon,Itm)} /*Occurs when the user alters the item's text box field.*/

		oRibbon:ToString := "Mask[edit=98][editwidth=-128][edittype=2][mask=00000],Mask[edit=98][editwidth=-128][edittype=2][mask=00000;1]"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
228
How can I create a progress/step bar for installation

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oAppearance
	LOCAL oItem,oItem1,oItem2,oItem3,oItem4,oItem5,oItem6
	LOCAL oItems,oItems1
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oAppearance := oRibbon:VisualAppearance()
			oAppearance:Add(2,"gBFLBCJwBAEHhEJAAEhABfQCg6AADACAxRDgMQBQKAAzQFAYcBqGqGAAGIaRWgmFgAQhFcZQSKUOQTDKMIziYBYJhEMgxDREIwjEKEIhoGQcJAGQBJCjWGodQLOEgwHIERQjEyUpIgFBIYhzEAZJ5jOioaBOCY0TxCNCQG5oOBIACqariagBUoKUwADCNdIVfIUQBFDYZabjeooJpmWJWRbJQyiLaVaQSGoYLqgO6LajWIJORpZcB1BK2Cy5FSWJamCYpEwXBY6TpIFKXDIsOSDIqvaKpDI4WxMH4JYELOy4aYPJgAaYweSTTi8CYzMSOLIpOCcCADH4DWjAeh1DAdPzdNytY4uO5YRrzRZ5RDZOgQTq4AZrXbHJpwehZMwyDmEwMmieBch4ExDk2Cxvi4HAMi6MhTlQGBrnsA4dhQapNGqXBzCMfgaj+DgHkSYRfHiVx+EeSxIAAaBYEaVZfHQXpXngCBCEUAYkGMHQHFGSBlEGUISCgFRAkQIQ2BI" +;
		"RoRFQDAoEIW4WgkawGBEcRSBOAQQhaJgmgmYoIiYKoKmKSI2C6C5jAiLAkAcDpYk4NYNCMaJmDiDpjHidg6g+IxIhYMYQmQSQWEaEZiHifhKg8JI5AIToNiQKQiFKFJlEkGhNhWZJJGYT4QFAORWF6F5mAkJhahYJY5hYUBAmOeI4n+GpmkmNhuhuZwJkYcocmcSZWG+C4mEmZhjg8EIZDYaodigCgGgKIJnBmYh7hmKB5hwAIZCeegSg6I5pAmNoGiIKRIn4fYiGMSg2hGJppkmVoTh6KRKF6FYmGKWh2iaKZnHiNoghkKgqi6JILTKRonieaYJDqLYtGaGoWjKLppBqUojDsax6n6OYsCuSwWgSL4qkmIo4i0aYrBqTodCyCRqkGK4mFsNpPjWaoYjLlRsjsCovgqbYLgYcI0GxhZejmbRrgqWIvi0Ox2lSOhuisPoTjsbh7j6Oo8G4KI6nSNQvGsEp4jgb4rhqfI7i2eIqn+Phqikcpcj0bZbkMB4" +;
		"um6TALASJQwmwPoxjkL48E4NpFHEapPAmGRxhuIp3kcbBbhKFpEjCQ43BySQpkzjZKC+W4DCySRxnsUwhh+Mg8k8F5NHEPJeDySpzioPwui+c5sisOZQGobQPDaTAzn0HxIksc5MicJ5CmwPJLE+R4tiwao1jAdANF6AZSjWKJ2iKGB2E2FhFkCcoZEcZpanaSM7FucItjccpbDcDRLAoHUXIKANACICA")
			oAppearance:Add(1,"CP:2 -8 0 12 0")
			oAppearance:Add(4,"gBFLBCJwBAEHhEJAAEhABNoDg6AADACAxRDgMQBQKAAzQFAYcBqGqGAAGIaRWgmFgAQhFcZQSKUOQTDKMIziYBYJhEMgxDREIwjEKEIhoGQcJAGQBJCjWGodQLOEgwHIERQjEyUpIgFBIYhzEAZJ5jOioaBOCY0TxCNCQG5oOBIACqariagBUoKUwADCNdIVfIUQBFDYZabjeooJpmWJWRbJQyiLaVaQSGoYLqgO6LajWIJORpZcB1BK2Cy5FSWJamCYpEwXBY6TpIFKXDIsOSDIqvaKpDI4WxMH4JYELOy4aYPJgAaYweSTTi8CYzMSOLIpOCcCADH4DWjAeh1DAdPzdNytY4uO5YRrzRZ5RDZOgQTq4AZrXbHJpwehZMwyDmEwMmieBch4ExDk2Cxvi4HAMi6MhTlQGBrnsA4dhQapNGqXBzCMfgaj+DgHkSYRfHiVx+EeSxIAAaBYEaVZfHQXpXngCBCEUAYkGMHQHFGSBlEGUISCgFRAkQIQ2BI" +;
		"RoRFQDAoEIW4WgkawGBEcRSBOAQQhMbIkA6IhoiIJ4KGKSIuC6CojAiNgxguYwolYNINmMOJmDaDojgiJAkAcDpYn4QYQCQKQWESEZkDkJhGhKJAIhYPYTmOSRGDuFJlAkUhShUY4JC4WoSCWOQyF6EIkmkXhihWJhJGIY4ZiYWJCF2GplkmNhfhMUA5iYcoaCcSYeHaHJDimMhvh6Z4kCYSxqGgCgEngO4NioDoFiEKBqCaCIimgeg2gqI4okoPtHGkShChaIBpgMDh6iaZppC4fobimGgKhXVBqhKJoomqCoWimIYqBoAoch8KZZkAAIeiqVomieKorgqXo6iqa5KDaNRpiqewGjKK5rnMDo7i4a5bB6SovGwWwKjAOxpnsPhCjEbI7CKVo1G2Cgyk2LBtCsDpchcbRLCaYo1m4OxklqNptlkepRjOLQ6n6Zo7m4W5Gj6L5ukseppjgLprkqcI5C+SoSmiK5ujsfwCDsbgbnaepBnAa5OjWQAQDuVp" +;
		"PkEb48EcCI/i8SxzAGPZwDwQwTkacIal6f4SDEfA6jSPhxw6EouDGexDA2QJyCkIwakkcwMh8FJCm8bI3BiQQyEzo5HCwXIHCyT5lmyPw6kwc5Kn8PpNmwTJnDuUQ0kqMwVkqKw9AMDpQjSPQOlWSh0HyWpti0dRtFcCJKGYDIvEiNw1E0NxekIdgMgMYpWiQDYXF2WYvk2JpqlqdQsjsJUXAbR9C+E+IYNQOwPBxFcGwfYzRji5CeLsUo0xbhwB4E0F4vR3C6EKJ0YgbwOBWDOFYdonA7AzF2PALgjRWjCDiLoZw2xmByC6A4Coyg4i8BcPsH49AODXBmMkagPBWC7EWPIDoXwKjODeNQewxQxD3A6M8Oo3R7idHWFMa4YA0BPD6OEfAngXiNG+PQXwThQjjHyJ4N4nRyB2F8FICQdRcgoA0AIgI")
			oAppearance:Add(3,"CP:4 -8 0 12 0")
			oAppearance:Add(6,"gBFLBCJwBAEHhEJAAEhABFIDg6AADACAxRDgMQBQKAAzQFAYcBqGqGAAGIaRWgmFgAQhFcZQSKUOQTDKMIziYBYJhEMgxDREIwjEKEIhoGQcJAGQBJCjWGodQLOEgwHIERQjEyUpIgFBIYhzEAZJ5jOioaBOCY0TxCNCQG5oOBIACqariagBUoKUwADCNdIVfIUQBFDYZabjeooJpmWJWRbJQyiLaVaQSGoYLqgO6LajWIJORpZcB1BK2Cy5FSWJamCYpEwXBY6TpIFKXDIsOSDIqvaKpDI4WxMH4JYELOy4aYPJgAaYweSTTi8CYzMSOLIpOCcCADH4DWjAeh1DAdPzdNytY4uO5YRrzRZ5RDZOgQTq4AZrXbHJpwehZMwyDmEwMmieBch4ExDk2Cxvi4HAMi6MhTlQGBrnsA4dhQapNGqXBzCMfgaj+DgHkSYRfHiVx+EeSxIAAaBYEaVZfHQXpXngCBCEUAYkGMHQHFGSBlEGUISCgFRAkQIQ2BI" +;
		"RoRFQDAoEIW4WgkawGBEcRSBOAQQhAVJCCWIhoiIJ4KGKSIuC6CojAiNgxguYwolYNINmMOJmDaDojgiJAkAcDpYn4QYQCQKQWESEZkDkJhGhKJAIhYPYTmOSRGDuFJlAkUhShUY4JC4WoSCWOQyF6EIkmkXhihWJhJGIY4ZiYWJCF2GplkmNhfhMUA5iYcoaCcSYeHaHJJGmMhvh6Z4kCYSxqGgCgEn+IJoEoFoGiGaIKCaCoimiSg2geIBpAMDh6iSZppC4fobikGgKg6JppkodoeiIaYaAKFIfCkWZAACHoqBaJofiqapKjaD4qGkKoWiSHppHqTowDCapqmaOonCses9C0ag6l6O4wmwSo+imL4rCsAoyh+awLBaToxCuWwukkQJsgkepCjObYKjqUYsmkaxSlKLYslsZpiiebY6n6Xo3C2exemOOpomuFpTimbZ7Faao7C8SoCjCHxua4QY4G8W52gaO4khsKpokCZArk6fo/jADAKnqPBkAwGw" +;
		"Hj0bY8CsDJBCSDA7A+OwrHwSwUkacRsamRhvhwTwLDscZcHqWZEHIHBunuKhyGudwJkocg5HcJZLGybACGCTAyCoYp8k0MZ7l6b5MHO/w8jqcxpjsGo8jOPVAFEaxMmMA5MnSKvlD4LwMHMSZUGwXROl+UZ0BqBxYkmc5sioSJXCSHRDF+Kw1iwbxklmNh7hMYZQCWbBrGyWxpl2JxwkCG4PYpQbi7DODsRozwtjwRGAUYI8BOArCmLgLQqAngNGKPETgbwOjDHeLsXQBxjjyE4K8FoyA2BcGcG4AAHQ3BKKUIAgI")
			oAppearance:Add(5,"CP:6 -8 0 12 0")
			oAppearance:Add(8,"gBFLBCJwBAEHhEJAAEhABSoCg6AADACAxRDgMQBQKAAzQFAYcBqGqGAAGIaRWgmFgAQhFcZQSIEEhHBKMYwjOJgFgmEQyDCNAEwXDSEQ0DIOEgjGAkRxtDQZIRnGA5BiGI4RSbKMgwPBIZxCGSfIzpGKqAiCN42UCNFByXAgbyPKibJBBeK4dgOEYhVg7IaCIAFRTJCyTRpEWybLgkNQwWzAdr3DTMTQ3LavKbvKoaYi2L4xSCNEi3VK8dwlJyeKbpWA5IpKCZEQLRU5UXC+KA/OyBY7xHBIXpGU6PVZOVYSHTUE4vAauQAzKQoDqGY5la7aE5WVZkIznWy4Ih0TMcTgBPDVM4qCapJr3DqRRDKMxUfimF57J5hehADoWDw7kSFRLDsFReEiUBxiOJRCHgEQdE6egti6MhZjqWJNiaTppjeNxuGMdYJP+AZlmERb8hARAkiAaQYkcQZUHIGRZIOVgDFAMQIE2AZRiQVQDAoEZEHkTgGBEcICAgfiDlS" +;
		"QgliGKByBuBxiSSIoHiISIGCWCJiGgdAkAcDpYi4LYLCKaJGDCDJiniVgyg2IpIiYKIOmIeJ2DqD4iDiXhCg0JA4mIRoLiOeQmDyEokAidhFhOZBJEYR4OGSORWE2EwkkkQhThaZYnFIXh0E+eYGGKGJmEmFhmhmZZ5iSQ4WiaSRKDeGomAmHhyhyZxJkIXobGWSY6CyHYnEmdh+hkZxnFIeIgmeOZCH+IZogoBZRiEJ4TjYfIiCkCZ+gqGpnioNguiOaQaGYfYkmiSY+gaJoqAoboKicaBZiqIYpmoKgGgyJgqgqNhoiiaRaF6H4risSo+iqJRqkqVo6hkKZJEqOYumwCYKj2DRrnsBpGD+bA7BaR4xmkOwqkuMBslqTpPjGLIbEqU4tGwOpKiaNZrEsZg0jOLZKB6XoRi4C4GHOOJkFuFpmi8KwKFqJYaG6OomHaKQomsWpxjCLpblK9F6kaPo9i2S52m6OQwAsLwCj0LYrkKV5Bm+ag2nuKZwkwDh" +;
		"djQcRMFYcJCDCWh7BaRptBwYwSjecZMgcF5GHITAMmsboQDQBCAg=")
			oAppearance:Add(7,"CP:8 0 0 12 0")
			oAppearance:RenderType := -2130772226
		oRibbon:Locked := .T.
		oRibbon:Images("gBJJgBAIEAAFAEGCgAhb/hz/EIAh8Tf5CJo2AEZjQAjEZFEaKEaj8ZAIAEEbjIylErlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTqlVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/wGBwWDwmFw2HxGJxWLxmNx2PyGRyWTymVy2XzGZzWbzmdz2f0Gh0Wj0ml02n1Gp1WOh8Sh1q1ux1+yf9m2mu2tx1tp2+81+638w3ds4dn3vE2fBu/FrW353J3Nk49z5lt6tc68r7Ni6dy7e+6Nf78a8fi6F68u25Ve7fprPP8Pq+Mt91U9P1q/w2Hn63n/Dmv89b+vm1cCwNA8EQTBUFwYtyLB8lkII8kCRI0kqSo2cEMJy/8Grsf5+Aef5gRBERgIyf5/REcEUxXFEVH/FkYHBFB/xEeCHRujJ8A8R5AnRHkfHQjJgACdgAA9Isjg8" +;
		"jJAACfAAA/J0oA/JsnyjKcoytKksyqjR4AAB6MzBMUvzDMczzNMsyI3NgATdNE1zTOM6ABLsuy3LEry9O89yIAZ+AAH5gUBQUdg+f5An+fFEUUjKAgA==")
		oRibbon:Images("gBJJgBggAAQAAgACkKAD/hz/EMNh8TIRNGwAjEZAEXjAojJQjMLjABAAgjUYDMnlUrlkZQcZZ8ZVkymkYVMZOUtjB1moAmcYn8+mEZQk6lsvjExoE9oM3jE5nU8pdToVUpQAotGldIAFXoNfjNOAFQltSqtnsFJolardDqlpAFiskss1wuFXrNsjRojJ/jIkv+BjBpnFGsxrwQAwEYxYAQEZwl6vd9xONxuRseGjOIxmVjOPweSycYv2d02KyGFqObz2n0AAzGivmk1uo0NPzUYzm23mN1+xyRhjJqyRY1VljJayRsjJj0UZ4UY4l64241cY5V65kY53PAHRAHTtnVzPXAHZtnbAHd5/g8Va8lzldm9Fa9Xs0Xu4vHunJ5bmu877hv26zkOw/7uQC/TqP4+b/O1ADvQW8cGpU+kEPXBUBr0LjPoyDUPpcjIvQw/Dgw2tkOow18QIxFoAK5EkIQTCUUK1FTHRDF0RIxGT0wi9sbKNHEWR1GERxLDTpMk" +;
		"OiMmUjJPSgjJloyO0kxrJa9SajEnoxKMvSnKsryDLK2S2AEugBL81TCjErRnDMsPDJknSlMCMSpN0xvzISdA+jKOAAFaM0GjFAz/OETL1CatUQjdCUhQyM0c+0gT5MtG0BSNBU0jFKKM+8lTmvVHUDQtOUlT09xPTEA1cljZgAL9RPfV9bNHWVaVvXdcVnOVa15V9Y18locIyCaMicjIo2DXgioyIljoyG6M2MjFkIxZSMWZZtb2ejFo2vadq2lbNl27b1oXKAFqIxawAWwAFtABbl0Vdb4AXDeFxowUSMiOjIWoyDl7Veg6MAujIkIyT6M38jGAIxgSMYJgsA4OAGEoxhaMYbft/4DgeLYujONABjgAY8AGHgBiIAYmAGK5G0WMZNlGVBUjJGozHAMZm54LIyLedIyE6M5yjGdoxnuftFoKMaHpOi6Pomlozn2mr1p4AaiAGlABoyMaRr2eavrOtaFquwIyBCMh2jI2ugjKUpHn6SJQjIxbgjIdIyA+" +;
		"2bdvaMPBugAbvkfD8LvSMbijG+oxv6MbajG38ZuW8brmfE7zwQAceAHIgByYAcqAHGwFzHDbtufOctx2/JX0YgxRYgNoyA1m9xiiM2IzAgcAnXZdojPbIx3VeePmXeoz3/JKN4Uy9r2/c5EjHlox5vReejPZ+j4np2D5PeNT7HgLZ0PPteKqMpNyEA9D9oACujJIIyJqMgl9++Q8jH1ow/F0Jon4EZfmRh+pGH7kYfyd59D/AAP+JK7CBj7ICP0fs/h/Tr0VkZghACDMESMQFABAcAECQAQLVeQkjAJWGIPAAo5jBLGMKOa6ywMq5yMAsVvCoAELGOwuhgUaGbaWPkYhutsjMOlbQ8h8ymIBGYYkriG1BhxGYjr0iTDsjMTWVHoiCTqKbXIqxGhwACJSvHQgiIyHqK0WyjRNiuHmNxGAnkZCoRkF6zY0xrjbCuN8fQARyj9HSO0eI9EZjURiNkZJBktjgRmQUPSMx1IxHcjEeVgx7kVICJpLJHkYkjE2" +;
		"SgAJLAAkwugAZGQZJADMyEjALiMhngcHwjIbyMiVIyG4jIMGCypIxKtGgAJWsSIzLAjEsoNkYloRiWxGJcEYl0RiXi9pfAAmAnGYUrgATGABMhHMypay3lzLuXsqpWTam5N418ywATNABM8AE0QATTZGxgGsgHTuniuSAjARnLztYU99mc9p8Odn2Rmfzg5wsboFPUjM95GOmoMR+hE/53MoeLQ4jFEAARXnzICfgAKEuooBQwjFGWmuHBSRkP1LCM0rcy2dANKqXEYpaRimDqqZUzpfTUAFNwAU5cPTs0VNKbU+qFURYLGIo1KW7UypzFqoVRXtVNmZFQfErqyR2ihGCROqqGAAeCtyHgAGAGAPgBgD1nrS5EZwbw+DmHvW+uI9yMV0rlXiuwAK9V6rvXCvNgK9jOAeHwcFc7C2HKSP8Pg/x7jPsZY6xdjbH2Rr3ZCylmLJAAAeP8QA/x8Wds+PgjFnSGjwtMP+sYABDj+AwH8cNrbXjhIxbK2FtraA" +;
		"AGGPwPgPxj27t6McjA8R4B/A+Ae4lxnIj4DAH8QwB7mXOciPwAAfxgAHupda6d1br3ZuuRgf1nRwD/vCP+8ZGB/ifH+Pkh16r2EYICA==")
		oRibbon:Images("gBJJgBggAAQAAgACkKAD/hz/EMNh8TIRNGwAjEZAEXjAojJQjMLjABAAgjUYDMnlUrlktl0akQAGMZI80jMzjExl87nk9n0/oFBoVDolFo1HpE9B0ZJcZSkZYEZaUZa9UqVQp1MjNLpNdr1fsFhsVjsAFjItjJ5jK4jK2jKejKDjJxudxt9ttdps8Zs1kv1/wGBwWCtEYPcZY15jB3jI/jIajIHyOPxsZxkYtkYxOGveDz2f0Gh0NcAFqjDHjKyjI9rdd0msjGq096jGk0W33G53U8JkZXOKAGwAAGv3EjHCzIA5NN3fN53P0NPjC3y2tnsHjAJo2ky4A6kY6XQ8Xj8lGCsZX93jBAnwkjJbjKBjI6jIPoXsjFwjHpjAT8r/wBAKThkjJprsjDIJclKMDUjJeIybaMkwjL8AA+yewSAC5IwqaMBhAUQRC6AkIybCMjkjIEJeJqMlbAqMlQjJ0IySyMh8yaXRUjEUIwqqMCNEUgyE0USIxE0dxSl4Zoy" +;
		"KaMyAjCTIwQ6MmgjJRIyHaXx0AEeABHwASfIcxTGskCIxAyMQ2AEMpZC4AAsjIIIyhKMBNA4AFKjI6JfDM1Q6AEPzJQVBqS879vUAEKq9QIACojIkpfCr9AA/iGUJS9MKI8LvgA7oGtA7iM048NM1LUyet6jDfumjIeIy4yx1g4VOOXU9bVuljSNMADNgA2TguspDXtSxDaAA21cWTZLCgAPiMtQzDqowx0ERwADJWradpOVYrOIxZllXDZS+gAFyMj031RURNS6IxdsNURTlVtKzoAXJcV8Xy0lUgASqsQ4q0equjCooxfyMX5ZF84Xhid0MmSbIwmqMJwAGH4bjFTorG6VY4ACPIwkCcoykiSI0eCjIeAB/AflCWZRlyV5glqojglpBn5OSWEOf2dJWR5f58lWgaEk4HA+lwGTclYGCGlwHnHp+opaR5/6KjWeauuOc5oAGbJZmqW5mlmWZilSAgA==")
		oRibbon:Images("gBJJgBggAAQAAgACkKAD/hz/EMNh8TIRNGwAjEZAEXjAojJQjMLjABAAgjUYDMnlUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpE5g8YCcZBMZpc1qNPjASqFJrFZrVbrlYBUZH8ZKcZHcZC0vC8ZHtitVOrtvuFxuVzjARjJsjLHjKpjJZjIfjMmjBbjKtvMZM8ZCF0xmNx2PnALjJFjLMjL4jLjjK8jLAjLky8ZZcZIEZr+Q1Gp1WOAsZD0ZYcZf0ZfMZd8ZeG02UZYUZDcZhOr4XD4lIqIOjK6jL63cY2fO5oA2sYW8ZBkZknF7Xb7k0qN2jGUjF6jHTAHP8/R9GYjDEjJCjIPq/d+n14nZAHgABEjLIjJ4vVALoQGADcva0jFOw+0FwYujFowLSMmajJ6oyfkBPTAj0PRC6MQqjBlIyK74wbEsTK0iKMDIjJZNEjJtoydyMn3DDmIwdiMm0jMQowWKMjCv8TyFIahgqjIarYjAvoy" +;
		"NaMkyjJpQwaCMksjI1IyLyMikjIZpDIkvzArgaIyScZzMjBHoyGMwzZNrHtOAAsP/GKMiqjIDzdPM9Le/EkIwUyMlCjMxpHPdDUOrMjIw/iMCDL1EUhSKigG6yMskjFKUlTVN05TtPU/UFQqwiofJXUqOo/R4AJI/CMQMnKHolV6VIdWaT1qlp8njWyNHwANeMvX6W19YCMWJYdhJY3NigAzw4JbZ1oABZ6WH8B9mWtZh/k/bVuJbbdtH/cNmICA=")
		oItems := oRibbon:Items()
			oItem := oItems:Add("",2)
				oItem:GroupPopup := 35/*exGroupPopupEqualHeight+exNoGroupPopupFrame+exGroupPopup*/
				oItems1 := oItem:Items()
					oItem1 := oItems1:Add(" <img>5</img> Home")
						oItem1:SetProperty("BackColor",0x7000000)
						oItem1:ItemHeight := 36
						oItem1:Alignment := 2/*exRight*/
						oItem1:SetProperty("ForeColor",AutomationTranslateColor( GraMakeRGBColor  ( { 128,128,128 } )  , .F. ))
					oItem2 := oItems1:Add("   <img>6</img> Gebaude")
						oItem2:SetProperty("BackColor",0x5000000)
						oItem2:Alignment := 2/*exRight*/
						oItem2:SetProperty("ForeColor",AutomationTranslateColor( GraMakeRGBColor  ( { 128,128,128 } )  , .F. ))
					oItem3 := oItems1:Add("   <img>6</img> Aussttung")
						oItem3:SetProperty("BackColor",0x5000000)
						oItem3:Alignment := 2/*exRight*/
						oItem3:SetProperty("ForeColor",AutomationTranslateColor( GraMakeRGBColor  ( { 128,128,128 } )  , .F. ))
					oItem4 := oItems1:Add("   <img>3</img> Produkt")
						oItem4:SetProperty("BackColor",0x3000000)
						oItem4:Alignment := 2/*exRight*/
					oItem5 := oItems1:Add("   <img>4</img> Rabate")
						oItem5:Alignment := 2/*exRight*/
						oItem5:SetProperty("BackColor",0x1000000)
						oItem5:Enabled := .F.
					oItem6 := oItems1:Add("   <img>7</img> Ergebnis")
						oItem6:Alignment := 2/*exRight*/
						oItem6:SetProperty("BackColor",0x1000000)
						oItem6:Enabled := .F.
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
227
Is there any function to retrieve all available shortcut keys

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem,oItem1,oItem2,oItem3,oItem4,oItem5,oItem6
	LOCAL oItems,oItems1,oItems2
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:SetProperty("Background",144/*exShortcutKeyBackColor*/,AutomationTranslateColor( GraMakeRGBColor  ( { 0,0,1 } )  , .F. ))
		oRibbon:SetProperty("Background",145/*exShortcutKeyForeColor*/,AutomationTranslateColor( GraMakeRGBColor  ( { 255,255,255 } )  , .F. ))
		oRibbon:ShortcutKeyVisible := 36/*exDisplayShortcutKeysAllAvailable+exShowShortcutKeysToggleDelayed*/
		oItems := oRibbon:Items()
			oItems:PopupAppearance := 6/*ShadowBorder*/
			oItem := oItems:Add("",2,10)
				oItem:GroupPopup := 3/*exNoGroupPopupFrame+exGroupPopup*/
				oItems1 := oItem:Items()
					oItem1 := oItems1:Add("Item 1",0,20)
						oItem1:Check := .T.
						oItem1:Shortcut := "ALT+1"
					oItem2 := oItems1:Add("Item 2",0,30)
						oItem2:Check := .T.
						oItem2:Checked := .T.
						oItem2:Shortcut := "ALT+2"
					oItem3 := oItems1:Add("Item 3",2,40)
						oItem3:Shortcut := "ALT+3"
						oItems2 := oItem3:Items()
							oItem4 := oItems2:Add("Sub-Item 3.1",0,50)
								oItem4:Radio := .T.
								oItem4:Checked := .T.
								oItem4:CloseOnClick := 0/*exCloseOnClick*/
								oItem4:Shortcut := "1"
							oItem5 := oItems2:Add("Sub-Item 3.2",0,60)
								oItem5:Radio := .T.
								oItem5:CloseOnClick := 0/*exCloseOnClick*/
								oItem5:Shortcut := "2"
							oItem6 := oItems2:Add("Sub-Item 3.2",0,70)
								oItem6:Radio := .T.
								oItem6:CloseOnClick := 0/*exCloseOnClick*/
								oItem6:Shortcut := "3"
		oRibbon:Refresh()
		DevOut( oRibbon:ShortcutKeysInfo() )

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
226
How can I display shortcut keys with a different size

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem,oItem1,oItem2,oItem3,oItem4,oItem5,oItem6
	LOCAL oItems,oItems1,oItems2
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:ShortcutKeyFormat := "`<font ;14>` + caption"
		oItems := oRibbon:Items()
			oItems:PopupAppearance := 6/*ShadowBorder*/
			oItem := oItems:Add("",2,10)
				oItem:GroupPopup := 3/*exNoGroupPopupFrame+exGroupPopup*/
				oItems1 := oItem:Items()
					oItem1 := oItems1:Add("Item 1",0,20)
						oItem1:Check := .T.
						oItem1:Shortcut := "ALT+1"
					oItem2 := oItems1:Add("Item 2",0,30)
						oItem2:Check := .T.
						oItem2:Checked := .T.
						oItem2:Shortcut := "ALT+SHIFT+2"
					oItem3 := oItems1:Add("Item 3",2,40)
						oItem3:Shortcut := "ALT+3"
						oItems2 := oItem3:Items()
							oItem4 := oItems2:Add("Sub-Item 3.1",0,50)
								oItem4:Radio := .T.
								oItem4:Checked := .T.
								oItem4:CloseOnClick := 0/*exCloseOnClick*/
								oItem4:Shortcut := "1"
							oItem5 := oItems2:Add("Sub-Item 3.2",0,60)
								oItem5:Radio := .T.
								oItem5:CloseOnClick := 0/*exCloseOnClick*/
								oItem5:Shortcut := "2"
							oItem6 := oItems2:Add("Sub-Item 3.2",0,70)
								oItem6:Radio := .T.
								oItem6:CloseOnClick := 0/*exCloseOnClick*/
								oItem6:Shortcut := "33+3"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
225
How can I display shortcut keys with a different font

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem,oItem1,oItem2,oItem3,oItem4,oItem5,oItem6
	LOCAL oItems,oItems1,oItems2
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:SetProperty("Background",144/*exShortcutKeyBackColor*/,AutomationTranslateColor( GraMakeRGBColor  ( { 0,0,1 } )  , .F. ))
		oRibbon:SetProperty("Background",145/*exShortcutKeyForeColor*/,AutomationTranslateColor( GraMakeRGBColor  ( { 255,255,255 } )  , .F. ))
		oRibbon:ShortcutKeyFormat := "`<font Stencil>` + caption"
		oItems := oRibbon:Items()
			oItems:PopupAppearance := 6/*ShadowBorder*/
			oItem := oItems:Add("",2,10)
				oItem:GroupPopup := 3/*exNoGroupPopupFrame+exGroupPopup*/
				oItems1 := oItem:Items()
					oItem1 := oItems1:Add("Item 1",0,20)
						oItem1:Check := .T.
						oItem1:Shortcut := "ALT+1"
					oItem2 := oItems1:Add("Item 2",0,30)
						oItem2:Check := .T.
						oItem2:Checked := .T.
						oItem2:Shortcut := "ALT+SHIFT+2"
					oItem3 := oItems1:Add("Item 3",2,40)
						oItem3:Shortcut := "ALT+3"
						oItems2 := oItem3:Items()
							oItem4 := oItems2:Add("Sub-Item 3.1",0,50)
								oItem4:Radio := .T.
								oItem4:Checked := .T.
								oItem4:CloseOnClick := 0/*exCloseOnClick*/
								oItem4:Shortcut := "1"
							oItem5 := oItems2:Add("Sub-Item 3.2",0,60)
								oItem5:Radio := .T.
								oItem5:CloseOnClick := 0/*exCloseOnClick*/
								oItem5:Shortcut := "2"
							oItem6 := oItems2:Add("Sub-Item 3.2",0,70)
								oItem6:Radio := .T.
								oItem6:CloseOnClick := 0/*exCloseOnClick*/
								oItem6:Shortcut := "33+3"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
224
How can I change the visual appearance of the shortcut keys (sample 3, theme)

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem,oItem1,oItem2,oItem3,oItem4,oItem5,oItem6
	LOCAL oItems,oItems1,oItems2
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:VisualAppearance():Add(1,"XP: Button 1 1")
		oRibbon:SetProperty("Background",143/*exShortcutKeyAppearance*/,0x1000000)
		oRibbon:SetProperty("Background",144/*exShortcutKeyBackColor*/,AutomationTranslateColor( GraMakeRGBColor  ( { 0,0,0 } )  , .F. ))
		oRibbon:SetProperty("Background",145/*exShortcutKeyForeColor*/,AutomationTranslateColor( GraMakeRGBColor  ( { 0,0,0 } )  , .F. ))
		oRibbon:ShortcutKeyVisible := 36/*exDisplayShortcutKeysAllAvailable+exShowShortcutKeysToggleDelayed*/
		oItems := oRibbon:Items()
			oItems:PopupAppearance := 6/*ShadowBorder*/
			oItem := oItems:Add("",2,10)
				oItem:GroupPopup := 3/*exNoGroupPopupFrame+exGroupPopup*/
				oItems1 := oItem:Items()
					oItem1 := oItems1:Add("Item 1",0,20)
						oItem1:Check := .T.
						oItem1:Shortcut := "ALT+1"
					oItem2 := oItems1:Add("Item 2",0,30)
						oItem2:Check := .T.
						oItem2:Checked := .T.
						oItem2:Shortcut := "ALT+2"
					oItem3 := oItems1:Add("Item 3",2,40)
						oItem3:Shortcut := "ALT+3"
						oItems2 := oItem3:Items()
							oItem4 := oItems2:Add("Sub-Item 3.1",0,50)
								oItem4:Radio := .T.
								oItem4:Checked := .T.
								oItem4:CloseOnClick := 0/*exCloseOnClick*/
								oItem4:Shortcut := "1"
							oItem5 := oItems2:Add("Sub-Item 3.2",0,60)
								oItem5:Radio := .T.
								oItem5:CloseOnClick := 0/*exCloseOnClick*/
								oItem5:Shortcut := "2"
							oItem6 := oItems2:Add("Sub-Item 3.2",0,70)
								oItem6:Radio := .T.
								oItem6:CloseOnClick := 0/*exCloseOnClick*/
								oItem6:Shortcut := "33+3"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
223
It is possible somehow to show all available shortcut keys (sample 2)

PROCEDURE OnSelectItem(oRibbon,Itm)
	oRibbon:ShortcutKeyVisible := 36/*exDisplayShortcutKeysAllAvailable+exShowShortcutKeysToggleDelayed*/
	oRibbon:ShortcutKeyFormat := "`<c><font ;6><fgcolor 808080>` + sca + `</fgcolor></font><br><c>Key:` + keys"
	oRibbon:ShortcutKeyPressedModifers := -65536/*exModifierAny*/
	oRibbon:ShortcutKeyFormat := ""
	oRibbon:ShortcutKeyVisible := 4/*exShowShortcutKeysToggleDelayed*/
RETURN

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem,oItem1,oItem2,oItem3,oItem4,oItem5,oItem6
	LOCAL oItems,oItems1,oItems2
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:SelectItem := {|Itm| OnSelectItem(oRibbon,Itm)} /*Occurs when the user selects the item.*/

		oItems := oRibbon:Items()
			oItems:PopupAppearance := 6/*ShadowBorder*/
			oItem := oItems:Add("",2,10)
				oItem:GroupPopup := 3/*exNoGroupPopupFrame+exGroupPopup*/
				oItems1 := oItem:Items()
					oItem1 := oItems1:Add("Item 1",0,20)
						oItem1:Check := .T.
						oItem1:Shortcut := "ALT+CTRL+1"
					oItem2 := oItems1:Add("Item 2",0,30)
						oItem2:Check := .T.
						oItem2:Checked := .T.
						oItem2:Shortcut := "ALT+SHIFT+2"
					oItem3 := oItems1:Add("Item 3",2,40)
						oItem3:Shortcut := "ALT+3"
						oItems2 := oItem3:Items()
							oItem4 := oItems2:Add("Sub-Item 3.1",0,50)
								oItem4:Radio := .T.
								oItem4:Checked := .T.
								oItem4:CloseOnClick := 0/*exCloseOnClick*/
								oItem4:Shortcut := "1"
							oItem5 := oItems2:Add("Sub-Item 3.2",0,60)
								oItem5:Radio := .T.
								oItem5:CloseOnClick := 0/*exCloseOnClick*/
								oItem5:Shortcut := "2"
							oItem6 := oItems2:Add("Sub-Item 3.2",0,70)
								oItem6:Radio := .T.
								oItem6:CloseOnClick := 0/*exCloseOnClick*/
								oItem6:Shortcut := "33+3"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
222
It is possible somehow to show all available shortcut keys (sample 1)

PROCEDURE OnSelectItem(oRibbon,Itm)
	oRibbon:ShortcutKeyPressedModifers := -65536/*exModifierAny*/
RETURN

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem,oItem1,oItem2,oItem3,oItem4,oItem5,oItem6
	LOCAL oItems,oItems1,oItems2
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:SelectItem := {|Itm| OnSelectItem(oRibbon,Itm)} /*Occurs when the user selects the item.*/

		oItems := oRibbon:Items()
			oItems:PopupAppearance := 6/*ShadowBorder*/
			oItem := oItems:Add("",2,10)
				oItem:GroupPopup := 3/*exNoGroupPopupFrame+exGroupPopup*/
				oItems1 := oItem:Items()
					oItem1 := oItems1:Add("Item 1",0,20)
						oItem1:Check := .T.
						oItem1:Shortcut := "ALT+1"
					oItem2 := oItems1:Add("Item 2",0,30)
						oItem2:Check := .T.
						oItem2:Checked := .T.
						oItem2:Shortcut := "ALT+2"
					oItem3 := oItems1:Add("Item 3",2,40)
						oItem3:Shortcut := "ALT+3"
						oItems2 := oItem3:Items()
							oItem4 := oItems2:Add("Sub-Item 3.1",0,50)
								oItem4:Radio := .T.
								oItem4:Checked := .T.
								oItem4:CloseOnClick := 0/*exCloseOnClick*/
								oItem4:Shortcut := "1"
							oItem5 := oItems2:Add("Sub-Item 3.2",0,60)
								oItem5:Radio := .T.
								oItem5:CloseOnClick := 0/*exCloseOnClick*/
								oItem5:Shortcut := "2"
							oItem6 := oItems2:Add("Sub-Item 3.2",0,70)
								oItem6:Radio := .T.
								oItem6:CloseOnClick := 0/*exCloseOnClick*/
								oItem6:Shortcut := "33+3"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
221
How can I show the shortcut keys semi-transparent

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem,oItem1,oItem2,oItem3,oItem4,oItem5,oItem6
	LOCAL oItems,oItems1,oItems2
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:SetProperty("Background",143/*exShortcutKeyAppearance*/,AutomationTranslateColor( GraMakeRGBColor  ( { 0,0,0 } )  , .F. ))
		oRibbon:SetProperty("Background",144/*exShortcutKeyBackColor*/,AutomationTranslateColor( GraMakeRGBColor  ( { 0,0,1 } )  , .F. ))
		oRibbon:SetProperty("Background",145/*exShortcutKeyForeColor*/,AutomationTranslateColor( GraMakeRGBColor  ( { 255,255,255 } )  , .F. ))
		oRibbon:ShortcutKeyVisible := 36/*exDisplayShortcutKeysAllAvailable+exShowShortcutKeysToggleDelayed*/
		oRibbon:ShortcutKeyTransparent := 50
		oItems := oRibbon:Items()
			oItems:PopupAppearance := 6/*ShadowBorder*/
			oItem := oItems:Add("",2,10)
				oItem:GroupPopup := 3/*exNoGroupPopupFrame+exGroupPopup*/
				oItems1 := oItem:Items()
					oItem1 := oItems1:Add("Item 1",0,20)
						oItem1:Check := .T.
						oItem1:Shortcut := "ALT+1"
					oItem2 := oItems1:Add("Item 2",0,30)
						oItem2:Check := .T.
						oItem2:Checked := .T.
						oItem2:Shortcut := "ALT+2"
					oItem3 := oItems1:Add("Item 3",2,40)
						oItem3:Shortcut := "ALT+3"
						oItems2 := oItem3:Items()
							oItem4 := oItems2:Add("Sub-Item 3.1",0,50)
								oItem4:Radio := .T.
								oItem4:Checked := .T.
								oItem4:CloseOnClick := 0/*exCloseOnClick*/
								oItem4:Shortcut := "1"
							oItem5 := oItems2:Add("Sub-Item 3.2",0,60)
								oItem5:Radio := .T.
								oItem5:CloseOnClick := 0/*exCloseOnClick*/
								oItem5:Shortcut := "2"
							oItem6 := oItems2:Add("Sub-Item 3.2",0,70)
								oItem6:Radio := .T.
								oItem6:CloseOnClick := 0/*exCloseOnClick*/
								oItem6:Shortcut := "33+3"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
220
Is it possible somehow to display ID of each item

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem,oItem1,oItem2,oItem3,oItem4,oItem5,oItem6
	LOCAL oItems,oItems1,oItems2
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:Debug := .T.
		oItems := oRibbon:Items()
			oItems:PopupAppearance := 6/*ShadowBorder*/
			oItem := oItems:Add("",2,10)
				oItem:GroupPopup := 3/*exNoGroupPopupFrame+exGroupPopup*/
				oItems1 := oItem:Items()
					oItem1 := oItems1:Add("Item 1",0,20)
						oItem1:Check := .T.
						oItem1:Shortcut := "ALT+1"
					oItem2 := oItems1:Add("Item 2",0,30)
						oItem2:Check := .T.
						oItem2:Checked := .T.
						oItem2:Shortcut := "ALT+2"
					oItem3 := oItems1:Add("Item 3",2,40)
						oItem3:Shortcut := "ALT+3"
						oItems2 := oItem3:Items()
							oItem4 := oItems2:Add("Sub-Item 3.1",0,50)
								oItem4:Radio := .T.
								oItem4:Checked := .T.
								oItem4:CloseOnClick := 0/*exCloseOnClick*/
								oItem4:Shortcut := "1"
							oItem5 := oItems2:Add("Sub-Item 3.2",0,60)
								oItem5:Radio := .T.
								oItem5:CloseOnClick := 0/*exCloseOnClick*/
								oItem5:Shortcut := "2"
							oItem6 := oItems2:Add("Sub-Item 3.2",0,70)
								oItem6:Radio := .T.
								oItem6:CloseOnClick := 0/*exCloseOnClick*/
								oItem6:Shortcut := "33+3"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
219
How can I change the visual appearance of the shortcut keys (sample 2, EBN)

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem,oItem1,oItem2,oItem3,oItem4,oItem5,oItem6
	LOCAL oItems,oItems1,oItems2
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:VisualAppearance():Add(1,"c:\exontrol\images\normal.ebn")
		oRibbon:SetProperty("Background",143/*exShortcutKeyAppearance*/,0x1000000)
		oRibbon:SetProperty("Background",144/*exShortcutKeyBackColor*/,AutomationTranslateColor( GraMakeRGBColor  ( { 0,0,0 } )  , .F. ))
		oRibbon:SetProperty("Background",145/*exShortcutKeyForeColor*/,AutomationTranslateColor( GraMakeRGBColor  ( { 0,0,0 } )  , .F. ))
		oRibbon:ShortcutKeyVisible := 36/*exDisplayShortcutKeysAllAvailable+exShowShortcutKeysToggleDelayed*/
		oItems := oRibbon:Items()
			oItems:PopupAppearance := 6/*ShadowBorder*/
			oItem := oItems:Add("",2,10)
				oItem:GroupPopup := 3/*exNoGroupPopupFrame+exGroupPopup*/
				oItems1 := oItem:Items()
					oItem1 := oItems1:Add("Item 1",0,20)
						oItem1:Check := .T.
						oItem1:Shortcut := "ALT+1"
					oItem2 := oItems1:Add("Item 2",0,30)
						oItem2:Check := .T.
						oItem2:Checked := .T.
						oItem2:Shortcut := "ALT+2"
					oItem3 := oItems1:Add("Item 3",2,40)
						oItem3:Shortcut := "ALT+3"
						oItems2 := oItem3:Items()
							oItem4 := oItems2:Add("Sub-Item 3.1",0,50)
								oItem4:Radio := .T.
								oItem4:Checked := .T.
								oItem4:CloseOnClick := 0/*exCloseOnClick*/
								oItem4:Shortcut := "1"
							oItem5 := oItems2:Add("Sub-Item 3.2",0,60)
								oItem5:Radio := .T.
								oItem5:CloseOnClick := 0/*exCloseOnClick*/
								oItem5:Shortcut := "2"
							oItem6 := oItems2:Add("Sub-Item 3.2",0,70)
								oItem6:Radio := .T.
								oItem6:CloseOnClick := 0/*exCloseOnClick*/
								oItem6:Shortcut := "33+3"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
218
How can I change the visual appearance of the shortcut keys (sample 1)

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem,oItem1,oItem2,oItem3,oItem4,oItem5,oItem6
	LOCAL oItems,oItems1,oItems2
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:SetProperty("Background",143/*exShortcutKeyAppearance*/,AutomationTranslateColor( GraMakeRGBColor  ( { 0,0,0 } )  , .F. ))
		oRibbon:SetProperty("Background",144/*exShortcutKeyBackColor*/,AutomationTranslateColor( GraMakeRGBColor  ( { 0,0,1 } )  , .F. ))
		oRibbon:SetProperty("Background",145/*exShortcutKeyForeColor*/,AutomationTranslateColor( GraMakeRGBColor  ( { 255,255,255 } )  , .F. ))
		oRibbon:ShortcutKeyVisible := 36/*exDisplayShortcutKeysAllAvailable+exShowShortcutKeysToggleDelayed*/
		oItems := oRibbon:Items()
			oItems:PopupAppearance := 6/*ShadowBorder*/
			oItem := oItems:Add("",2,10)
				oItem:GroupPopup := 3/*exNoGroupPopupFrame+exGroupPopup*/
				oItems1 := oItem:Items()
					oItem1 := oItems1:Add("Item 1",0,20)
						oItem1:Check := .T.
						oItem1:Shortcut := "ALT+1"
					oItem2 := oItems1:Add("Item 2",0,30)
						oItem2:Check := .T.
						oItem2:Checked := .T.
						oItem2:Shortcut := "ALT+2"
					oItem3 := oItems1:Add("Item 3",2,40)
						oItem3:Shortcut := "ALT+3"
						oItems2 := oItem3:Items()
							oItem4 := oItems2:Add("Sub-Item 3.1",0,50)
								oItem4:Radio := .T.
								oItem4:Checked := .T.
								oItem4:CloseOnClick := 0/*exCloseOnClick*/
								oItem4:Shortcut := "1"
							oItem5 := oItems2:Add("Sub-Item 3.2",0,60)
								oItem5:Radio := .T.
								oItem5:CloseOnClick := 0/*exCloseOnClick*/
								oItem5:Shortcut := "2"
							oItem6 := oItems2:Add("Sub-Item 3.2",0,70)
								oItem6:Radio := .T.
								oItem6:CloseOnClick := 0/*exCloseOnClick*/
								oItem6:Shortcut := "33+3"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
217
Can I show the shortcut key right after the item so it won't overlap it (sample 2)

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem,oItem1,oItem2,oItem3,oItem4,oItem5,oItem6
	LOCAL oItems,oItems1,oItems2
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:ShortcutKeyExtPaddingH := "16 + width/2, 16 + height/2 ,16 + width/2,16 + height/2"
		oRibbon:ShortcutKeyExtPaddingV := "16 + width/2, 16 + height/2 ,16 + width/2,16 + height/2"
		oRibbon:ShortcutKeyVisible := 36/*exDisplayShortcutKeysAllAvailable+exShowShortcutKeysToggleDelayed*/
		oItems := oRibbon:Items()
			oItems:PopupAppearance := 6/*ShadowBorder*/
			oItem := oItems:Add("",2,10)
				oItem:GroupPopup := 3/*exNoGroupPopupFrame+exGroupPopup*/
				oItems1 := oItem:Items()
					oItem1 := oItems1:Add("Item 1",0,20)
						oItem1:Check := .T.
						oItem1:Shortcut := "ALT+1"
					oItem2 := oItems1:Add("Item 2",0,30)
						oItem2:Check := .T.
						oItem2:Checked := .T.
						oItem2:Shortcut := "ALT+2"
					oItem3 := oItems1:Add("Item 3",2,40)
						oItem3:Shortcut := "ALT+3"
						oItems2 := oItem3:Items()
							oItem4 := oItems2:Add("Sub-Item 3.1",0,50)
								oItem4:Radio := .T.
								oItem4:Checked := .T.
								oItem4:CloseOnClick := 0/*exCloseOnClick*/
								oItem4:Shortcut := "1"
							oItem5 := oItems2:Add("Sub-Item 3.2",0,60)
								oItem5:Radio := .T.
								oItem5:CloseOnClick := 0/*exCloseOnClick*/
								oItem5:Shortcut := "2"
							oItem6 := oItems2:Add("Sub-Item 3.2",0,70)
								oItem6:Radio := .T.
								oItem6:CloseOnClick := 0/*exCloseOnClick*/
								oItem6:Shortcut := "33+3"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
216
Can I show the shortcut key right after the item so it won't overlap it (sample 1)

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem,oItem1,oItem2,oItem3,oItem4,oItem5,oItem6
	LOCAL oItems,oItems1,oItems2
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:ShortcutKeyExtPaddingH := "width/2, height/2 ,width/2,height/2"
		oRibbon:ShortcutKeyExtPaddingV := "width/2, height/2 ,width/2,height/2"
		oRibbon:ShortcutKeyVisible := 36/*exDisplayShortcutKeysAllAvailable+exShowShortcutKeysToggleDelayed*/
		oItems := oRibbon:Items()
			oItems:PopupAppearance := 6/*ShadowBorder*/
			oItem := oItems:Add("",2,10)
				oItem:GroupPopup := 3/*exNoGroupPopupFrame+exGroupPopup*/
				oItems1 := oItem:Items()
					oItem1 := oItems1:Add("Item 1",0,20)
						oItem1:Check := .T.
						oItem1:Shortcut := "ALT+1"
					oItem2 := oItems1:Add("Item 2",0,30)
						oItem2:Check := .T.
						oItem2:Checked := .T.
						oItem2:Shortcut := "ALT+2"
					oItem3 := oItems1:Add("Item 3",2,40)
						oItem3:Shortcut := "ALT+3"
						oItems2 := oItem3:Items()
							oItem4 := oItems2:Add("Sub-Item 3.1",0,50)
								oItem4:Radio := .T.
								oItem4:Checked := .T.
								oItem4:CloseOnClick := 0/*exCloseOnClick*/
								oItem4:Shortcut := "1"
							oItem5 := oItems2:Add("Sub-Item 3.2",0,60)
								oItem5:Radio := .T.
								oItem5:CloseOnClick := 0/*exCloseOnClick*/
								oItem5:Shortcut := "2"
							oItem6 := oItems2:Add("Sub-Item 3.2",0,70)
								oItem6:Radio := .T.
								oItem6:CloseOnClick := 0/*exCloseOnClick*/
								oItem6:Shortcut := "33+3"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
215
Can I specify padding for shortcut keys (sample 2)

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem,oItem1,oItem2,oItem3,oItem4,oItem5,oItem6
	LOCAL oItems,oItems1,oItems2
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:ShortcutKeyPadding := "8,8,8,8"
		oItems := oRibbon:Items()
			oItems:PopupAppearance := 6/*ShadowBorder*/
			oItem := oItems:Add("",2,10)
				oItem:GroupPopup := 3/*exNoGroupPopupFrame+exGroupPopup*/
				oItems1 := oItem:Items()
					oItem1 := oItems1:Add("Item 1",0,20)
						oItem1:Check := .T.
						oItem1:Shortcut := "ALT+1"
					oItem2 := oItems1:Add("Item 2",0,30)
						oItem2:Check := .T.
						oItem2:Checked := .T.
						oItem2:Shortcut := "ALT+2"
					oItem3 := oItems1:Add("Item 3",2,40)
						oItem3:Shortcut := "ALT+3"
						oItems2 := oItem3:Items()
							oItem4 := oItems2:Add("Sub-Item 3.1",0,50)
								oItem4:Radio := .T.
								oItem4:Checked := .T.
								oItem4:CloseOnClick := 0/*exCloseOnClick*/
								oItem4:Shortcut := "1"
							oItem5 := oItems2:Add("Sub-Item 3.2",0,60)
								oItem5:Radio := .T.
								oItem5:CloseOnClick := 0/*exCloseOnClick*/
								oItem5:Shortcut := "2"
							oItem6 := oItems2:Add("Sub-Item 3.2",0,70)
								oItem6:Radio := .T.
								oItem6:CloseOnClick := 0/*exCloseOnClick*/
								oItem6:Shortcut := "33+3"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
214
Can I specify padding for shortcut keys (sample 1)

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem,oItem1,oItem2,oItem3,oItem4,oItem5,oItem6
	LOCAL oItems,oItems1,oItems2
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:ShortcutKeyPadding := "0,0,0,0"
		oItems := oRibbon:Items()
			oItems:PopupAppearance := 6/*ShadowBorder*/
			oItem := oItems:Add("",2,10)
				oItem:GroupPopup := 3/*exNoGroupPopupFrame+exGroupPopup*/
				oItems1 := oItem:Items()
					oItem1 := oItems1:Add("Item 1",0,20)
						oItem1:Check := .T.
						oItem1:Shortcut := "ALT+1"
					oItem2 := oItems1:Add("Item 2",0,30)
						oItem2:Check := .T.
						oItem2:Checked := .T.
						oItem2:Shortcut := "ALT+2"
					oItem3 := oItems1:Add("Item 3",2,40)
						oItem3:Shortcut := "ALT+3"
						oItems2 := oItem3:Items()
							oItem4 := oItems2:Add("Sub-Item 3.1",0,50)
								oItem4:Radio := .T.
								oItem4:Checked := .T.
								oItem4:CloseOnClick := 0/*exCloseOnClick*/
								oItem4:Shortcut := "1"
							oItem5 := oItems2:Add("Sub-Item 3.2",0,60)
								oItem5:Radio := .T.
								oItem5:CloseOnClick := 0/*exCloseOnClick*/
								oItem5:Shortcut := "2"
							oItem6 := oItems2:Add("Sub-Item 3.2",0,70)
								oItem6:Radio := .T.
								oItem6:CloseOnClick := 0/*exCloseOnClick*/
								oItem6:Shortcut := "33+3"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
213
Is it possible to specify where the shortcut keys should be shown

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem,oItem1,oItem2,oItem3,oItem4,oItem5,oItem6
	LOCAL oItems,oItems1,oItems2
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:ShortcutKeyAlignH := 0/*exShortcutKeyUpperLeft*/
		oRibbon:ShortcutKeyAlignV := 34/*exShortcutKeyLowerRight*/
		oRibbon:ShortcutKeyVisible := 292/*exCloseShortcutKeysOnClick+exDisplayShortcutKeysAllAvailable+exShowShortcutKeysToggleDelayed*/
		oItems := oRibbon:Items()
			oItems:PopupAppearance := 6/*ShadowBorder*/
			oItem := oItems:Add("",2,10)
				oItem:GroupPopup := 3/*exNoGroupPopupFrame+exGroupPopup*/
				oItems1 := oItem:Items()
					oItem1 := oItems1:Add("Item 1",0,20)
						oItem1:Check := .T.
						oItem1:Shortcut := "ALT+1"
					oItem2 := oItems1:Add("Item 2",0,30)
						oItem2:Check := .T.
						oItem2:Checked := .T.
						oItem2:Shortcut := "ALT+2"
					oItem3 := oItems1:Add("Item 3",2,40)
						oItem3:Shortcut := "ALT+3"
						oItems2 := oItem3:Items()
							oItem4 := oItems2:Add("Sub-Item 3.1",0,50)
								oItem4:Radio := .T.
								oItem4:Checked := .T.
								oItem4:CloseOnClick := 0/*exCloseOnClick*/
								oItem4:Shortcut := "1"
							oItem5 := oItems2:Add("Sub-Item 3.2",0,60)
								oItem5:Radio := .T.
								oItem5:CloseOnClick := 0/*exCloseOnClick*/
								oItem5:Shortcut := "2"
							oItem6 := oItems2:Add("Sub-Item 3.2",0,70)
								oItem6:Radio := .T.
								oItem6:CloseOnClick := 0/*exCloseOnClick*/
								oItem6:Shortcut := "33+3"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
212
Can I use different shortcut modifier keys for items

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem,oItem1,oItem2,oItem3,oItem4,oItem5,oItem6
	LOCAL oItems,oItems1,oItems2
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oItems := oRibbon:Items()
			oItems:PopupAppearance := 6/*ShadowBorder*/
			oItem := oItems:Add("",2,10)
				oItem:GroupPopup := 3/*exNoGroupPopupFrame+exGroupPopup*/
				oItems1 := oItem:Items()
					oItem1 := oItems1:Add("Item 1",0,20)
						oItem1:Check := .T.
						oItem1:Shortcut := "ALT + CTRL + 1"
					oItem2 := oItems1:Add("Item 2",0,30)
						oItem2:Check := .T.
						oItem2:Checked := .T.
						oItem2:Shortcut := "ALT+2"
					oItem3 := oItems1:Add("Item 3",2,40)
						oItem3:Shortcut := "CTRL + SHIFT + ALT+3"
						oItems2 := oItem3:Items()
							oItem4 := oItems2:Add("Sub-Item 3.1",0,50)
								oItem4:Radio := .T.
								oItem4:Checked := .T.
								oItem4:CloseOnClick := 0/*exCloseOnClick*/
								oItem4:Shortcut := "1"
							oItem5 := oItems2:Add("Sub-Item 3.2",0,60)
								oItem5:Radio := .T.
								oItem5:CloseOnClick := 0/*exCloseOnClick*/
								oItem5:Shortcut := "2"
							oItem6 := oItems2:Add("Sub-Item 3.2",0,70)
								oItem6:Radio := .T.
								oItem6:CloseOnClick := 0/*exCloseOnClick*/
								oItem6:Shortcut := "3 + 33"
			oItems:Add("")
			oItems:Add("Press <b>CTRL or ALT")

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
211
How can I disable a shortcut key

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem,oItem1,oItem2,oItem3,oItem4,oItem5,oItem6
	LOCAL oItems,oItems1,oItems2
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oItems := oRibbon:Items()
			oItems:PopupAppearance := 6/*ShadowBorder*/
			oItem := oItems:Add("",2,10)
				oItem:GroupPopup := 3/*exNoGroupPopupFrame+exGroupPopup*/
				oItems1 := oItem:Items()
					oItem1 := oItems1:Add("Item 1",0,20)
						oItem1:Check := .T.
						oItem1:Shortcut := "ALT+1"
					oItem2 := oItems1:Add("Item 2",0,30)
						oItem2:Enabled := .F.
						oItem2:Check := .T.
						oItem2:Checked := .T.
						oItem2:Shortcut := "ALT+2"
					oItem3 := oItems1:Add("Item 3",2,40)
						oItem3:Shortcut := "ALT+3"
						oItems2 := oItem3:Items()
							oItem4 := oItems2:Add("Sub-Item 3.1",0,50)
								oItem4:Radio := .T.
								oItem4:Checked := .T.
								oItem4:CloseOnClick := 0/*exCloseOnClick*/
								oItem4:Shortcut := "1"
							oItem5 := oItems2:Add("Sub-Item 3.2",0,60)
								oItem5:Radio := .T.
								oItem5:CloseOnClick := 0/*exCloseOnClick*/
								oItem5:Shortcut := "2"
							oItem6 := oItems2:Add("Sub-Item 3.2",0,70)
								oItem6:Radio := .T.
								oItem6:CloseOnClick := 0/*exCloseOnClick*/
								oItem6:Shortcut := "3 + 33"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
210
I have noticed that the shortcut keys are still visible while I clicking the control. Is it possible to hide them as soon as user clicks anywhere
#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem,oItem1,oItem2,oItem3,oItem4,oItem5,oItem6
	LOCAL oItems,oItems1,oItems2
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:ShortcutKeyVisible := 260/*exCloseShortcutKeysOnClick+exShowShortcutKeysToggleDelayed*/
		oItems := oRibbon:Items()
			oItems:PopupAppearance := 6/*ShadowBorder*/
			oItem := oItems:Add("",2,10)
				oItem:GroupPopup := 3/*exNoGroupPopupFrame+exGroupPopup*/
				oItems1 := oItem:Items()
					oItem1 := oItems1:Add("Item 1",0,20)
						oItem1:Check := .T.
						oItem1:Shortcut := "ALT+1"
					oItem2 := oItems1:Add("Item 2",0,30)
						oItem2:Check := .T.
						oItem2:Checked := .T.
						oItem2:Shortcut := "ALT+2"
					oItem3 := oItems1:Add("Item 3",2,40)
						oItem3:Shortcut := "ALT+3"
						oItems2 := oItem3:Items()
							oItem4 := oItems2:Add("Sub-Item 3.1",0,50)
								oItem4:Radio := .T.
								oItem4:Checked := .T.
								oItem4:CloseOnClick := 0/*exCloseOnClick*/
								oItem4:Shortcut := "1"
							oItem5 := oItems2:Add("Sub-Item 3.2",0,60)
								oItem5:Radio := .T.
								oItem5:CloseOnClick := 0/*exCloseOnClick*/
								oItem5:Shortcut := "2"
							oItem6 := oItems2:Add("Sub-Item 3.2",0,70)
								oItem6:Radio := .T.
								oItem6:CloseOnClick := 0/*exCloseOnClick*/
								oItem6:Shortcut := "3 + 33"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
209
I have a shortcut that's not currently visible, the question is if I can invoke somehow
PROCEDURE OnCheckItem(oRibbon,Itm)
	DevOut( Transform(Itm,"") )
RETURN

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem,oItem1,oItem2,oItem3,oItem4,oItem5,oItem6
	LOCAL oItems,oItems1,oItems2
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:CheckItem := {|Itm| OnCheckItem(oRibbon,Itm)} /*Occurs when the user checks the item.*/

		oRibbon:ShortcutKeyVisible := 132/*exAllowShortcutKeysIfNotShown+exShowShortcutKeysToggleDelayed*/
		oItems := oRibbon:Items()
			oItems:PopupAppearance := 6/*ShadowBorder*/
			oItem := oItems:Add("",2,10)
				oItem:GroupPopup := 3/*exNoGroupPopupFrame+exGroupPopup*/
				oItems1 := oItem:Items()
					oItem1 := oItems1:Add("Item 1",0,20)
						oItem1:Check := .T.
						oItem1:Shortcut := "ALT+1"
					oItem2 := oItems1:Add("Item 2",0,30)
						oItem2:Check := .T.
						oItem2:Checked := .T.
						oItem2:Shortcut := "ALT+2"
					oItem3 := oItems1:Add("Item 3",2,40)
						oItem3:Shortcut := "ALT+3"
						oItems2 := oItem3:Items()
							oItem4 := oItems2:Add("Sub-Item 3.1",0,50)
								oItem4:Radio := .T.
								oItem4:Checked := .T.
								oItem4:CloseOnClick := 0/*exCloseOnClick*/
								oItem4:Shortcut := "1"
							oItem5 := oItems2:Add("Sub-Item 3.2",0,60)
								oItem5:Radio := .T.
								oItem5:CloseOnClick := 0/*exCloseOnClick*/
								oItem5:Shortcut := "2"
							oItem6 := oItems2:Add("Sub-Item 3.2",0,70)
								oItem6:Radio := .T.
								oItem6:CloseOnClick := 0/*exCloseOnClick*/
								oItem6:Shortcut := "ALT + 4"
			oItems:Add("press ALT + 4")

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
208
Can I specify a longer delay to display shortcut once the user presses any modifer keys
#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem,oItem1,oItem2,oItem3,oItem4,oItem5,oItem6
	LOCAL oItems,oItems1,oItems2
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:ShortcutKeyVisible := 68/*exLongerDelayShortcutKeys+exShowShortcutKeysToggleDelayed*/
		oItems := oRibbon:Items()
			oItems:PopupAppearance := 6/*ShadowBorder*/
			oItem := oItems:Add("",2,10)
				oItem:GroupPopup := 3/*exNoGroupPopupFrame+exGroupPopup*/
				oItems1 := oItem:Items()
					oItem1 := oItems1:Add("Item 1",0,20)
						oItem1:Check := .T.
						oItem1:Shortcut := "ALT+1"
					oItem2 := oItems1:Add("Item 2",0,30)
						oItem2:Check := .T.
						oItem2:Checked := .T.
						oItem2:Shortcut := "ALT+2"
					oItem3 := oItems1:Add("Item 3",2,40)
						oItem3:Shortcut := "ALT+3"
						oItems2 := oItem3:Items()
							oItem4 := oItems2:Add("Sub-Item 3.1",0,50)
								oItem4:Radio := .T.
								oItem4:Checked := .T.
								oItem4:CloseOnClick := 0/*exCloseOnClick*/
								oItem4:Shortcut := "1"
							oItem5 := oItems2:Add("Sub-Item 3.2",0,60)
								oItem5:Radio := .T.
								oItem5:CloseOnClick := 0/*exCloseOnClick*/
								oItem5:Shortcut := "2"
							oItem6 := oItems2:Add("Sub-Item 3.2",0,70)
								oItem6:Radio := .T.
								oItem6:CloseOnClick := 0/*exCloseOnClick*/
								oItem6:Shortcut := "3+33"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
207
How can I display extended shortcut keys

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem,oItem1,oItem2,oItem3,oItem4,oItem5,oItem6
	LOCAL oItems,oItems1,oItems2
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:ShortcutKeyVisible := 36/*exDisplayShortcutKeysAllAvailable+exShowShortcutKeysToggleDelayed*/
		oItems := oRibbon:Items()
			oItems:PopupAppearance := 6/*ShadowBorder*/
			oItem := oItems:Add("",2,10)
				oItem:GroupPopup := 3/*exNoGroupPopupFrame+exGroupPopup*/
				oItems1 := oItem:Items()
					oItem1 := oItems1:Add("Item 1",0,20)
						oItem1:Check := .T.
						oItem1:Shortcut := "ALT+1"
					oItem2 := oItems1:Add("Item 2",0,30)
						oItem2:Check := .T.
						oItem2:Checked := .T.
						oItem2:Shortcut := "ALT+2"
					oItem3 := oItems1:Add("Item 3",2,40)
						oItem3:Shortcut := "ALT+3"
						oItems2 := oItem3:Items()
							oItem4 := oItems2:Add("Sub-Item 3.1",0,50)
								oItem4:Radio := .T.
								oItem4:Checked := .T.
								oItem4:CloseOnClick := 0/*exCloseOnClick*/
								oItem4:Shortcut := "1"
							oItem5 := oItems2:Add("Sub-Item 3.2",0,60)
								oItem5:Radio := .T.
								oItem5:CloseOnClick := 0/*exCloseOnClick*/
								oItem5:Shortcut := "2"
							oItem6 := oItems2:Add("Sub-Item 3.2",0,70)
								oItem6:Radio := .T.
								oItem6:CloseOnClick := 0/*exCloseOnClick*/
								oItem6:Shortcut := "333"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
206
Is it possible to disable the shortcut keys, whithout changing the Shortcut property

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem,oItem1,oItem2,oItem3,oItem4,oItem5,oItem6
	LOCAL oItems,oItems1,oItems2
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:ShortcutKeyVisible := 52/*exDisplayShortcutKeysAllAvailable+exDisableShortcutKeys+exShowShortcutKeysToggleDelayed*/
		oItems := oRibbon:Items()
			oItems:PopupAppearance := 6/*ShadowBorder*/
			oItem := oItems:Add("",2,10)
				oItem:GroupPopup := 3/*exNoGroupPopupFrame+exGroupPopup*/
				oItems1 := oItem:Items()
					oItem1 := oItems1:Add("Item 1",0,20)
						oItem1:Check := .T.
						oItem1:Shortcut := "ALT+1"
					oItem2 := oItems1:Add("Item 2",0,30)
						oItem2:Check := .T.
						oItem2:Checked := .T.
						oItem2:Shortcut := "ALT+2"
					oItem3 := oItems1:Add("Item 3",2,40)
						oItem3:Shortcut := "ALT+3"
						oItems2 := oItem3:Items()
							oItem4 := oItems2:Add("Sub-Item 3.1",0,50)
								oItem4:Radio := .T.
								oItem4:Checked := .T.
								oItem4:CloseOnClick := 0/*exCloseOnClick*/
								oItem4:Shortcut := "1"
							oItem5 := oItems2:Add("Sub-Item 3.2",0,60)
								oItem5:Radio := .T.
								oItem5:CloseOnClick := 0/*exCloseOnClick*/
								oItem5:Shortcut := "2"
							oItem6 := oItems2:Add("Sub-Item 3.2",0,70)
								oItem6:Radio := .T.
								oItem6:CloseOnClick := 0/*exCloseOnClick*/
								oItem6:Shortcut := "33+3"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
205
How can display the shortcut keys only when modifier keys are pressed

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem,oItem1,oItem2,oItem3,oItem4,oItem5,oItem6
	LOCAL oItems,oItems1,oItems2
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:ShortcutKeyVisible := 1/*exShowShortcutKeysPressOnly*/
		oItems := oRibbon:Items()
			oItems:PopupAppearance := 6/*ShadowBorder*/
			oItem := oItems:Add("",2,10)
				oItem:GroupPopup := 3/*exNoGroupPopupFrame+exGroupPopup*/
				oItems1 := oItem:Items()
					oItem1 := oItems1:Add("Item 1",0,20)
						oItem1:Check := .T.
						oItem1:Shortcut := "ALT+1"
					oItem2 := oItems1:Add("Item 2",0,30)
						oItem2:Check := .T.
						oItem2:Checked := .T.
						oItem2:Shortcut := "ALT+2"
					oItem3 := oItems1:Add("Item 3",2,40)
						oItem3:Shortcut := "ALT+3"
						oItems2 := oItem3:Items()
							oItem4 := oItems2:Add("Sub-Item 3.1",0,50)
								oItem4:Radio := .T.
								oItem4:Checked := .T.
								oItem4:CloseOnClick := 0/*exCloseOnClick*/
								oItem4:Shortcut := "1"
							oItem5 := oItems2:Add("Sub-Item 3.2",0,60)
								oItem5:Radio := .T.
								oItem5:CloseOnClick := 0/*exCloseOnClick*/
								oItem5:Shortcut := "2"
							oItem6 := oItems2:Add("Sub-Item 3.2",0,70)
								oItem6:Radio := .T.
								oItem6:CloseOnClick := 0/*exCloseOnClick*/
								oItem6:Shortcut := "3+33"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
204
How can I assign a shortcut key to an item

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem,oItem1,oItem2,oItem3,oItem4,oItem5,oItem6
	LOCAL oItems,oItems1,oItems2
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oItems := oRibbon:Items()
			oItems:PopupAppearance := 6/*ShadowBorder*/
			oItem := oItems:Add("",2,10)
				oItem:GroupPopup := 3/*exNoGroupPopupFrame+exGroupPopup*/
				oItems1 := oItem:Items()
					oItem1 := oItems1:Add("Item 1",0,20)
						oItem1:Check := .T.
						oItem1:Shortcut := "ALT+1"
					oItem2 := oItems1:Add("Item 2",0,30)
						oItem2:Check := .T.
						oItem2:Checked := .T.
						oItem2:Shortcut := "ALT+2"
					oItem3 := oItems1:Add("Item 3",2,40)
						oItem3:Shortcut := "ALT+3"
						oItems2 := oItem3:Items()
							oItem4 := oItems2:Add("Sub-Item 3.1",0,50)
								oItem4:Radio := .T.
								oItem4:Checked := .T.
								oItem4:CloseOnClick := 0/*exCloseOnClick*/
								oItem4:Shortcut := "1"
							oItem5 := oItems2:Add("Sub-Item 3.2",0,60)
								oItem5:Radio := .T.
								oItem5:CloseOnClick := 0/*exCloseOnClick*/
								oItem5:Shortcut := "2"
							oItem6 := oItems2:Add("Sub-Item 3.2",0,70)
								oItem6:Radio := .T.
								oItem6:CloseOnClick := 0/*exCloseOnClick*/
								oItem6:Shortcut := "33+3"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
203
Is it possible to insert items at a specified position during runtime, without rebuilding the entire item which hosts the items

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

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

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oItems := oRibbon:Items()
			oItems:Add("Item A",0,1000)
			oItems:Add("Item B",0,1001)
			oItems:Add("Item C",0,1002):Position := 0

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
202
Is it possible to have a popup on a radio button when it is checked

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

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

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:ToString := "[group=0x03][id=0](Link[id=10][typ=2][grp=100][chk=1],Move To[id=20][typ=2][grp=100][spchk][arrow=0]())"
		oItem := oRibbon:Items:Item(20)
			oItem:Items():Add("Item A",0,1000)
			oItem:Items():Add("Item B",0,1001)
			oItem:Items():Add("Item C",0,1002)

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
201
Is it possible to minimize the control, once the user clicks a button

PROCEDURE OnCheckItem(oRibbon,Itm)
	oRibbon:Items:Item(-99):Visible := oRibbon:Items:Item(-999):Checked()
	DevOut( "RequiredHeight" )
	DevOut( Transform(oRibbon:RequiredHeight(),"") )
RETURN

PROCEDURE OnUncheckItem(oRibbon,Itm)
	oRibbon:Items:Item(-99):Visible := oRibbon:Items:Item(-999):Checked()
	DevOut( "RequiredHeight" )
	DevOut( Transform(oRibbon:RequiredHeight(),"") )
RETURN

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oAppearance
	LOCAL oItem,oItem1,oItem10,oItem11,oItem12,oItem13,oItem14,oItem15,oItem16,oItem17,oItem18,oItem19,oItem2,oItem3,oItem4,oItem5,oItem6,oItem7,oItem8,oItem9,var_Item,var_Item1,var_Item2,var_Item3,var_Item4
	LOCAL oItems,oItems1,oItems10,oItems11,oItems12,oItems13,oItems2,oItems3,oItems4,oItems5,oItems6,oItems7,oItems8,oItems9
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:CheckItem := {|Itm| OnCheckItem(oRibbon,Itm)} /*Occurs when the user checks the item.*/
		oRibbon:UncheckItem := {|Itm| OnUncheckItem(oRibbon,Itm)} /*Occurs when the user unchecks the item.*/

		oItems := oRibbon:Items()
			oItems:ToString := "[id=0][group=0x03]([id=-999][chk][height=18]),[id=-99][bg=0x01000000][group=0x03][itemspad=4,4,4,4]([id=9000])"
			oItem := oItems:Item(-999)
				oItem:Check := .T.
				oItem:Checked := oRibbon:Item(-99):Visible()
			oItems1 := oItems:Item(0):Items()
				oItems1:Add("",0,0):Padding := "8,0,0,0"
				var_Item3 := oItems1:Add("New Page")
					var_Item3:ToString := "[id=0][typ=2][chk=1][spchk=-1][show=1][grp=10][bghot=0x12000000][bgsel=0x11000000][bgselhot=0x14000000][group=0x03][tab=9000][pad=4,0,4,0][popupoffset=-4,-1]([id=0][group=0x03]([id=0][group=0x03]))"
					var_Item3:ID := 200
					var_Item3:Caption := "Page1"
					var_Item3:ShowPopupAlign := 1/*exShowPopupAlignDown*/
					oItem1 := var_Item3:Items:Item(0)
						var_Item := oItem1:Items:Add("New Group")
							var_Item:ToString := "[id=0][group=0x03][itemspad=4,4,4,18][itemsbg=0x02000000][itemsbghot=0x04000000]()"
							var_Item:Caption := "<b><font ;14>A"
							oItems2 := var_Item:Items()
								oItems2:BackgroundExt := "bottom[16,text=`<fgcolor A0A0A0><font ;8>Horizontal`,align=0x11]"
								oItem2 := oItems2:Add("",2)
									oItem2:GroupPopup := 17/*exGroupPopupEqualWidth+exGroupPopup*/
									oItem2:Caption := ""
									oItems3 := oItem2:Items()
										oItem3 := oItems3:Add("R1")
											oItem3:RadioGroup := 100
											oItem3:Radio := .T.
											oItem3:ShowCheckedAsSelected := 1/*exDisplayItemHighlight*/
											oItem3:Checked := .F.
										oItem4 := oItems3:Add("R2")
											oItem4:RadioGroup := 100
											oItem4:Radio := .T.
											oItem4:ShowCheckedAsSelected := 1/*exDisplayItemHighlight*/
											oItem4:Checked := .T.
										oItem5 := oItems3:Add("R3")
											oItem5:RadioGroup := 100
											oItem5:Radio := .T.
											oItem5:ShowCheckedAsSelected := 1/*exDisplayItemHighlight*/
											oItem5:Checked := .F.
						var_Item1 := oItem1:Items:Add("New Group")
							var_Item1:ToString := "[id=0][group=0x03][itemspad=4,4,4,18][itemsbg=0x02000000][itemsbghot=0x04000000]()"
							var_Item1:Caption := "<b><font ;14>B"
							oItems4 := var_Item1:Items()
								oItems4:BackgroundExt := "bottom[16,text=`<fgcolor A0A0A0><font ;8>Vertical`,align=0x11]"
								oItem6 := oItems4:Add("",2)
									oItem6:GroupPopup := 289/*exGroupPopupVertical+exGroupPopupEqualHeight+exGroupPopup*/
									oItem6:Caption := ""
									oItems5 := oItem6:Items()
										oItem7 := oItems5:Add("C1")
											oItem7:Check := .T.
											oItem7:Checked := .T.
										oItem8 := oItems5:Add("C2")
											oItem8:Check := .T.
											oItem8:Checked := .F.
										oItem9 := oItems5:Add("C3")
											oItem9:Check := .T.
											oItem9:Checked := .T.
						oItem1:Items():Add("",0,0):Padding := "4,0,0,0"
						var_Item2 := oItem1:Items:Add("New Group")
							var_Item2:ToString := "[id=0][group=0x03][itemspad=4,4,4,18][itemsbg=0x02000000][itemsbghot=0x04000000]()"
							var_Item2:Caption := ""
							oItems6 := var_Item2:Items()
								oItems6:BackgroundExt := "bottom[16,text=`<fgcolor A0A0A0><font ;8>Mixt`,align=0x11]"
								oItem10 := oItems6:Add("",0)
									oItem10:AllowEdit := 1027/*exItemEditVertical+exItemEditSlider*/
									oItem10:ItemHeight := 76
									oItem10:EditBorder := 0/*exEditBorderNone*/
									oItem10:EditValue := 25
								oItem11 := oItems6:Add("",2)
									oItem11:GroupPopup := 259/*exGroupPopupVertical+exNoGroupPopupFrame+exGroupPopup*/
									oItem11:Caption := ""
									oItems7 := oItem11:Items()
										oItem12 := oItems7:Add("",2)
											oItem12:GroupPopup := 3/*exNoGroupPopupFrame+exGroupPopup*/
											oItems8 := oItem12:Items()
												oItem13 := oItems8:Add("Button1",2)
													oItem13:ShowAsButton := 275/*exShowAsSelectButtonBottom+exShowAsButtonAutoSize*/
													oItems9 := oItem13:Items()
														oItems9:Add("Item 1")
														oItems9:Add("Item 2")
														oItems9:Add("Item 3")
												oItems8:Add("",0,0):Padding := "4,0,0,0"
												oItem14 := oItems8:Add("Button2",2)
													oItem14:ShowAsButton := 275/*exShowAsSelectButtonBottom+exShowAsButtonAutoSize*/
													oItems10 := oItem14:Items()
														oItems10:Add("Item 4")
														oItems10:Add("Item 5")
														oItems10:Add("Item 6")
										oItem15 := oItems7:Add("Popup",2)
											oItem15:Alignment := 1/*exCenter*/
											oItems11 := oItem15:Items()
												oItems11:Add("Item 7"):Check := .T.
												oItems11:Add("Item 8")
												oItems12 := oItems11:Add("Item 9",2):Items()
													oItems12:Add("Item 10")
													oItems12:Add("Item 11")
													oItems12:Add("Item 12")
				var_Item4 := oItems1:Add("New Page")
					var_Item4:ToString := "[id=0][typ=2][chk=0][spchk=-1][show=1][grp=10][bghot=0x12000000][bgsel=0x11000000][bgselhot=0x14000000][group=0x03][tab=9000][pad=4,0,4,0][popupoffset=-4,-1]([id=0][group=0x03]([id=0][group=0x03]))"
					var_Item4:ID := 300
					var_Item4:Caption := "Page2"
					var_Item4:ShowPopupAlign := 1/*exShowPopupAlignDown*/
					oItem16 := var_Item4:Items:Item(0)
						oItems13 := oItem16:Items()
							oItem17 := oItems13:Add("S1")
								oItem17:ItemHeight := 88
								oItem17:AllowEdit := 1540/*exItemEditVertical+exItemEditSpin+exItemEditProgress*/
								oItem17:EditValue := 25
							oItem18 := oItems13:Add("S2")
								oItem18:ItemHeight := 88
								oItem18:AllowEdit := 1540/*exItemEditVertical+exItemEditSpin+exItemEditProgress*/
								oItem18:EditValue := 50
							oItem19 := oItems13:Add("S3")
								oItem19:ItemHeight := 88
								oItem19:AllowEdit := 1540/*exItemEditVertical+exItemEditSpin+exItemEditProgress*/
								oItem19:EditValue := 75
				oItems1:Add("",0,0):Padding := "8,0,0,0"
		oRibbon:PopupFlatAppearance := .F.
		oAppearance := oRibbon:VisualAppearance()
			oAppearance:Add(1,"C:\Program Files\Exontrol\ExRibbon\Sample\EBN\MSOffice-Ribbon\msor_background.ebn")
			oAppearance:Add(2,"C:\Program Files\Exontrol\ExRibbon\Sample\EBN\MSOffice-Ribbon\msor_groupt.ebn")
			oAppearance:Add(3,"C:\Program Files\Exontrol\ExRibbon\Sample\EBN\MSOffice-Ribbon\msor_groupo.ebn")
			oAppearance:Add(4,"C:\Program Files\Exontrol\ExRibbon\Sample\EBN\MSOffice-Ribbon\msor_grouphot.ebn")
			oAppearance:Add(5,"C:\Program Files\Exontrol\ExRibbon\Sample\EBN\MSOffice-Ribbon\msor_frameh.ebn")
			oAppearance:Add(6,"C:\Program Files\Exontrol\ExRibbon\Sample\EBN\MSOffice-Ribbon\msor_framehs.ebn")
			oAppearance:Add(7,"C:\Program Files\Exontrol\ExRibbon\Sample\EBN\MSOffice-Ribbon\msor_framehi.ebn")
			oAppearance:Add(8,"C:\Program Files\Exontrol\ExRibbon\Sample\EBN\MSOffice-Ribbon\msor_framehe.ebn")
			oAppearance:Add(9,"C:\Program Files\Exontrol\ExRibbon\Sample\EBN\MSOffice-Ribbon\msor_framevs.ebn")
			oAppearance:Add(10,"C:\Program Files\Exontrol\ExRibbon\Sample\EBN\MSOffice-Ribbon\msor_framevi.ebn")
			oAppearance:Add(11,"C:\Program Files\Exontrol\ExRibbon\Sample\EBN\MSOffice-Ribbon\msor_frameve.ebn")
			oAppearance:Add(12,"C:\Program Files\Exontrol\ExRibbon\Sample\EBN\MSOffice-Ribbon\msor_select.ebn")
			oAppearance:Add(13,"C:\Program Files\Exontrol\ExRibbon\Sample\EBN\MSOffice-Ribbon\msor_bordert.ebn")
			oAppearance:Add(14,"C:\Program Files\Exontrol\ExRibbon\Sample\EBN\MSOffice-Ribbon\msor_buttond.ebn")
			oAppearance:Add(15,"C:\Program Files\Exontrol\ExRibbon\Sample\EBN\MSOffice-Ribbon\msor_buttonu.ebn")
			oAppearance:Add(16,"C:\Program Files\Exontrol\ExRibbon\Sample\EBN\MSOffice-Ribbon\msor_tab.ebn")
			oAppearance:Add(17,"CP:16 0 0 0 1")
			oAppearance:Add(18,"C:\Program Files\Exontrol\ExRibbon\Sample\EBN\MSOffice-Ribbon\msor_tabhot.ebn")
			oAppearance:Add(19,"C:\Program Files\Exontrol\ExRibbon\Sample\EBN\MSOffice-Ribbon\msor_tabselhot.ebn")
			oAppearance:Add(20,"CP:19 0 0 0 1")
		oRibbon:SetProperty("ForeColor",AutomationTranslateColor( GraMakeRGBColor  ( { 21,66,139 } )  , .F. ))
		oRibbon:SetProperty("SelBackColor",0xe000000)
		oRibbon:LocalAppearance := 6/*ShadowBorder*/
		oRibbon:Appearance := 16777216/*0x1000000+*/
		oRibbon:SetProperty("Background",64/*exToolTipAppearance*/,oRibbon:Appearance())
		oRibbon:SetProperty("Background",2/*0x2+*/,0xd000000)
		oRibbon:SetProperty("Background",105/*exGroupPopupFrameSingle*/,0x5000000)
		oRibbon:SetProperty("Background",106/*exGroupPopupFrameHStart*/,0x6000000)
		oRibbon:SetProperty("Background",107/*exGroupPopupFrameHIntermediate*/,0x7000000)
		oRibbon:SetProperty("Background",108/*exGroupPopupFrameHEnd*/,0x8000000)
		oRibbon:SetProperty("Background",116/*exGroupPopupFrameVStart*/,0x9000000)
		oRibbon:SetProperty("Background",117/*exGroupPopupFrameVIntermediate*/,0xa000000)
		oRibbon:SetProperty("Background",118/*exGroupPopupFrameVEnd*/,0xb000000)
		oRibbon:SetProperty("Background",110/*exMenuHotBackColor*/,0xc000000)
		oRibbon:SetProperty("Background",112/*exMenuSelHotBackColor*/,0xf000000)
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
200
Is there any debug option, so I can see the IDs of the items I have in the control

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem,oItem1
	LOCAL oItems,oItems1
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:Debug := .T.
		oItems := oRibbon:Items()
			oItem := oItems:Add("Expand",2)
				oItem:GroupPopup := 259/*exGroupPopupVertical+exNoGroupPopupFrame+exGroupPopup*/
				oItem:Check := .T.
				oItem:ShowPopupOnChecked := .T.
				oItems1 := oItem:Items()
					oItems1:Padding := "22,0,0,0"
					oItems1:Add("Radio 1"):Radio := .T.
					oItems1:Add("Radio 2"):Radio := .T.
					oItem1 := oItems1:Add("Radio 3")
						oItem1:Radio := .T.
						oItem1:Checked := .T.
				oItem:Checked := .T.
			oItems:Add(""):ToString := "Expand[typ=1][chk=1][spchk=-1][group=0x0103][itemspad=22,0,0,0](Radio 1[id=20][typ=2],Radio 2[id=30][typ=2],Radio 3[id=40][typ=2][chk=1])"
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
199
Microsoft Office - Ribbon Like - Minimized

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oAppearance
	LOCAL oItem,oItem1,oItem10,oItem11,oItem12,oItem13,oItem14,oItem15,oItem16,oItem17,oItem18,oItem2,oItem3,oItem4,oItem5,oItem6,oItem7,oItem8,oItem9,var_Item,var_Item1,var_Item2,var_Item3,var_Item4
	LOCAL oItems,oItems1,oItems10,oItems11,oItems12,oItems2,oItems3,oItems4,oItems5,oItems6,oItems7,oItems8,oItems9
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:ToString := "[id=0][group=0x03](),[id=-99][bg=0x01000000][group=0x03][itemspad=4,4,4,4]([id=9000])"
		oRibbon:Item(-99):Visible := .F.
		oItems := oRibbon:Item(0):Items()
			oItems:Add("",0,0):Padding := "8,0,0,0"
			var_Item3 := oItems:Add("New Page")
				var_Item3:ToString := "[id=0][typ=2][chk=1][spchk=-1][show=1][grp=10][bghot=0x12000000][bgsel=0x11000000][bgselhot=0x14000000][group=0x03][tab=9000][pad=4,0,4,0][popupoffset=-4,-1]([id=0][group=0x03]([id=0][group=0x03]))"
				var_Item3:ID := 200
				var_Item3:Caption := "Page1"
				var_Item3:ShowPopupAlign := 1/*exShowPopupAlignDown*/
				oItem := var_Item3:Items:Item(0)
					var_Item := oItem:Items:Add("New Group")
						var_Item:ToString := "[id=0][group=0x03][itemspad=4,4,4,18][itemsbg=0x02000000][itemsbghot=0x04000000]()"
						var_Item:Caption := "<b><font ;14>A"
						oItems1 := var_Item:Items()
							oItems1:BackgroundExt := "bottom[16,text=`<fgcolor A0A0A0><font ;8>Horizontal`,align=0x11]"
							oItem1 := oItems1:Add("",2)
								oItem1:GroupPopup := 17/*exGroupPopupEqualWidth+exGroupPopup*/
								oItem1:Caption := ""
								oItems2 := oItem1:Items()
									oItem2 := oItems2:Add("R1")
										oItem2:RadioGroup := 100
										oItem2:Radio := .T.
										oItem2:ShowCheckedAsSelected := 1/*exDisplayItemHighlight*/
										oItem2:Checked := .F.
									oItem3 := oItems2:Add("R2")
										oItem3:RadioGroup := 100
										oItem3:Radio := .T.
										oItem3:ShowCheckedAsSelected := 1/*exDisplayItemHighlight*/
										oItem3:Checked := .T.
									oItem4 := oItems2:Add("R3")
										oItem4:RadioGroup := 100
										oItem4:Radio := .T.
										oItem4:ShowCheckedAsSelected := 1/*exDisplayItemHighlight*/
										oItem4:Checked := .F.
					var_Item1 := oItem:Items:Add("New Group")
						var_Item1:ToString := "[id=0][group=0x03][itemspad=4,4,4,18][itemsbg=0x02000000][itemsbghot=0x04000000]()"
						var_Item1:Caption := "<b><font ;14>B"
						oItems3 := var_Item1:Items()
							oItems3:BackgroundExt := "bottom[16,text=`<fgcolor A0A0A0><font ;8>Vertical`,align=0x11]"
							oItem5 := oItems3:Add("",2)
								oItem5:GroupPopup := 289/*exGroupPopupVertical+exGroupPopupEqualHeight+exGroupPopup*/
								oItem5:Caption := ""
								oItems4 := oItem5:Items()
									oItem6 := oItems4:Add("C1")
										oItem6:Check := .T.
										oItem6:Checked := .T.
									oItem7 := oItems4:Add("C2")
										oItem7:Check := .T.
										oItem7:Checked := .F.
									oItem8 := oItems4:Add("C3")
										oItem8:Check := .T.
										oItem8:Checked := .T.
					oItem:Items():Add("",0,0):Padding := "4,0,0,0"
					var_Item2 := oItem:Items:Add("New Group")
						var_Item2:ToString := "[id=0][group=0x03][itemspad=4,4,4,18][itemsbg=0x02000000][itemsbghot=0x04000000]()"
						var_Item2:Caption := ""
						oItems5 := var_Item2:Items()
							oItems5:BackgroundExt := "bottom[16,text=`<fgcolor A0A0A0><font ;8>Mixt`,align=0x11]"
							oItem9 := oItems5:Add("",0)
								oItem9:AllowEdit := 1027/*exItemEditVertical+exItemEditSlider*/
								oItem9:ItemHeight := 76
								oItem9:EditBorder := 0/*exEditBorderNone*/
								oItem9:EditValue := 25
							oItem10 := oItems5:Add("",2)
								oItem10:GroupPopup := 259/*exGroupPopupVertical+exNoGroupPopupFrame+exGroupPopup*/
								oItem10:Caption := ""
								oItems6 := oItem10:Items()
									oItem11 := oItems6:Add("",2)
										oItem11:GroupPopup := 3/*exNoGroupPopupFrame+exGroupPopup*/
										oItems7 := oItem11:Items()
											oItem12 := oItems7:Add("Button1",2)
												oItem12:ShowAsButton := 275/*exShowAsSelectButtonBottom+exShowAsButtonAutoSize*/
												oItems8 := oItem12:Items()
													oItems8:Add("Item 1")
													oItems8:Add("Item 2")
													oItems8:Add("Item 3")
											oItems7:Add("",0,0):Padding := "4,0,0,0"
											oItem13 := oItems7:Add("Button2",2)
												oItem13:ShowAsButton := 275/*exShowAsSelectButtonBottom+exShowAsButtonAutoSize*/
												oItems9 := oItem13:Items()
													oItems9:Add("Item 4")
													oItems9:Add("Item 5")
													oItems9:Add("Item 6")
									oItem14 := oItems6:Add("Popup",2)
										oItem14:Alignment := 1/*exCenter*/
										oItems10 := oItem14:Items()
											oItems10:Add("Item 7"):Check := .T.
											oItems10:Add("Item 8")
											oItems11 := oItems10:Add("Item 9",2):Items()
												oItems11:Add("Item 10")
												oItems11:Add("Item 11")
												oItems11:Add("Item 12")
			var_Item4 := oItems:Add("New Page")
				var_Item4:ToString := "[id=0][typ=2][chk=0][spchk=-1][show=1][grp=10][bghot=0x12000000][bgsel=0x11000000][bgselhot=0x14000000][group=0x03][tab=9000][pad=4,0,4,0][popupoffset=-4,-1]([id=0][group=0x03]([id=0][group=0x03]))"
				var_Item4:ID := 300
				var_Item4:Caption := "Page2"
				var_Item4:ShowPopupAlign := 1/*exShowPopupAlignDown*/
				oItem15 := var_Item4:Items:Item(0)
					oItems12 := oItem15:Items()
						oItem16 := oItems12:Add("S1")
							oItem16:ItemHeight := 88
							oItem16:AllowEdit := 1540/*exItemEditVertical+exItemEditSpin+exItemEditProgress*/
							oItem16:EditValue := 25
						oItem17 := oItems12:Add("S2")
							oItem17:ItemHeight := 88
							oItem17:AllowEdit := 1540/*exItemEditVertical+exItemEditSpin+exItemEditProgress*/
							oItem17:EditValue := 50
						oItem18 := oItems12:Add("S3")
							oItem18:ItemHeight := 88
							oItem18:AllowEdit := 1540/*exItemEditVertical+exItemEditSpin+exItemEditProgress*/
							oItem18:EditValue := 75
			oItems:Add("",0,0):Padding := "8,0,0,0"
		oRibbon:PopupFlatAppearance := .F.
		oAppearance := oRibbon:VisualAppearance()
			oAppearance:Add(1,"C:\Program Files\Exontrol\ExRibbon\Sample\EBN\MSOffice-Ribbon\msor_background.ebn")
			oAppearance:Add(2,"C:\Program Files\Exontrol\ExRibbon\Sample\EBN\MSOffice-Ribbon\msor_groupt.ebn")
			oAppearance:Add(3,"C:\Program Files\Exontrol\ExRibbon\Sample\EBN\MSOffice-Ribbon\msor_groupo.ebn")
			oAppearance:Add(4,"C:\Program Files\Exontrol\ExRibbon\Sample\EBN\MSOffice-Ribbon\msor_grouphot.ebn")
			oAppearance:Add(5,"C:\Program Files\Exontrol\ExRibbon\Sample\EBN\MSOffice-Ribbon\msor_frameh.ebn")
			oAppearance:Add(6,"C:\Program Files\Exontrol\ExRibbon\Sample\EBN\MSOffice-Ribbon\msor_framehs.ebn")
			oAppearance:Add(7,"C:\Program Files\Exontrol\ExRibbon\Sample\EBN\MSOffice-Ribbon\msor_framehi.ebn")
			oAppearance:Add(8,"C:\Program Files\Exontrol\ExRibbon\Sample\EBN\MSOffice-Ribbon\msor_framehe.ebn")
			oAppearance:Add(9,"C:\Program Files\Exontrol\ExRibbon\Sample\EBN\MSOffice-Ribbon\msor_framevs.ebn")
			oAppearance:Add(10,"C:\Program Files\Exontrol\ExRibbon\Sample\EBN\MSOffice-Ribbon\msor_framevi.ebn")
			oAppearance:Add(11,"C:\Program Files\Exontrol\ExRibbon\Sample\EBN\MSOffice-Ribbon\msor_frameve.ebn")
			oAppearance:Add(12,"C:\Program Files\Exontrol\ExRibbon\Sample\EBN\MSOffice-Ribbon\msor_select.ebn")
			oAppearance:Add(13,"C:\Program Files\Exontrol\ExRibbon\Sample\EBN\MSOffice-Ribbon\msor_bordert.ebn")
			oAppearance:Add(14,"C:\Program Files\Exontrol\ExRibbon\Sample\EBN\MSOffice-Ribbon\msor_buttond.ebn")
			oAppearance:Add(15,"C:\Program Files\Exontrol\ExRibbon\Sample\EBN\MSOffice-Ribbon\msor_buttonu.ebn")
			oAppearance:Add(16,"C:\Program Files\Exontrol\ExRibbon\Sample\EBN\MSOffice-Ribbon\msor_tab.ebn")
			oAppearance:Add(17,"CP:16 0 0 0 1")
			oAppearance:Add(18,"C:\Program Files\Exontrol\ExRibbon\Sample\EBN\MSOffice-Ribbon\msor_tabhot.ebn")
			oAppearance:Add(19,"C:\Program Files\Exontrol\ExRibbon\Sample\EBN\MSOffice-Ribbon\msor_tabselhot.ebn")
			oAppearance:Add(20,"CP:19 0 0 0 1")
		oRibbon:SetProperty("ForeColor",AutomationTranslateColor( GraMakeRGBColor  ( { 21,66,139 } )  , .F. ))
		oRibbon:SetProperty("SelBackColor",0xe000000)
		oRibbon:LocalAppearance := 6/*ShadowBorder*/
		oRibbon:Appearance := 16777216/*0x1000000+*/
		oRibbon:SetProperty("Background",64/*exToolTipAppearance*/,oRibbon:Appearance())
		oRibbon:SetProperty("Background",2/*0x2+*/,0xd000000)
		oRibbon:SetProperty("Background",105/*exGroupPopupFrameSingle*/,0x5000000)
		oRibbon:SetProperty("Background",106/*exGroupPopupFrameHStart*/,0x6000000)
		oRibbon:SetProperty("Background",107/*exGroupPopupFrameHIntermediate*/,0x7000000)
		oRibbon:SetProperty("Background",108/*exGroupPopupFrameHEnd*/,0x8000000)
		oRibbon:SetProperty("Background",116/*exGroupPopupFrameVStart*/,0x9000000)
		oRibbon:SetProperty("Background",117/*exGroupPopupFrameVIntermediate*/,0xa000000)
		oRibbon:SetProperty("Background",118/*exGroupPopupFrameVEnd*/,0xb000000)
		oRibbon:SetProperty("Background",110/*exMenuHotBackColor*/,0xc000000)
		oRibbon:SetProperty("Background",112/*exMenuSelHotBackColor*/,0xf000000)
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
198
Microsoft Paint - Ribbon Like - Minimized

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oAppearance
	LOCAL oItem,oItem1,oItem10,oItem11,oItem12,oItem13,oItem14,oItem15,oItem16,oItem17,oItem18,oItem2,oItem3,oItem4,oItem5,oItem6,oItem7,oItem8,oItem9,var_Item,var_Item1,var_Item2,var_Item3,var_Item4
	LOCAL oItems,oItems1,oItems10,oItems11,oItems12,oItems13,oItems2,oItems3,oItems4,oItems5,oItems6,oItems7,oItems8,oItems9
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oItems := oRibbon:Items()
			oItems:ToString := "[id=0][group=0x03](),[id=-99][bg=0x01000000][group=0x03][itemspad=4,4,4,4]([id=9000])"
			oItems:Item(-99):Visible := .F.
			oItems1 := oItems:Item(0):Items()
				oItems1:Add("",0,0):Padding := "8,0,0,0"
				var_Item3 := oItems1:Add("New Page")
					var_Item3:ToString := "[id=0][typ=2][chk=1][spchk=-1][show=1][grp=10][bghot=0x12000000][bgsel=0x11000000][bgselhot=0x14000000][group=0x03][tab=9000][pad=4,0,4,0][popupoffset=-4,-1]([id=0][group=0x03]([id=0][group=0x03]))"
					var_Item3:ID := 200
					var_Item3:Caption := "Page1"
					var_Item3:ShowPopupAlign := 1/*exShowPopupAlignDown*/
					oItem := var_Item3:Items:Item(0)
						var_Item := oItem:Items:Add("New Group")
							var_Item:ToString := "[id=0][group=0x03][itemspad=4,4,4,18][itemsbg=0x02000000][itemsbghot=0x04000000]()"
							var_Item:Caption := "<b><font ;14>A"
							oItems2 := var_Item:Items()
								oItems2:BackgroundExt := "bottom[16,text=`<fgcolor A0A0A0><font ;8>Horizontal`,align=0x11]"
								oItem1 := oItems2:Add("",2)
									oItem1:GroupPopup := 17/*exGroupPopupEqualWidth+exGroupPopup*/
									oItem1:Caption := ""
									oItems3 := oItem1:Items()
										oItem2 := oItems3:Add("R1")
											oItem2:RadioGroup := 100
											oItem2:Radio := .T.
											oItem2:ShowCheckedAsSelected := 1/*exDisplayItemHighlight*/
											oItem2:Checked := .F.
										oItem3 := oItems3:Add("R2")
											oItem3:RadioGroup := 100
											oItem3:Radio := .T.
											oItem3:ShowCheckedAsSelected := 1/*exDisplayItemHighlight*/
											oItem3:Checked := .T.
										oItem4 := oItems3:Add("R3")
											oItem4:RadioGroup := 100
											oItem4:Radio := .T.
											oItem4:ShowCheckedAsSelected := 1/*exDisplayItemHighlight*/
											oItem4:Checked := .F.
						var_Item1 := oItem:Items:Add("New Group")
							var_Item1:ToString := "[id=0][group=0x03][itemspad=4,4,4,18][itemsbg=0x02000000][itemsbghot=0x04000000]()"
							var_Item1:Caption := "<b><font ;14>B"
							oItems4 := var_Item1:Items()
								oItems4:BackgroundExt := "bottom[16,text=`<fgcolor A0A0A0><font ;8>Vertical`,align=0x11]"
								oItem5 := oItems4:Add("",2)
									oItem5:GroupPopup := 289/*exGroupPopupVertical+exGroupPopupEqualHeight+exGroupPopup*/
									oItem5:Caption := ""
									oItems5 := oItem5:Items()
										oItem6 := oItems5:Add("C1")
											oItem6:Check := .T.
											oItem6:Checked := .T.
										oItem7 := oItems5:Add("C2")
											oItem7:Check := .T.
											oItem7:Checked := .F.
										oItem8 := oItems5:Add("C3")
											oItem8:Check := .T.
											oItem8:Checked := .T.
						oItem:Items():Add("",0,0):Padding := "4,0,0,0"
						var_Item2 := oItem:Items:Add("New Group")
							var_Item2:ToString := "[id=0][group=0x03][itemspad=4,4,4,18][itemsbg=0x02000000][itemsbghot=0x04000000]()"
							var_Item2:Caption := ""
							oItems6 := var_Item2:Items()
								oItems6:BackgroundExt := "bottom[16,text=`<fgcolor A0A0A0><font ;8>Mixt`,align=0x11]"
								oItem9 := oItems6:Add("",0)
									oItem9:AllowEdit := 1027/*exItemEditVertical+exItemEditSlider*/
									oItem9:ItemHeight := 76
									oItem9:EditBorder := 0/*exEditBorderNone*/
									oItem9:EditValue := 25
								oItem10 := oItems6:Add("",2)
									oItem10:GroupPopup := 259/*exGroupPopupVertical+exNoGroupPopupFrame+exGroupPopup*/
									oItem10:Caption := ""
									oItems7 := oItem10:Items()
										oItem11 := oItems7:Add("",2)
											oItem11:GroupPopup := 3/*exNoGroupPopupFrame+exGroupPopup*/
											oItems8 := oItem11:Items()
												oItem12 := oItems8:Add("Button1",2)
													oItem12:ShowAsButton := 275/*exShowAsSelectButtonBottom+exShowAsButtonAutoSize*/
													oItems9 := oItem12:Items()
														oItems9:Add("Item 1")
														oItems9:Add("Item 2")
														oItems9:Add("Item 3")
												oItems8:Add("",0,0):Padding := "4,0,0,0"
												oItem13 := oItems8:Add("Button2",2)
													oItem13:ShowAsButton := 275/*exShowAsSelectButtonBottom+exShowAsButtonAutoSize*/
													oItems10 := oItem13:Items()
														oItems10:Add("Item 4")
														oItems10:Add("Item 5")
														oItems10:Add("Item 6")
										oItem14 := oItems7:Add("Popup",2)
											oItem14:Alignment := 1/*exCenter*/
											oItems11 := oItem14:Items()
												oItems11:Add("Item 7"):Check := .T.
												oItems11:Add("Item 8")
												oItems12 := oItems11:Add("Item 9",2):Items()
													oItems12:Add("Item 10")
													oItems12:Add("Item 11")
													oItems12:Add("Item 12")
				var_Item4 := oItems1:Add("New Page")
					var_Item4:ToString := "[id=0][typ=2][chk=0][spchk=-1][show=1][grp=10][bghot=0x12000000][bgsel=0x11000000][bgselhot=0x14000000][group=0x03][tab=9000][pad=4,0,4,0][popupoffset=-4,-1]([id=0][group=0x03]([id=0][group=0x03]))"
					var_Item4:ID := 300
					var_Item4:Caption := "Page2"
					var_Item4:ShowPopupAlign := 1/*exShowPopupAlignDown*/
					oItem15 := var_Item4:Items:Item(0)
						oItems13 := oItem15:Items()
							oItem16 := oItems13:Add("S1")
								oItem16:ItemHeight := 88
								oItem16:AllowEdit := 1540/*exItemEditVertical+exItemEditSpin+exItemEditProgress*/
								oItem16:EditValue := 25
							oItem17 := oItems13:Add("S2")
								oItem17:ItemHeight := 88
								oItem17:AllowEdit := 1540/*exItemEditVertical+exItemEditSpin+exItemEditProgress*/
								oItem17:EditValue := 50
							oItem18 := oItems13:Add("S3")
								oItem18:ItemHeight := 88
								oItem18:AllowEdit := 1540/*exItemEditVertical+exItemEditSpin+exItemEditProgress*/
								oItem18:EditValue := 75
				oItems1:Add("",0,0):Padding := "8,0,0,0"
		oRibbon:PopupFlatAppearance := .F.
		oAppearance := oRibbon:VisualAppearance()
			oAppearance:Add(1,"C:/Program Files/Exontrol/ExRibbon/Sample/EBN/MSPaint-Ribbon/mspr_background.ebn")
			oAppearance:Add(2,"C:/Program Files/Exontrol/ExRibbon/Sample/EBN/MSPaint-Ribbon/mspr_groupt.ebn")
			oAppearance:Add(3,"C:/Program Files/Exontrol/ExRibbon/Sample/EBN/MSPaint-Ribbon/mspr_groupo.ebn")
			oAppearance:Add(4,"C:/Program Files/Exontrol/ExRibbon/Sample/EBN/MSPaint-Ribbon/mspr_grouphot.ebn")
			oAppearance:Add(5,"C:/Program Files/Exontrol/ExRibbon/Sample/EBN/MSPaint-Ribbon/mspr_frameh.ebn")
			oAppearance:Add(6,"C:/Program Files/Exontrol/ExRibbon/Sample/EBN/MSPaint-Ribbon/mspr_framehs.ebn")
			oAppearance:Add(7,"C:/Program Files/Exontrol/ExRibbon/Sample/EBN/MSPaint-Ribbon/mspr_framehi.ebn")
			oAppearance:Add(8,"C:/Program Files/Exontrol/ExRibbon/Sample/EBN/MSPaint-Ribbon/mspr_framehe.ebn")
			oAppearance:Add(9,"C:/Program Files/Exontrol/ExRibbon/Sample/EBN/MSPaint-Ribbon/mspr_framevs.ebn")
			oAppearance:Add(10,"C:/Program Files/Exontrol/ExRibbon/Sample/EBN/MSPaint-Ribbon/mspr_framevi.ebn")
			oAppearance:Add(11,"C:/Program Files/Exontrol/ExRibbon/Sample/EBN/MSPaint-Ribbon/mspr_frameve.ebn")
			oAppearance:Add(12,"C:/Program Files/Exontrol/ExRibbon/Sample/EBN/MSPaint-Ribbon/mspr_select.ebn")
			oAppearance:Add(13,"C:/Program Files/Exontrol/ExRibbon/Sample/EBN/MSPaint-Ribbon/mspr_bordert.ebn")
			oAppearance:Add(14,"C:/Program Files/Exontrol/ExRibbon/Sample/EBN/MSPaint-Ribbon/mspr_buttond.ebn")
			oAppearance:Add(15,"C:/Program Files/Exontrol/ExRibbon/Sample/EBN/MSPaint-Ribbon/mspr_buttonu.ebn")
			oAppearance:Add(16,"C:/Program Files/Exontrol/ExRibbon/Sample/EBN/MSPaint-Ribbon/mspr_tab.ebn")
			oAppearance:Add(17,"CP:16 0 0 0 1")
			oAppearance:Add(18,"C:/Program Files/Exontrol/ExRibbon/Sample/EBN/MSPaint-Ribbon/mspr_tabhot.ebn")
			oAppearance:Add(19,"C:/Program Files/Exontrol/ExRibbon/Sample/EBN/MSPaint-Ribbon/mspr_tabselhot.ebn")
			oAppearance:Add(20,"CP:19 0 0 0 1")
		oRibbon:LocalAppearance := 6/*ShadowBorder*/
		oRibbon:Appearance := 16777216/*0x1000000+*/
		oRibbon:SetProperty("ForeColor",AutomationTranslateColor( GraMakeRGBColor  ( { 21,66,139 } )  , .F. ))
		oRibbon:SetProperty("SelBackColor",0xe000000)
		oRibbon:SetProperty("Background",64/*exToolTipAppearance*/,oRibbon:Appearance())
		oRibbon:SetProperty("Background",2/*0x2+*/,0xd000000)
		oRibbon:SetProperty("Background",105/*exGroupPopupFrameSingle*/,0x5000000)
		oRibbon:SetProperty("Background",106/*exGroupPopupFrameHStart*/,0x6000000)
		oRibbon:SetProperty("Background",107/*exGroupPopupFrameHIntermediate*/,0x7000000)
		oRibbon:SetProperty("Background",108/*exGroupPopupFrameHEnd*/,0x8000000)
		oRibbon:SetProperty("Background",116/*exGroupPopupFrameVStart*/,0x9000000)
		oRibbon:SetProperty("Background",117/*exGroupPopupFrameVIntermediate*/,0xa000000)
		oRibbon:SetProperty("Background",118/*exGroupPopupFrameVEnd*/,0xb000000)
		oRibbon:SetProperty("Background",110/*exMenuHotBackColor*/,0xc000000)
		oRibbon:SetProperty("Background",112/*exMenuSelHotBackColor*/,0xf000000)
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
197
Microsoft Windows 8.1 - Ribbon Like - Minimized

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oAppearance
	LOCAL oItem,oItem1,oItem10,oItem11,oItem12,oItem13,oItem14,oItem15,oItem16,oItem17,oItem18,oItem2,oItem3,oItem4,oItem5,oItem6,oItem7,oItem8,oItem9,var_Item,var_Item1,var_Item2,var_Item3,var_Item4
	LOCAL oItems,oItems1,oItems10,oItems11,oItems12,oItems13,oItems2,oItems3,oItems4,oItems5,oItems6,oItems7,oItems8,oItems9
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oItems := oRibbon:Items()
			oItems:ToString := "[id=0][group=0x03](),[id=-99][bg=0x01000000][group=0x03][itemspad=4,4,4,4]([id=9000])"
			oItems:Item(-99):Visible := .F.
			oItems1 := oItems:Item(0):Items()
				oItems1:Add("",0,0):Padding := "8,0,0,0"
				var_Item3 := oItems1:Add("New Page")
					var_Item3:ToString := "[id=0][typ=2][chk=1][spchk=-1][show=1][grp=10][bghot=0x12000000][bgsel=0x11000000][bgselhot=0x14000000][group=0x03][tab=9000][pad=4,0,4,0][popupoffset=-4,-1]([id=0][group=0x03]([id=0][group=0x03]))"
					var_Item3:ID := 200
					var_Item3:Caption := "Page1"
					var_Item3:ShowPopupAlign := 1/*exShowPopupAlignDown*/
					oItem := var_Item3:Items:Item(0)
						var_Item := oItem:Items:Add("New Group")
							var_Item:ToString := "[id=0][group=0x03][itemspad=4,4,4,18][itemsbg=0x02000000][itemsbghot=0x04000000]()"
							var_Item:Caption := "<b><font ;14>A"
							oItems2 := var_Item:Items()
								oItems2:BackgroundExt := "bottom[16,text=`<fgcolor A0A0A0><font ;8>Horizontal`,align=0x11]"
								oItem1 := oItems2:Add("",2)
									oItem1:GroupPopup := 17/*exGroupPopupEqualWidth+exGroupPopup*/
									oItem1:Caption := ""
									oItems3 := oItem1:Items()
										oItem2 := oItems3:Add("R1")
											oItem2:RadioGroup := 100
											oItem2:Radio := .T.
											oItem2:ShowCheckedAsSelected := 1/*exDisplayItemHighlight*/
											oItem2:Checked := .F.
										oItem3 := oItems3:Add("R2")
											oItem3:RadioGroup := 100
											oItem3:Radio := .T.
											oItem3:ShowCheckedAsSelected := 1/*exDisplayItemHighlight*/
											oItem3:Checked := .T.
										oItem4 := oItems3:Add("R3")
											oItem4:RadioGroup := 100
											oItem4:Radio := .T.
											oItem4:ShowCheckedAsSelected := 1/*exDisplayItemHighlight*/
											oItem4:Checked := .F.
						var_Item1 := oItem:Items:Add("New Group")
							var_Item1:ToString := "[id=0][group=0x03][itemspad=4,4,4,18][itemsbg=0x02000000][itemsbghot=0x04000000]()"
							var_Item1:Caption := "<b><font ;14>B"
							oItems4 := var_Item1:Items()
								oItems4:BackgroundExt := "bottom[16,text=`<fgcolor A0A0A0><font ;8>Vertical`,align=0x11]"
								oItem5 := oItems4:Add("",2)
									oItem5:GroupPopup := 289/*exGroupPopupVertical+exGroupPopupEqualHeight+exGroupPopup*/
									oItem5:Caption := ""
									oItems5 := oItem5:Items()
										oItem6 := oItems5:Add("C1")
											oItem6:Check := .T.
											oItem6:Checked := .T.
										oItem7 := oItems5:Add("C2")
											oItem7:Check := .T.
											oItem7:Checked := .F.
										oItem8 := oItems5:Add("C3")
											oItem8:Check := .T.
											oItem8:Checked := .T.
						oItem:Items():Add("",0,0):Padding := "4,0,0,0"
						var_Item2 := oItem:Items:Add("New Group")
							var_Item2:ToString := "[id=0][group=0x03][itemspad=4,4,4,18][itemsbg=0x02000000][itemsbghot=0x04000000]()"
							var_Item2:Caption := ""
							oItems6 := var_Item2:Items()
								oItems6:BackgroundExt := "bottom[16,text=`<fgcolor A0A0A0><font ;8>Mixt`,align=0x11]"
								oItem9 := oItems6:Add("",0)
									oItem9:AllowEdit := 1027/*exItemEditVertical+exItemEditSlider*/
									oItem9:ItemHeight := 76
									oItem9:EditBorder := 0/*exEditBorderNone*/
									oItem9:EditValue := 25
								oItem10 := oItems6:Add("",2)
									oItem10:GroupPopup := 259/*exGroupPopupVertical+exNoGroupPopupFrame+exGroupPopup*/
									oItem10:Caption := ""
									oItems7 := oItem10:Items()
										oItem11 := oItems7:Add("",2)
											oItem11:GroupPopup := 3/*exNoGroupPopupFrame+exGroupPopup*/
											oItems8 := oItem11:Items()
												oItem12 := oItems8:Add("Button1",2)
													oItem12:ShowAsButton := 275/*exShowAsSelectButtonBottom+exShowAsButtonAutoSize*/
													oItems9 := oItem12:Items()
														oItems9:Add("Item 1")
														oItems9:Add("Item 2")
														oItems9:Add("Item 3")
												oItems8:Add("",0,0):Padding := "4,0,0,0"
												oItem13 := oItems8:Add("Button2",2)
													oItem13:ShowAsButton := 275/*exShowAsSelectButtonBottom+exShowAsButtonAutoSize*/
													oItems10 := oItem13:Items()
														oItems10:Add("Item 4")
														oItems10:Add("Item 5")
														oItems10:Add("Item 6")
										oItem14 := oItems7:Add("Popup",2)
											oItem14:Alignment := 1/*exCenter*/
											oItems11 := oItem14:Items()
												oItems11:Add("Item 7"):Check := .T.
												oItems11:Add("Item 8")
												oItems12 := oItems11:Add("Item 9",2):Items()
													oItems12:Add("Item 10")
													oItems12:Add("Item 11")
													oItems12:Add("Item 12")
				var_Item4 := oItems1:Add("New Page")
					var_Item4:ToString := "[id=0][typ=2][chk=0][spchk=-1][show=1][grp=10][bghot=0x12000000][bgsel=0x11000000][bgselhot=0x14000000][group=0x03][tab=9000][pad=4,0,4,0][popupoffset=-4,-1]([id=0][group=0x03]([id=0][group=0x03]))"
					var_Item4:ID := 300
					var_Item4:Caption := "Page2"
					var_Item4:ShowPopupAlign := 1/*exShowPopupAlignDown*/
					oItem15 := var_Item4:Items:Item(0)
						oItems13 := oItem15:Items()
							oItem16 := oItems13:Add("S1")
								oItem16:ItemHeight := 88
								oItem16:AllowEdit := 1540/*exItemEditVertical+exItemEditSpin+exItemEditProgress*/
								oItem16:EditValue := 25
							oItem17 := oItems13:Add("S2")
								oItem17:ItemHeight := 88
								oItem17:AllowEdit := 1540/*exItemEditVertical+exItemEditSpin+exItemEditProgress*/
								oItem17:EditValue := 50
							oItem18 := oItems13:Add("S3")
								oItem18:ItemHeight := 88
								oItem18:AllowEdit := 1540/*exItemEditVertical+exItemEditSpin+exItemEditProgress*/
								oItem18:EditValue := 75
				oItems1:Add("",0,0):Padding := "8,0,0,0"
		oRibbon:PopupFlatAppearance := .F.
		oAppearance := oRibbon:VisualAppearance()
			oAppearance:Add(1,"C:/Program Files/Exontrol/ExRibbon/Sample/EBN/MSFlat-Ribbon/msfr_background.ebn")
			oAppearance:Add(2,"C:/Program Files/Exontrol/ExRibbon/Sample/EBN/MSFlat-Ribbon/msfr_groupt.ebn")
			oAppearance:Add(12,"C:/Program Files/Exontrol/ExRibbon/Sample/EBN/MSFlat-Ribbon/msfr_hot.ebn")
			oAppearance:Add(14,"C:/Program Files/Exontrol/ExRibbon/Sample/EBN/MSFlat-Ribbon/msfr_select.ebn")
			oAppearance:Add(17,"C:/Program Files/Exontrol/ExRibbon/Sample/EBN/MSFlat-Ribbon/msfr_tab.ebn")
			oAppearance:Add(18,"C:/Program Files/Exontrol/ExRibbon/Sample/EBN/MSFlat-Ribbon/msfr_tabhot.ebn")
			oAppearance:Add(32,"C:/Program Files/Exontrol/ExRibbon/Sample/EBN/MSFlat-Ribbon/msfr_check0.ebn")
			oAppearance:Add(33,"C:/Program Files/Exontrol/ExRibbon/Sample/EBN/MSFlat-Ribbon/msfr_check1.ebn")
			oAppearance:Add(34,"C:/Program Files/Exontrol/ExRibbon/Sample/EBN/MSFlat-Ribbon/msfr_buttonu.ebn")
			oAppearance:Add(35,"C:/Program Files/Exontrol/ExRibbon/Sample/EBN/MSFlat-Ribbon/msfr_buttond.ebn")
		oRibbon:Appearance := 16777216/*0x1000000+*/
		oRibbon:SetProperty("Background",64/*exToolTipAppearance*/,oRibbon:Appearance())
		oRibbon:SetProperty("SelBackColor",0xe000000)
		oRibbon:SetProperty("Background",110/*exMenuHotBackColor*/,0xc000000)
		oRibbon:SetProperty("Background",112/*exMenuSelHotBackColor*/,0x23000000)
		oRibbon:SetProperty("Background",2/*0x2+*/,0x22000000)
		oRibbon:SetProperty("Background",3/*0x3+*/,0x23000000)
		oRibbon:SetProperty("Background",70/*exCheckBoxState0*/,0x20000000)
		oRibbon:SetProperty("Background",71/*exCheckBoxState1*/,0x21000000)
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
196
How can I display a tab into the ribbon (method 2, minimized)

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem,oItem1,oItem2,oItem3
	LOCAL oItems,oItems1,oItems2,oItems3
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:SetProperty("Background",102/*exMenuSelBorderColor*/,AutomationTranslateColor( GraMakeRGBColor  ( { 240,240,240 } )  , .F. ))
		oItems := oRibbon:Items()
			oItems:ToString := "[id=0][group=0x0103][itemspad=4,4,4,4]([id=-10][group=0x03](),[id=-99][bg=RGB(240,240,240)][group=0x03][itemspad=4,4,4,4]([id=-100]))"
			oItems:Item(-99):Visible := .F.
			oItems1 := oItems:Item(-10):Items()
				oItems1:Add("",0,0):Padding := "8,0,0,0"
				oItem := oItems1:Add("New Page")
					oItem:ToString := "[typ=2][chk=1][spchk=-1][show=1][grp=10][bghot=RGB(255,255,255)][bgsel=RGB(240,240,240)][bgselhot=RGB(240,240,240)][height=16][group=0x03][tab=-100][pad=2,0,2,0][popupalign=0x01]([id=0][group=0x03]([]))"
					oItem:Caption := "Page<off -5><font ;5><b>1</b></font></off>"
					oItems2 := oItem:Items:Item(0):Items()
						oItem1 := oItems2:Add("add here fields for page 1")
							oItem1:ID := -1000
							oItem1:Enabled := .F.
							oItem1:SetProperty("BackColor",AutomationTranslateColor( GraMakeRGBColor  ( { 255,0,0 } )  , .F. ))
				oItem2 := oItems1:Add("New Page")
					oItem2:ToString := "[typ=2][chk=0][spchk=-1][show=1][grp=10][bghot=RGB(255,255,255)][bgsel=RGB(240,240,240)][bgselhot=RGB(240,240,240)][height=16][group=0x03][tab=-100][pad=2,0,2,0][popupalign=0x01]([id=0][group=0x03]([]))"
					oItem2:Caption := "Page<off -5><font ;5><b>2</b></font></off>"
					oItems3 := oItem2:Items:Item(0):Items()
						oItem3 := oItems3:Add("add here fields for page 2")
							oItem3:ID := -1001
							oItem3:Enabled := .F.
							oItem3:SetProperty("BackColor",AutomationTranslateColor( GraMakeRGBColor  ( { 0,255,0 } )  , .F. ))
				oItems1:Add("",0,0):Padding := "8,0,0,0"
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
195
How can I display a tab into the ribbon (method 1, minimized)

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem,oItem1
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:SetProperty("Background",102/*exMenuSelBorderColor*/,AutomationTranslateColor( GraMakeRGBColor  ( { 240,240,240 } )  , .F. ))
		oRibbon:ToString := "[group=0x0103][itemspad=4,4,4,4]([id=-10][group=0x03]([id=50][pad=8,0,0,0],Page<off -5><font ;5><b>1</b></font></off>[id=60][typ=2][chk=1][spchk=-1][show=1][grp=10][bghot=RGB(255,255,255)][bgsel=RGB(240,240,240)][bgselhot=RGB(240,240,240)][height=16][group=0x03][tab=-100][pad=2,0,2,0][popupalign=1]([group=0x03]([id=80],add here fields for page 1[id=-1000][dis])),Page<off -5><font ;5><b>2</b></font></off>[id=100][typ=2][spchk=-1][show=1][grp=10][bghot=RGB(255,255,255)][bgsel=RGB(240,240,240)][bgselhot=RGB(2" +;
		"40,240,240)][height=16][group=0x03][tab=-100][pad=2,0,2,0][popupalign=1]([group=0x03]([id=120],add here fields for page 2[id=-1001][dis])),[id=140][pad=8,0,0,0]),[id=-99][bg=RGB(240,240,240)][group=0x03][itemspad=4,4,4,4]([id=-100]))"
		oItem := oRibbon:Items:Item(-1000)
			oItem:SetProperty("BackColor",AutomationTranslateColor( GraMakeRGBColor  ( { 255,0,0 } )  , .F. ))
		oItem1 := oRibbon:Items:Item(-1001)
			oItem1:SetProperty("BackColor",AutomationTranslateColor( GraMakeRGBColor  ( { 0,255,0 } )  , .F. ))
		oRibbon:Item(-99):Visible := .F.

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
194
How can I display the drop down panel to a specified location only
#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem
	LOCAL oItems,oItems1
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:PopupAppearance := 6/*ShadowBorder*/
		oItems := oRibbon:Items()
			oItem := oItems:Add("Popup",2,100)
				oItem:ShowPopupArrow := .F.
				oItem:ShowPopupAlign := 1/*exShowPopupAlignDown*/
				oItem:ShowPopupOffset := "0:screen,0:screen"
				oItems1 := oItem:Items()
					oItems1:Add("Item 1")
					oItems1:Add("Item 2")
					oItems1:Add("Item 3")
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
193
How can I displays the drop down bellow the control, rather than item itself

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem,oItem1
	LOCAL oItems,oItems1,oItems2
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:PopupAppearance := 6/*ShadowBorder*/
		oItems := oRibbon:Items()
			oItem := oItems:Add("Popup <b>1",2,100)
				oItem:ShowPopupArrow := .F.
				oItem:ShowPopupAlign := 1/*exShowPopupAlignDown*/
				oItem:ShowPopupOffset := "0,0:control"
				oItems1 := oItem:Items()
					oItems1:Add("Item 1")
					oItems1:Add("Item 2")
					oItems1:Add("Item 3")
			oItem1 := oItems:Add("Popup <b>2",2,200)
				oItem1:GroupPopup := 1/*exGroupPopup*/
				oItems2 := oItem1:Items()
					oItems2:Add("Item 2")
					oItems2:Add("Item 3")
					oItems2:Add("Item 4")
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
192
How can I change the visual appearance of the progress bar

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem
	LOCAL oItems
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:VisualAppearance():Add(1,"c:\exontrol\images\normal.ebn")
		oRibbon:SetProperty("Background",260/*0x104+*/,0x1000000)
		oItems := oRibbon:Items()
			oItem := oItems:Add("Progress")
				oItem:AllowEdit := 4/*exItemEditProgress*/
				oItem:EditWidth := -128
				oItem:EditValue := 25
		oRibbon:Refresh()

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

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem
	LOCAL oItems
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:SetProperty("Background",260/*0x104+*/,AutomationTranslateColor( GraMakeRGBColor  ( { 255,0,0 } )  , .F. ))
		oItems := oRibbon:Items()
			oItem := oItems:Add("Progress")
				oItem:AllowEdit := 4/*exItemEditProgress*/
				oItem:EditWidth := -128
				oItem:EditValue := 25
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
190
I am using the Item.Visible property on False to hide the item, but the editor is still visible
PROCEDURE OnCheckItem(oRibbon,Itm)
	LOCAL oItem
	oItem := oRibbon:Items:Item(1000)
		oItem:Visible := .T.
		oItem:AllowEdit := 260/*exItemEditReadOnly+exItemEditProgress*/
	oRibbon:Refresh()
RETURN

PROCEDURE OnUncheckItem(oRibbon,Itm)
	LOCAL oItem
	oItem := oRibbon:Items:Item(1000)
		oItem:Visible := .F.
		oItem:AllowEdit := 0/*exItemDisableEdit*/
	oRibbon:Refresh()
RETURN

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem,oItem1,oItem2
	LOCAL oItems,oItems1
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:CheckItem := {|Itm| OnCheckItem(oRibbon,Itm)} /*Occurs when the user checks the item.*/
		oRibbon:UncheckItem := {|Itm| OnUncheckItem(oRibbon,Itm)} /*Occurs when the user unchecks the item.*/

		oItems := oRibbon:Items()
			oItem := oItems:Add("",2)
				oItems1 := oItem:Items()
					oItems1:Add("Visible")
					oItem1 := oItems1:Add("")
						oItem1:Check := .T.
						oItem1:Checked := .T.
					oItem2 := oItems1:Add("Item 2",,1000)
						oItem2:ItemHeight := 18
						oItem2:Caption := "Percent"
						oItem2:AllowEdit := 260/*exItemEditReadOnly+exItemEditProgress*/
						oItem2:EditValue := 50
						oItem2:Visible := .T.
					oItems1:Add("Visible")
				oItem:GroupPopup := 3/*exNoGroupPopupFrame+exGroupPopup*/
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
189
How can I change the color of a disabled item

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem
	LOCAL oItems
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oItems := oRibbon:Items()
			oItem := oItems:Add("Disabled",2,0)
				oItem:SetProperty("ForeColor",AutomationTranslateColor( GraMakeRGBColor  ( { 255,0,0 } )  , .F. ))
				oItem:Items():Add("")
				oItem:GroupPopup := 3/*exNoGroupPopupFrame+exGroupPopup*/
				oItem:ShowPopupArrow := .F.
			oItems:Add("Disabled"):Enabled := .F.
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
188
Microsoft Windows 8.1 - Ribbon Like

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oAppearance
	LOCAL oItem,oItem1,oItem10,oItem11,oItem12,oItem13,oItem14,oItem15,oItem16,oItem17,oItem18,oItem2,oItem3,oItem4,oItem5,oItem6,oItem7,oItem8,oItem9,var_Item,var_Item1,var_Item2,var_Item3,var_Item4
	LOCAL oItems,oItems1,oItems10,oItems11,oItems12,oItems13,oItems2,oItems3,oItems4,oItems5,oItems6,oItems7,oItems8,oItems9
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oItems := oRibbon:Items()
			oItems:ToString := "[id=0][group=0x03](),[id=-99][bg=0x01000000][group=0x03][itemspad=4,4,4,4]([id=9000])"
			oItems1 := oItems:Item(0):Items()
				oItems1:Add("",0,0):Padding := "8,0,0,0"
				var_Item3 := oItems1:Add("New Page")
					var_Item3:ToString := "[id=0][typ=2][chk=1][spchk=-1][show=1][grp=10][bghot=0x12000000][bgsel=0x11000000][bgselhot=0x14000000][group=0x03][tab=9000][pad=4,0,4,0][popupoffset=-4,-1]([id=0][group=0x03]([id=0][group=0x03]))"
					var_Item3:ID := 200
					var_Item3:Caption := "Page1"
					var_Item3:ShowPopupAlign := 1/*exShowPopupAlignDown*/
					oItem := var_Item3:Items:Item(0)
						var_Item := oItem:Items:Add("New Group")
							var_Item:ToString := "[id=0][group=0x03][itemspad=4,4,4,18][itemsbg=0x02000000][itemsbghot=0x04000000]()"
							var_Item:Caption := "<b><font ;14>A"
							oItems2 := var_Item:Items()
								oItems2:BackgroundExt := "bottom[16,text=`<fgcolor A0A0A0><font ;8>Horizontal`,align=0x11]"
								oItem1 := oItems2:Add("",2)
									oItem1:GroupPopup := 17/*exGroupPopupEqualWidth+exGroupPopup*/
									oItem1:Caption := ""
									oItems3 := oItem1:Items()
										oItem2 := oItems3:Add("R1")
											oItem2:RadioGroup := 100
											oItem2:Radio := .T.
											oItem2:ShowCheckedAsSelected := 1/*exDisplayItemHighlight*/
											oItem2:Checked := .F.
										oItem3 := oItems3:Add("R2")
											oItem3:RadioGroup := 100
											oItem3:Radio := .T.
											oItem3:ShowCheckedAsSelected := 1/*exDisplayItemHighlight*/
											oItem3:Checked := .T.
										oItem4 := oItems3:Add("R3")
											oItem4:RadioGroup := 100
											oItem4:Radio := .T.
											oItem4:ShowCheckedAsSelected := 1/*exDisplayItemHighlight*/
											oItem4:Checked := .F.
						var_Item1 := oItem:Items:Add("New Group")
							var_Item1:ToString := "[id=0][group=0x03][itemspad=4,4,4,18][itemsbg=0x02000000][itemsbghot=0x04000000]()"
							var_Item1:Caption := "<b><font ;14>B"
							oItems4 := var_Item1:Items()
								oItems4:BackgroundExt := "bottom[16,text=`<fgcolor A0A0A0><font ;8>Vertical`,align=0x11]"
								oItem5 := oItems4:Add("",2)
									oItem5:GroupPopup := 289/*exGroupPopupVertical+exGroupPopupEqualHeight+exGroupPopup*/
									oItem5:Caption := ""
									oItems5 := oItem5:Items()
										oItem6 := oItems5:Add("C1")
											oItem6:Check := .T.
											oItem6:Checked := .T.
										oItem7 := oItems5:Add("C2")
											oItem7:Check := .T.
											oItem7:Checked := .F.
										oItem8 := oItems5:Add("C3")
											oItem8:Check := .T.
											oItem8:Checked := .T.
						oItem:Items():Add("",0,0):Padding := "4,0,0,0"
						var_Item2 := oItem:Items:Add("New Group")
							var_Item2:ToString := "[id=0][group=0x03][itemspad=4,4,4,18][itemsbg=0x02000000][itemsbghot=0x04000000]()"
							var_Item2:Caption := ""
							oItems6 := var_Item2:Items()
								oItems6:BackgroundExt := "bottom[16,text=`<fgcolor A0A0A0><font ;8>Mixt`,align=0x11]"
								oItem9 := oItems6:Add("",0)
									oItem9:AllowEdit := 1027/*exItemEditVertical+exItemEditSlider*/
									oItem9:ItemHeight := 76
									oItem9:EditBorder := 0/*exEditBorderNone*/
									oItem9:EditValue := 25
								oItem10 := oItems6:Add("",2)
									oItem10:GroupPopup := 259/*exGroupPopupVertical+exNoGroupPopupFrame+exGroupPopup*/
									oItem10:Caption := ""
									oItems7 := oItem10:Items()
										oItem11 := oItems7:Add("",2)
											oItem11:GroupPopup := 3/*exNoGroupPopupFrame+exGroupPopup*/
											oItems8 := oItem11:Items()
												oItem12 := oItems8:Add("Button1",2)
													oItem12:ShowAsButton := 275/*exShowAsSelectButtonBottom+exShowAsButtonAutoSize*/
													oItems9 := oItem12:Items()
														oItems9:Add("Item 1")
														oItems9:Add("Item 2")
														oItems9:Add("Item 3")
												oItems8:Add("",0,0):Padding := "4,0,0,0"
												oItem13 := oItems8:Add("Button2",2)
													oItem13:ShowAsButton := 275/*exShowAsSelectButtonBottom+exShowAsButtonAutoSize*/
													oItems10 := oItem13:Items()
														oItems10:Add("Item 4")
														oItems10:Add("Item 5")
														oItems10:Add("Item 6")
										oItem14 := oItems7:Add("Popup",2)
											oItem14:Alignment := 1/*exCenter*/
											oItems11 := oItem14:Items()
												oItems11:Add("Item 7"):Check := .T.
												oItems11:Add("Item 8")
												oItems12 := oItems11:Add("Item 9",2):Items()
													oItems12:Add("Item 10")
													oItems12:Add("Item 11")
													oItems12:Add("Item 12")
				var_Item4 := oItems1:Add("New Page")
					var_Item4:ToString := "[id=0][typ=2][chk=0][spchk=-1][show=1][grp=10][bghot=0x12000000][bgsel=0x11000000][bgselhot=0x14000000][group=0x03][tab=9000][pad=4,0,4,0][popupoffset=-4,-1]([id=0][group=0x03]([id=0][group=0x03]))"
					var_Item4:ID := 300
					var_Item4:Caption := "Page2"
					var_Item4:ShowPopupAlign := 1/*exShowPopupAlignDown*/
					oItem15 := var_Item4:Items:Item(0)
						oItems13 := oItem15:Items()
							oItem16 := oItems13:Add("S1")
								oItem16:ItemHeight := 88
								oItem16:AllowEdit := 1540/*exItemEditVertical+exItemEditSpin+exItemEditProgress*/
								oItem16:EditValue := 25
							oItem17 := oItems13:Add("S2")
								oItem17:ItemHeight := 88
								oItem17:AllowEdit := 1540/*exItemEditVertical+exItemEditSpin+exItemEditProgress*/
								oItem17:EditValue := 50
							oItem18 := oItems13:Add("S3")
								oItem18:ItemHeight := 88
								oItem18:AllowEdit := 1540/*exItemEditVertical+exItemEditSpin+exItemEditProgress*/
								oItem18:EditValue := 75
				oItems1:Add("",0,0):Padding := "8,0,0,0"
		oRibbon:PopupFlatAppearance := .F.
		oAppearance := oRibbon:VisualAppearance()
			oAppearance:Add(1,"C:/Program Files/Exontrol/ExRibbon/Sample/EBN/MSFlat-Ribbon/msfr_background.ebn")
			oAppearance:Add(2,"C:/Program Files/Exontrol/ExRibbon/Sample/EBN/MSFlat-Ribbon/msfr_groupt.ebn")
			oAppearance:Add(12,"C:/Program Files/Exontrol/ExRibbon/Sample/EBN/MSFlat-Ribbon/msfr_hot.ebn")
			oAppearance:Add(14,"C:/Program Files/Exontrol/ExRibbon/Sample/EBN/MSFlat-Ribbon/msfr_select.ebn")
			oAppearance:Add(17,"C:/Program Files/Exontrol/ExRibbon/Sample/EBN/MSFlat-Ribbon/msfr_tab.ebn")
			oAppearance:Add(18,"C:/Program Files/Exontrol/ExRibbon/Sample/EBN/MSFlat-Ribbon/msfr_tabhot.ebn")
			oAppearance:Add(32,"C:/Program Files/Exontrol/ExRibbon/Sample/EBN/MSFlat-Ribbon/msfr_check0.ebn")
			oAppearance:Add(33,"C:/Program Files/Exontrol/ExRibbon/Sample/EBN/MSFlat-Ribbon/msfr_check1.ebn")
			oAppearance:Add(34,"C:/Program Files/Exontrol/ExRibbon/Sample/EBN/MSFlat-Ribbon/msfr_buttonu.ebn")
			oAppearance:Add(35,"C:/Program Files/Exontrol/ExRibbon/Sample/EBN/MSFlat-Ribbon/msfr_buttond.ebn")
		oRibbon:Appearance := 16777216/*0x1000000+*/
		oRibbon:SetProperty("Background",64/*exToolTipAppearance*/,oRibbon:Appearance())
		oRibbon:SetProperty("SelBackColor",0xe000000)
		oRibbon:SetProperty("Background",110/*exMenuHotBackColor*/,0xc000000)
		oRibbon:SetProperty("Background",112/*exMenuSelHotBackColor*/,0x23000000)
		oRibbon:SetProperty("Background",2/*0x2+*/,0x22000000)
		oRibbon:SetProperty("Background",3/*0x3+*/,0x23000000)
		oRibbon:SetProperty("Background",70/*exCheckBoxState0*/,0x20000000)
		oRibbon:SetProperty("Background",71/*exCheckBoxState1*/,0x21000000)
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
187
Microsoft Paint - Ribbon Like

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oAppearance
	LOCAL oItem,oItem1,oItem10,oItem11,oItem12,oItem13,oItem14,oItem15,oItem16,oItem17,oItem18,oItem2,oItem3,oItem4,oItem5,oItem6,oItem7,oItem8,oItem9,var_Item,var_Item1,var_Item2,var_Item3,var_Item4
	LOCAL oItems,oItems1,oItems10,oItems11,oItems12,oItems13,oItems2,oItems3,oItems4,oItems5,oItems6,oItems7,oItems8,oItems9
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oItems := oRibbon:Items()
			oItems:ToString := "[id=0][group=0x03](),[id=-99][bg=0x01000000][group=0x03][itemspad=4,4,4,4]([id=9000])"
			oItems1 := oItems:Item(0):Items()
				oItems1:Add("",0,0):Padding := "8,0,0,0"
				var_Item3 := oItems1:Add("New Page")
					var_Item3:ToString := "[id=0][typ=2][chk=1][spchk=-1][show=1][grp=10][bghot=0x12000000][bgsel=0x11000000][bgselhot=0x14000000][group=0x03][tab=9000][pad=4,0,4,0][popupoffset=-4,-1]([id=0][group=0x03]([id=0][group=0x03]))"
					var_Item3:ID := 200
					var_Item3:Caption := "Page1"
					var_Item3:ShowPopupAlign := 1/*exShowPopupAlignDown*/
					oItem := var_Item3:Items:Item(0)
						var_Item := oItem:Items:Add("New Group")
							var_Item:ToString := "[id=0][group=0x03][itemspad=4,4,4,18][itemsbg=0x02000000][itemsbghot=0x04000000]()"
							var_Item:Caption := "<b><font ;14>A"
							oItems2 := var_Item:Items()
								oItems2:BackgroundExt := "bottom[16,text=`<fgcolor A0A0A0><font ;8>Horizontal`,align=0x11]"
								oItem1 := oItems2:Add("",2)
									oItem1:GroupPopup := 17/*exGroupPopupEqualWidth+exGroupPopup*/
									oItem1:Caption := ""
									oItems3 := oItem1:Items()
										oItem2 := oItems3:Add("R1")
											oItem2:RadioGroup := 100
											oItem2:Radio := .T.
											oItem2:ShowCheckedAsSelected := 1/*exDisplayItemHighlight*/
											oItem2:Checked := .F.
										oItem3 := oItems3:Add("R2")
											oItem3:RadioGroup := 100
											oItem3:Radio := .T.
											oItem3:ShowCheckedAsSelected := 1/*exDisplayItemHighlight*/
											oItem3:Checked := .T.
										oItem4 := oItems3:Add("R3")
											oItem4:RadioGroup := 100
											oItem4:Radio := .T.
											oItem4:ShowCheckedAsSelected := 1/*exDisplayItemHighlight*/
											oItem4:Checked := .F.
						var_Item1 := oItem:Items:Add("New Group")
							var_Item1:ToString := "[id=0][group=0x03][itemspad=4,4,4,18][itemsbg=0x02000000][itemsbghot=0x04000000]()"
							var_Item1:Caption := "<b><font ;14>B"
							oItems4 := var_Item1:Items()
								oItems4:BackgroundExt := "bottom[16,text=`<fgcolor A0A0A0><font ;8>Vertical`,align=0x11]"
								oItem5 := oItems4:Add("",2)
									oItem5:GroupPopup := 289/*exGroupPopupVertical+exGroupPopupEqualHeight+exGroupPopup*/
									oItem5:Caption := ""
									oItems5 := oItem5:Items()
										oItem6 := oItems5:Add("C1")
											oItem6:Check := .T.
											oItem6:Checked := .T.
										oItem7 := oItems5:Add("C2")
											oItem7:Check := .T.
											oItem7:Checked := .F.
										oItem8 := oItems5:Add("C3")
											oItem8:Check := .T.
											oItem8:Checked := .T.
						oItem:Items():Add("",0,0):Padding := "4,0,0,0"
						var_Item2 := oItem:Items:Add("New Group")
							var_Item2:ToString := "[id=0][group=0x03][itemspad=4,4,4,18][itemsbg=0x02000000][itemsbghot=0x04000000]()"
							var_Item2:Caption := ""
							oItems6 := var_Item2:Items()
								oItems6:BackgroundExt := "bottom[16,text=`<fgcolor A0A0A0><font ;8>Mixt`,align=0x11]"
								oItem9 := oItems6:Add("",0)
									oItem9:AllowEdit := 1027/*exItemEditVertical+exItemEditSlider*/
									oItem9:ItemHeight := 76
									oItem9:EditBorder := 0/*exEditBorderNone*/
									oItem9:EditValue := 25
								oItem10 := oItems6:Add("",2)
									oItem10:GroupPopup := 259/*exGroupPopupVertical+exNoGroupPopupFrame+exGroupPopup*/
									oItem10:Caption := ""
									oItems7 := oItem10:Items()
										oItem11 := oItems7:Add("",2)
											oItem11:GroupPopup := 3/*exNoGroupPopupFrame+exGroupPopup*/
											oItems8 := oItem11:Items()
												oItem12 := oItems8:Add("Button1",2)
													oItem12:ShowAsButton := 275/*exShowAsSelectButtonBottom+exShowAsButtonAutoSize*/
													oItems9 := oItem12:Items()
														oItems9:Add("Item 1")
														oItems9:Add("Item 2")
														oItems9:Add("Item 3")
												oItems8:Add("",0,0):Padding := "4,0,0,0"
												oItem13 := oItems8:Add("Button2",2)
													oItem13:ShowAsButton := 275/*exShowAsSelectButtonBottom+exShowAsButtonAutoSize*/
													oItems10 := oItem13:Items()
														oItems10:Add("Item 4")
														oItems10:Add("Item 5")
														oItems10:Add("Item 6")
										oItem14 := oItems7:Add("Popup",2)
											oItem14:Alignment := 1/*exCenter*/
											oItems11 := oItem14:Items()
												oItems11:Add("Item 7"):Check := .T.
												oItems11:Add("Item 8")
												oItems12 := oItems11:Add("Item 9",2):Items()
													oItems12:Add("Item 10")
													oItems12:Add("Item 11")
													oItems12:Add("Item 12")
				var_Item4 := oItems1:Add("New Page")
					var_Item4:ToString := "[id=0][typ=2][chk=0][spchk=-1][show=1][grp=10][bghot=0x12000000][bgsel=0x11000000][bgselhot=0x14000000][group=0x03][tab=9000][pad=4,0,4,0][popupoffset=-4,-1]([id=0][group=0x03]([id=0][group=0x03]))"
					var_Item4:ID := 300
					var_Item4:Caption := "Page2"
					var_Item4:ShowPopupAlign := 1/*exShowPopupAlignDown*/
					oItem15 := var_Item4:Items:Item(0)
						oItems13 := oItem15:Items()
							oItem16 := oItems13:Add("S1")
								oItem16:ItemHeight := 88
								oItem16:AllowEdit := 1540/*exItemEditVertical+exItemEditSpin+exItemEditProgress*/
								oItem16:EditValue := 25
							oItem17 := oItems13:Add("S2")
								oItem17:ItemHeight := 88
								oItem17:AllowEdit := 1540/*exItemEditVertical+exItemEditSpin+exItemEditProgress*/
								oItem17:EditValue := 50
							oItem18 := oItems13:Add("S3")
								oItem18:ItemHeight := 88
								oItem18:AllowEdit := 1540/*exItemEditVertical+exItemEditSpin+exItemEditProgress*/
								oItem18:EditValue := 75
				oItems1:Add("",0,0):Padding := "8,0,0,0"
		oRibbon:PopupFlatAppearance := .F.
		oAppearance := oRibbon:VisualAppearance()
			oAppearance:Add(1,"C:/Program Files/Exontrol/ExRibbon/Sample/EBN/MSPaint-Ribbon/mspr_background.ebn")
			oAppearance:Add(2,"C:/Program Files/Exontrol/ExRibbon/Sample/EBN/MSPaint-Ribbon/mspr_groupt.ebn")
			oAppearance:Add(3,"C:/Program Files/Exontrol/ExRibbon/Sample/EBN/MSPaint-Ribbon/mspr_groupo.ebn")
			oAppearance:Add(4,"C:/Program Files/Exontrol/ExRibbon/Sample/EBN/MSPaint-Ribbon/mspr_grouphot.ebn")
			oAppearance:Add(5,"C:/Program Files/Exontrol/ExRibbon/Sample/EBN/MSPaint-Ribbon/mspr_frameh.ebn")
			oAppearance:Add(6,"C:/Program Files/Exontrol/ExRibbon/Sample/EBN/MSPaint-Ribbon/mspr_framehs.ebn")
			oAppearance:Add(7,"C:/Program Files/Exontrol/ExRibbon/Sample/EBN/MSPaint-Ribbon/mspr_framehi.ebn")
			oAppearance:Add(8,"C:/Program Files/Exontrol/ExRibbon/Sample/EBN/MSPaint-Ribbon/mspr_framehe.ebn")
			oAppearance:Add(9,"C:/Program Files/Exontrol/ExRibbon/Sample/EBN/MSPaint-Ribbon/mspr_framevs.ebn")
			oAppearance:Add(10,"C:/Program Files/Exontrol/ExRibbon/Sample/EBN/MSPaint-Ribbon/mspr_framevi.ebn")
			oAppearance:Add(11,"C:/Program Files/Exontrol/ExRibbon/Sample/EBN/MSPaint-Ribbon/mspr_frameve.ebn")
			oAppearance:Add(12,"C:/Program Files/Exontrol/ExRibbon/Sample/EBN/MSPaint-Ribbon/mspr_select.ebn")
			oAppearance:Add(13,"C:/Program Files/Exontrol/ExRibbon/Sample/EBN/MSPaint-Ribbon/mspr_bordert.ebn")
			oAppearance:Add(14,"C:/Program Files/Exontrol/ExRibbon/Sample/EBN/MSPaint-Ribbon/mspr_buttond.ebn")
			oAppearance:Add(15,"C:/Program Files/Exontrol/ExRibbon/Sample/EBN/MSPaint-Ribbon/mspr_buttonu.ebn")
			oAppearance:Add(16,"C:/Program Files/Exontrol/ExRibbon/Sample/EBN/MSPaint-Ribbon/mspr_tab.ebn")
			oAppearance:Add(17,"CP:16 0 0 0 1")
			oAppearance:Add(18,"C:/Program Files/Exontrol/ExRibbon/Sample/EBN/MSPaint-Ribbon/mspr_tabhot.ebn")
			oAppearance:Add(19,"C:/Program Files/Exontrol/ExRibbon/Sample/EBN/MSPaint-Ribbon/mspr_tabselhot.ebn")
			oAppearance:Add(20,"CP:19 0 0 0 1")
		oRibbon:LocalAppearance := 6/*ShadowBorder*/
		oRibbon:Appearance := 16777216/*0x1000000+*/
		oRibbon:SetProperty("ForeColor",AutomationTranslateColor( GraMakeRGBColor  ( { 21,66,139 } )  , .F. ))
		oRibbon:SetProperty("SelBackColor",0xe000000)
		oRibbon:SetProperty("Background",64/*exToolTipAppearance*/,oRibbon:Appearance())
		oRibbon:SetProperty("Background",2/*0x2+*/,0xd000000)
		oRibbon:SetProperty("Background",105/*exGroupPopupFrameSingle*/,0x5000000)
		oRibbon:SetProperty("Background",106/*exGroupPopupFrameHStart*/,0x6000000)
		oRibbon:SetProperty("Background",107/*exGroupPopupFrameHIntermediate*/,0x7000000)
		oRibbon:SetProperty("Background",108/*exGroupPopupFrameHEnd*/,0x8000000)
		oRibbon:SetProperty("Background",116/*exGroupPopupFrameVStart*/,0x9000000)
		oRibbon:SetProperty("Background",117/*exGroupPopupFrameVIntermediate*/,0xa000000)
		oRibbon:SetProperty("Background",118/*exGroupPopupFrameVEnd*/,0xb000000)
		oRibbon:SetProperty("Background",110/*exMenuHotBackColor*/,0xc000000)
		oRibbon:SetProperty("Background",112/*exMenuSelHotBackColor*/,0xf000000)
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
186
Microsoft Office - Ribbon Like

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oAppearance
	LOCAL oItem,oItem1,oItem10,oItem11,oItem12,oItem13,oItem14,oItem15,oItem16,oItem17,oItem18,oItem2,oItem3,oItem4,oItem5,oItem6,oItem7,oItem8,oItem9,var_Item,var_Item1,var_Item2,var_Item3,var_Item4
	LOCAL oItems,oItems1,oItems10,oItems11,oItems12,oItems2,oItems3,oItems4,oItems5,oItems6,oItems7,oItems8,oItems9
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:ToString := "[id=0][group=0x03](),[id=-99][bg=0x01000000][group=0x03][itemspad=4,4,4,4]([id=9000])"
		oItems := oRibbon:Item(0):Items()
			oItems:Add("",0,0):Padding := "8,0,0,0"
			var_Item3 := oItems:Add("New Page")
				var_Item3:ToString := "[id=0][typ=2][chk=1][spchk=-1][show=1][grp=10][bghot=0x12000000][bgsel=0x11000000][bgselhot=0x14000000][group=0x03][tab=9000][pad=4,0,4,0][popupoffset=-4,-1]([id=0][group=0x03]([id=0][group=0x03]))"
				var_Item3:ID := 200
				var_Item3:Caption := "Page1"
				var_Item3:ShowPopupAlign := 1/*exShowPopupAlignDown*/
				oItem := var_Item3:Items:Item(0)
					var_Item := oItem:Items:Add("New Group")
						var_Item:ToString := "[id=0][group=0x03][itemspad=4,4,4,18][itemsbg=0x02000000][itemsbghot=0x04000000]()"
						var_Item:Caption := "<b><font ;14>A"
						oItems1 := var_Item:Items()
							oItems1:BackgroundExt := "bottom[16,text=`<fgcolor A0A0A0><font ;8>Horizontal`,align=0x11]"
							oItem1 := oItems1:Add("",2)
								oItem1:GroupPopup := 17/*exGroupPopupEqualWidth+exGroupPopup*/
								oItem1:Caption := ""
								oItems2 := oItem1:Items()
									oItem2 := oItems2:Add("R1")
										oItem2:RadioGroup := 100
										oItem2:Radio := .T.
										oItem2:ShowCheckedAsSelected := 1/*exDisplayItemHighlight*/
										oItem2:Checked := .F.
									oItem3 := oItems2:Add("R2")
										oItem3:RadioGroup := 100
										oItem3:Radio := .T.
										oItem3:ShowCheckedAsSelected := 1/*exDisplayItemHighlight*/
										oItem3:Checked := .T.
									oItem4 := oItems2:Add("R3")
										oItem4:RadioGroup := 100
										oItem4:Radio := .T.
										oItem4:ShowCheckedAsSelected := 1/*exDisplayItemHighlight*/
										oItem4:Checked := .F.
					var_Item1 := oItem:Items:Add("New Group")
						var_Item1:ToString := "[id=0][group=0x03][itemspad=4,4,4,18][itemsbg=0x02000000][itemsbghot=0x04000000]()"
						var_Item1:Caption := "<b><font ;14>B"
						oItems3 := var_Item1:Items()
							oItems3:BackgroundExt := "bottom[16,text=`<fgcolor A0A0A0><font ;8>Vertical`,align=0x11]"
							oItem5 := oItems3:Add("",2)
								oItem5:GroupPopup := 289/*exGroupPopupVertical+exGroupPopupEqualHeight+exGroupPopup*/
								oItem5:Caption := ""
								oItems4 := oItem5:Items()
									oItem6 := oItems4:Add("C1")
										oItem6:Check := .T.
										oItem6:Checked := .T.
									oItem7 := oItems4:Add("C2")
										oItem7:Check := .T.
										oItem7:Checked := .F.
									oItem8 := oItems4:Add("C3")
										oItem8:Check := .T.
										oItem8:Checked := .T.
					oItem:Items():Add("",0,0):Padding := "4,0,0,0"
					var_Item2 := oItem:Items:Add("New Group")
						var_Item2:ToString := "[id=0][group=0x03][itemspad=4,4,4,18][itemsbg=0x02000000][itemsbghot=0x04000000]()"
						var_Item2:Caption := ""
						oItems5 := var_Item2:Items()
							oItems5:BackgroundExt := "bottom[16,text=`<fgcolor A0A0A0><font ;8>Mixt`,align=0x11]"
							oItem9 := oItems5:Add("",0)
								oItem9:AllowEdit := 1027/*exItemEditVertical+exItemEditSlider*/
								oItem9:ItemHeight := 76
								oItem9:EditBorder := 0/*exEditBorderNone*/
								oItem9:EditValue := 25
							oItem10 := oItems5:Add("",2)
								oItem10:GroupPopup := 259/*exGroupPopupVertical+exNoGroupPopupFrame+exGroupPopup*/
								oItem10:Caption := ""
								oItems6 := oItem10:Items()
									oItem11 := oItems6:Add("",2)
										oItem11:GroupPopup := 3/*exNoGroupPopupFrame+exGroupPopup*/
										oItems7 := oItem11:Items()
											oItem12 := oItems7:Add("Button1",2)
												oItem12:ShowAsButton := 275/*exShowAsSelectButtonBottom+exShowAsButtonAutoSize*/
												oItems8 := oItem12:Items()
													oItems8:Add("Item 1")
													oItems8:Add("Item 2")
													oItems8:Add("Item 3")
											oItems7:Add("",0,0):Padding := "4,0,0,0"
											oItem13 := oItems7:Add("Button2",2)
												oItem13:ShowAsButton := 275/*exShowAsSelectButtonBottom+exShowAsButtonAutoSize*/
												oItems9 := oItem13:Items()
													oItems9:Add("Item 4")
													oItems9:Add("Item 5")
													oItems9:Add("Item 6")
									oItem14 := oItems6:Add("Popup",2)
										oItem14:Alignment := 1/*exCenter*/
										oItems10 := oItem14:Items()
											oItems10:Add("Item 7"):Check := .T.
											oItems10:Add("Item 8")
											oItems11 := oItems10:Add("Item 9",2):Items()
												oItems11:Add("Item 10")
												oItems11:Add("Item 11")
												oItems11:Add("Item 12")
			var_Item4 := oItems:Add("New Page")
				var_Item4:ToString := "[id=0][typ=2][chk=0][spchk=-1][show=1][grp=10][bghot=0x12000000][bgsel=0x11000000][bgselhot=0x14000000][group=0x03][tab=9000][pad=4,0,4,0][popupoffset=-4,-1]([id=0][group=0x03]([id=0][group=0x03]))"
				var_Item4:ID := 300
				var_Item4:Caption := "Page2"
				var_Item4:ShowPopupAlign := 1/*exShowPopupAlignDown*/
				oItem15 := var_Item4:Items:Item(0)
					oItems12 := oItem15:Items()
						oItem16 := oItems12:Add("S1")
							oItem16:ItemHeight := 88
							oItem16:AllowEdit := 1540/*exItemEditVertical+exItemEditSpin+exItemEditProgress*/
							oItem16:EditValue := 25
						oItem17 := oItems12:Add("S2")
							oItem17:ItemHeight := 88
							oItem17:AllowEdit := 1540/*exItemEditVertical+exItemEditSpin+exItemEditProgress*/
							oItem17:EditValue := 50
						oItem18 := oItems12:Add("S3")
							oItem18:ItemHeight := 88
							oItem18:AllowEdit := 1540/*exItemEditVertical+exItemEditSpin+exItemEditProgress*/
							oItem18:EditValue := 75
			oItems:Add("",0,0):Padding := "8,0,0,0"
		oRibbon:PopupFlatAppearance := .F.
		oAppearance := oRibbon:VisualAppearance()
			oAppearance:Add(1,"C:\Program Files\Exontrol\ExRibbon\Sample\EBN\MSOffice-Ribbon\msor_background.ebn")
			oAppearance:Add(2,"C:\Program Files\Exontrol\ExRibbon\Sample\EBN\MSOffice-Ribbon\msor_groupt.ebn")
			oAppearance:Add(3,"C:\Program Files\Exontrol\ExRibbon\Sample\EBN\MSOffice-Ribbon\msor_groupo.ebn")
			oAppearance:Add(4,"C:\Program Files\Exontrol\ExRibbon\Sample\EBN\MSOffice-Ribbon\msor_grouphot.ebn")
			oAppearance:Add(5,"C:\Program Files\Exontrol\ExRibbon\Sample\EBN\MSOffice-Ribbon\msor_frameh.ebn")
			oAppearance:Add(6,"C:\Program Files\Exontrol\ExRibbon\Sample\EBN\MSOffice-Ribbon\msor_framehs.ebn")
			oAppearance:Add(7,"C:\Program Files\Exontrol\ExRibbon\Sample\EBN\MSOffice-Ribbon\msor_framehi.ebn")
			oAppearance:Add(8,"C:\Program Files\Exontrol\ExRibbon\Sample\EBN\MSOffice-Ribbon\msor_framehe.ebn")
			oAppearance:Add(9,"C:\Program Files\Exontrol\ExRibbon\Sample\EBN\MSOffice-Ribbon\msor_framevs.ebn")
			oAppearance:Add(10,"C:\Program Files\Exontrol\ExRibbon\Sample\EBN\MSOffice-Ribbon\msor_framevi.ebn")
			oAppearance:Add(11,"C:\Program Files\Exontrol\ExRibbon\Sample\EBN\MSOffice-Ribbon\msor_frameve.ebn")
			oAppearance:Add(12,"C:\Program Files\Exontrol\ExRibbon\Sample\EBN\MSOffice-Ribbon\msor_select.ebn")
			oAppearance:Add(13,"C:\Program Files\Exontrol\ExRibbon\Sample\EBN\MSOffice-Ribbon\msor_bordert.ebn")
			oAppearance:Add(14,"C:\Program Files\Exontrol\ExRibbon\Sample\EBN\MSOffice-Ribbon\msor_buttond.ebn")
			oAppearance:Add(15,"C:\Program Files\Exontrol\ExRibbon\Sample\EBN\MSOffice-Ribbon\msor_buttonu.ebn")
			oAppearance:Add(16,"C:\Program Files\Exontrol\ExRibbon\Sample\EBN\MSOffice-Ribbon\msor_tab.ebn")
			oAppearance:Add(17,"CP:16 0 0 0 1")
			oAppearance:Add(18,"C:\Program Files\Exontrol\ExRibbon\Sample\EBN\MSOffice-Ribbon\msor_tabhot.ebn")
			oAppearance:Add(19,"C:\Program Files\Exontrol\ExRibbon\Sample\EBN\MSOffice-Ribbon\msor_tabselhot.ebn")
			oAppearance:Add(20,"CP:19 0 0 0 1")
		oRibbon:SetProperty("ForeColor",AutomationTranslateColor( GraMakeRGBColor  ( { 21,66,139 } )  , .F. ))
		oRibbon:SetProperty("SelBackColor",0xe000000)
		oRibbon:LocalAppearance := 6/*ShadowBorder*/
		oRibbon:Appearance := 16777216/*0x1000000+*/
		oRibbon:SetProperty("Background",64/*exToolTipAppearance*/,oRibbon:Appearance())
		oRibbon:SetProperty("Background",2/*0x2+*/,0xd000000)
		oRibbon:SetProperty("Background",105/*exGroupPopupFrameSingle*/,0x5000000)
		oRibbon:SetProperty("Background",106/*exGroupPopupFrameHStart*/,0x6000000)
		oRibbon:SetProperty("Background",107/*exGroupPopupFrameHIntermediate*/,0x7000000)
		oRibbon:SetProperty("Background",108/*exGroupPopupFrameHEnd*/,0x8000000)
		oRibbon:SetProperty("Background",116/*exGroupPopupFrameVStart*/,0x9000000)
		oRibbon:SetProperty("Background",117/*exGroupPopupFrameVIntermediate*/,0xa000000)
		oRibbon:SetProperty("Background",118/*exGroupPopupFrameVEnd*/,0xb000000)
		oRibbon:SetProperty("Background",110/*exMenuHotBackColor*/,0xc000000)
		oRibbon:SetProperty("Background",112/*exMenuSelHotBackColor*/,0xf000000)
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
185
How I can assign buttons to a tab

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem,oItem1
	LOCAL oItems,oItems1,oItems2,oItems3
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:SetProperty("Background",102/*exMenuSelBorderColor*/,AutomationTranslateColor( GraMakeRGBColor  ( { 240,240,240 } )  , .F. ))
		oItems := oRibbon:Items()
			oItems:ToString := "[id=0][group=0x0103][itemspad=4,4,4,4]([id=-10][group=0x03](),[id=-99][bg=RGB(240,240,240)][group=0x03][itemspad=4,4,4,4]([id=-100]))"
			oItems1 := oItems:Item(-10):Items()
				oItems1:Add("",0,0):Padding := "8,0,0,0"
				oItem := oItems1:Add("New Page")
					oItem:ToString := "[typ=2][chk=1][spchk=-1][show=1][grp=10][bghot=RGB(255,255,255)][bgsel=RGB(240,240,240)][bgselhot=RGB(240,240,240)][height=16][group=0x03][tab=-100][pad=2,0,2,0][popupalign=0x01]([id=0][group=0x03]([]))"
					oItem:Caption := "Page<off -5><font ;5><b>1</b></font></off>"
					oItem:ID := -1000
					oItems2 := oItem:Items:Item(0):Items()
						oItems2:Add("Button 1"):ShowAsButton := 3/*exShowAsButtonAutoSize+exShowAsButton*/
						oItems2:Add("Button 2"):ShowAsButton := 3/*exShowAsButtonAutoSize+exShowAsButton*/
						oItems2:Add("Button 3"):ShowAsButton := 3/*exShowAsButtonAutoSize+exShowAsButton*/
				oItem1 := oItems1:Add("New Page")
					oItem1:ToString := "[typ=2][chk=0][spchk=-1][show=1][grp=10][bghot=RGB(255,255,255)][bgsel=RGB(240,240,240)][bgselhot=RGB(240,240,240)][height=16][group=0x03][tab=-100][pad=2,0,2,0][popupalign=0x01]([id=0][group=0x03]([]))"
					oItem1:Caption := "Page<off -5><font ;5><b>2</b></font></off>"
					oItem1:ID := -1001
					oItems3 := oItem1:Items:Item(0):Items()
						oItems3:Add("Button 3"):ShowAsButton := 3/*exShowAsButtonAutoSize+exShowAsButton*/
						oItems3:Add("Button 4"):ShowAsButton := 3/*exShowAsButtonAutoSize+exShowAsButton*/
				oItems1:Add("",0,0):Padding := "8,0,0,0"
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
184
How can I hide an item

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

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

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oItems := oRibbon:Items()
			oItems:Add("Item 1"):Visible := .F.
			oItems:Add("Item 2")
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
183
How do I quickly load items into the control

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

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

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:ToString := "Check 1[chk],Check 2[chk=1]"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
182
Are there any functions to get the size/width/height of the control so all items fit the control's client area

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

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

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oItems := oRibbon:Items()
			oItems:Add("Item 1")
			oItems:Add("Item 2")
		oRibbon:Refresh()
		DevOut( Transform(oRibbon:RequiredWidth(),"") )
		DevOut( Transform(oRibbon:RequiredHeight(),"") )

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
181
How do I get the item giving its caption

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

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

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oItems := oRibbon:Items()
			oItems:Add("Item 1"):ID := 1000
			oItems:Add("Item 2"):ID := 1001
		oRibbon:Item("Item 1"):Bold := .T.
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
180
How do I get the item giving its identifier

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

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

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oItems := oRibbon:Items()
			oItems:Add("Item 1"):ID := 1000
			oItems:Add("Item 2"):ID := 1001
		oRibbon:Item(1000):Bold := .T.
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
179
Can I change the cursor where it hovers the item

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

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

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:Cursor := "exCross"
		oItems := oRibbon:Items()
			oItems:Add("Item 1")
			oItems:Add("Item 2"):Cursor := "exNoDrop"
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
178
I am using radio-buttons, the question is it possible to uncheck the radio-buttons, so no button is pressed in the group

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem,oItem1,oItem2
	LOCAL oItems
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:AllowToggleRadio := .T.
		oItems := oRibbon:Items()
			oItem := oItems:Add("Radio 1",,1000)
				oItem:Radio := .T.
				oItem:RadioGroup := 100
			oItem1 := oItems:Add("Radio 2",,1001)
				oItem1:Radio := .T.
				oItem1:RadioGroup := 100
			oItem2 := oItems:Add("Radio 2",,1003)
				oItem2:Radio := .T.
				oItem2:RadioGroup := 100
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
177
Is it possible to display the item's identifiers

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

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

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:Debug := .T.
		oItems := oRibbon:Items()
			oItems:Add("Item 1"):ID := 10001
			oItems:Add("Item 2"):ID := 10002
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
176
How do I disable showing the tooltip for all control (method 2)

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

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

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:AllowToolTip := .F.
		oItems := oRibbon:Items()
			oItems:Add("Item"):Tooltip := "this is a bit of text to be shown when cursor hovers it"
			oItems:Add("Item"):Tooltip := "this is a bit of text to be shown when cursor hovers it"
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
175
How can I lock the control, so no events occur, but no shown in gray as Enabled do

PROCEDURE OnSelectItem(oRibbon,Itm)
	DevOut( "SelectItem should not be fired while locked" )
RETURN

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

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

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:SelectItem := {|Itm| OnSelectItem(oRibbon,Itm)} /*Occurs when the user selects the item.*/

		oRibbon:Locked := .T.
		oItems := oRibbon:Items()
			oItems:Add("Disabled"):Enabled := .F.
			oItems:Add("Item 2")
			oItems:Add("Item 3")
		oRibbon:Refresh()

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

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

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

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:Enabled := .F.
		oItems := oRibbon:Items()
			oItems:Add("Disabled"):Enabled := .F.
			oItems:Add("Item 2")
			oItems:Add("Item 3")
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
173
How can I specify a different border/visual appearance for drop down portion of the popup menu (ebn)

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItems,oItems1,oItems2
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:VisualAppearance():Add(1,"c:\exontrol\images\normal.ebn")
		oRibbon:PopupAppearance := 16777216/*0x1000000+*/
		oItems := oRibbon:Items()
			oItems1 := oItems:Add("Popup 1",2):Items()
				oItems1:Add("Item 1"):Check := .T.
				oItems1:Add("Item 2"):Check := .T.
				oItems1:Add("Item 3"):Check := .T.
			oItems2 := oItems:Add("Popup 2",2):Items()
				oItems2:Add("Item 4"):Check := .T.
				oItems2:Add("Item 5"):Check := .T.
				oItems2:Add("Item 6"):Check := .T.
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
172
How can I specify a different border for drop down portion of the popup menu

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItems,oItems1,oItems2
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:PopupAppearance := 6/*ShadowBorder*/
		oItems := oRibbon:Items()
			oItems1 := oItems:Add("Popup 1",2):Items()
				oItems1:Add("Item 1"):Check := .T.
				oItems1:Add("Item 2"):Check := .T.
				oItems1:Add("Item 3"):Check := .T.
			oItems2 := oItems:Add("Popup 2",2):Items()
				oItems2:Add("Item 4"):Check := .T.
				oItems2:Add("Item 5"):Check := .T.
				oItems2:Add("Item 6"):Check := .T.
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
171
How can I specify a different border/visual appearance for drop down portion of the select buttons/combobox (ebn)

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem,oItem1,oItem2
	LOCAL oItems,oItems1,oItems2,oItems3
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:VisualAppearance():Add(1,"c:\exontrol\images\normal.ebn")
		oRibbon:LocalAppearance := 16777216/*0x1000000+*/
		oItems := oRibbon:Items()
			oItem := oItems:Add("",2)
				oItem:GroupPopup := 3/*exNoGroupPopupFrame+exGroupPopup*/
				oItems1 := oItem:Items()
					oItem1 := oItems1:Add("Button",2)
						oItem1:ShowAsButton := 275/*exShowAsSelectButtonBottom+exShowAsButtonAutoSize*/
						oItems2 := oItem1:Items()
							oItems2:Add("Item 1")
							oItems2:Add("Item 2")
							oItems2:Add("Item 3")
					oItem2 := oItems1:Add("Button",2)
						oItem2:ShowAsButton := 275/*exShowAsSelectButtonBottom+exShowAsButtonAutoSize*/
						oItems3 := oItem2:Items()
							oItems3:Add("Item 4")
							oItems3:Add("Item 5")
							oItems3:Add("Item 6")
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
170
How can I specify a different border for drop down portion of the select buttons/combobox

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem,oItem1,oItem2
	LOCAL oItems,oItems1,oItems2,oItems3
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:LocalAppearance := 6/*ShadowBorder*/
		oItems := oRibbon:Items()
			oItem := oItems:Add("",2)
				oItem:GroupPopup := 3/*exNoGroupPopupFrame+exGroupPopup*/
				oItems1 := oItem:Items()
					oItem1 := oItems1:Add("Button",2)
						oItem1:ShowAsButton := 275/*exShowAsSelectButtonBottom+exShowAsButtonAutoSize*/
						oItems2 := oItem1:Items()
							oItems2:Add("Item 1")
							oItems2:Add("Item 2")
							oItems2:Add("Item 3")
					oItem2 := oItems1:Add("Button",2)
						oItem2:ShowAsButton := 275/*exShowAsSelectButtonBottom+exShowAsButtonAutoSize*/
						oItems3 := oItem2:Items()
							oItems3:Add("Item 4")
							oItems3:Add("Item 5")
							oItems3:Add("Item 6")
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
169
How can I change the visual appearance for the entire control

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem
	LOCAL oItems
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:VisualAppearance():Add(1,"c:\exontrol\images\normal.ebn")
		oRibbon:Appearance := 16777216/*0x1000000+*/
		oRibbon:ShowCheckedAsSelected := -1/*exDisplayItemCheckHighlight*/
		oItems := oRibbon:Items()
			oItems:Padding := "4,4,4,4"
			oItem := oItems:Add("Radio 1")
				oItem:Radio := .T.
				oItem:Checked := .T.
			oItems:Add("Radio 2"):Radio := .T.
			oItems:Add("Radio 3"):Radio := .T.
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
168
How can I show a border arround the control

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem,oItem1
	LOCAL oItems
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:Appearance := 1/*FlatBorder*/
		oRibbon:ShowCheckedAsSelected := -1/*exDisplayItemCheckHighlight*/
		oItems := oRibbon:Items()
			oItems:Padding := "4,4,4,4"
			oItem := oItems:Add("Check 1")
				oItem:Checked := .T.
				oItem:Check := .T.
			oItem1 := oItems:Add("Check 2")
				oItem1:Check := .T.
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
167
Is it possible to change the item's background color when check/uncheck the item

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem,oItem1
	LOCAL oItems
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:ShowCheckedAsSelected := -1/*exDisplayItemCheckHighlight*/
		oItems := oRibbon:Items()
			oItems:Padding := "4,4,4,4"
			oItem := oItems:Add("Check 1")
				oItem:Checked := .T.
				oItem:Check := .T.
			oItem1 := oItems:Add("Check 2")
				oItem1:Check := .T.
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
166
How can I change the colors for hot/hover items

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem,oItem1
	LOCAL oItems
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:SetProperty("Background",110/*exMenuHotBackColor*/,AutomationTranslateColor( GraMakeRGBColor  ( { 0,0,1 } )  , .F. ))
		oRibbon:SetProperty("Background",111/*exMenuHotForeColor*/,AutomationTranslateColor( GraMakeRGBColor  ( { 255,255,255 } )  , .F. ))
		oRibbon:SetProperty("Background",112/*exMenuSelHotBackColor*/,AutomationTranslateColor( GraMakeRGBColor  ( { 128,128,128 } )  , .F. ))
		oRibbon:SetProperty("Background",113/*exMenuSelHotForeColor*/,AutomationTranslateColor( GraMakeRGBColor  ( { 255,255,255 } )  , .F. ))
		oRibbon:SetProperty("SelBackColor",AutomationTranslateColor( GraMakeRGBColor  ( { 128,128,128 } )  , .F. ))
		oRibbon:SetProperty("SelForeColor",AutomationTranslateColor( GraMakeRGBColor  ( { 255,255,255 } )  , .F. ))
		oRibbon:SetProperty("Background",102/*exMenuSelBorderColor*/,AutomationTranslateColor( GraMakeRGBColor  ( { 128,128,128 } )  , .F. ))
		oRibbon:ShowCheckedAsSelected := -1/*exDisplayItemCheckHighlight*/
		oItems := oRibbon:Items()
			oItems:Padding := "4,4,4,4"
			oItems:Add(""):ToString := "[group=3](Item 1,Item 2)"
			oItem := oItems:Add("Check 1")
				oItem:Checked := .T.
				oItem:Check := .T.
			oItem1 := oItems:Add("Check 2")
				oItem1:Check := .T.
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
165
How do I change the visual appearance of the groups (vertical)

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oAppearance
	LOCAL oItem,oItem1,oItem2
	LOCAL oItems,oItems1,oItems2,oItems3
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oAppearance := oRibbon:VisualAppearance()
			oAppearance:Add(1,"c:\exontrol\images\normal.ebn")
			oAppearance:Add(2,"c:\exontrol\images\pushed.ebn")
			oAppearance:Add(3,"c:\exontrol\images\hot.ebn")
		oRibbon:SetProperty("Background",105/*exGroupPopupFrameSingle*/,0x1000000)
		oRibbon:SetProperty("Background",116/*exGroupPopupFrameVStart*/,0x1000000)
		oRibbon:SetProperty("Background",117/*exGroupPopupFrameVIntermediate*/,0x2000000)
		oRibbon:SetProperty("Background",118/*exGroupPopupFrameVEnd*/,0x3000000)
		oRibbon:SetProperty("Background",109/*exGroupPopupFrameSolid*/,AutomationTranslateColor( GraMakeRGBColor  ( { 255,0,0 } )  , .F. ))
		oItems := oRibbon:Items()
			oItem := oItems:Add("",2)
				oItem:GroupPopup := 3/*exNoGroupPopupFrame+exGroupPopup*/
				oItems1 := oItem:Items()
					oItem1 := oItems1:Add("Vertical",2)
						oItem1:Alignment := 1/*exCenter*/
						oItem1:GroupPopup := 257/*exGroupPopupVertical+exGroupPopup*/
						oItems2 := oItem1:Items()
							oItems2:Add("Item 1")
							oItems2:Add("Item 2")
							oItems2:Add("Item 3")
							oItems2:Add("Item 4")
							oItems2:Add("Item 5")
					oItems1:Add(""):CaptionWidth := 12
					oItem2 := oItems1:Add("Vertical",2)
						oItem2:Alignment := 1/*exCenter*/
						oItem2:GroupPopup := 449/*exGroupPopupVertical+exGroupPopupFrameThickBox+exGroupPopupFrameSolidBox+exGroupPopup*/
						oItems3 := oItem2:Items()
							oItems3:Add("Item 1")
							oItems3:Add("Item 2")
							oItems3:Add("Item 3")
							oItems3:Add("Item 4")
							oItems3:Add("Item 5")
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
164
How do I change the visual appearance of the groups (horizontal)

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oAppearance
	LOCAL oItem
	LOCAL oItems,oItems1
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oAppearance := oRibbon:VisualAppearance()
			oAppearance:Add(1,"c:\exontrol\images\normal.ebn")
			oAppearance:Add(2,"c:\exontrol\images\pushed.ebn")
			oAppearance:Add(3,"c:\exontrol\images\hot.ebn")
		oRibbon:SetProperty("Background",105/*exGroupPopupFrameSingle*/,0x1000000)
		oRibbon:SetProperty("Background",106/*exGroupPopupFrameHStart*/,0x1000000)
		oRibbon:SetProperty("Background",107/*exGroupPopupFrameHIntermediate*/,0x2000000)
		oRibbon:SetProperty("Background",108/*exGroupPopupFrameHEnd*/,0x3000000)
		oRibbon:SetProperty("Background",109/*exGroupPopupFrameSolid*/,AutomationTranslateColor( GraMakeRGBColor  ( { 255,0,0 } )  , .F. ))
		oItems := oRibbon:Items()
			oItem := oItems:Add("Horizontal Group",2)
				oItem:GroupPopup := 1/*exGroupPopup*/
				oItems1 := oItem:Items()
					oItems1:Add("Item 1")
					oItems1:Add("Item 2")
					oItems1:Add("Item 3")
					oItems1:Add("Item 4")
					oItems1:Add("Item 5")
			oItems:Add(""):ToString := "Horizontal Group[group=193](Item 1,Item 2,Item 3,Item 4,Item 5)"
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
163
How can I change the visual appearance of the separator item

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

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

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:VisualAppearance():Add(1,"c:\exontrol\images\normal.ebn")
		oRibbon:SetProperty("Background",103/*exMenuSeparatorItem*/,0x1000000)
		oItems := oRibbon:Items()
			oItems:Add("Item"):CaptionWidth := 128
			oItems:Add("",1)
			oItems:Add("Item"):CaptionWidth := 128
			oItems:Add(""):ToString := "<font ;5>separator[sep]"
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
162
How can I change the visual appearance of the drop down of the control (normal.2)

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oAppearance
	LOCAL oItems,oItems1
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oAppearance := oRibbon:VisualAppearance()
			oAppearance:Add(1,"c:\exontrol\images\normal.ebn")
			oAppearance:Add(2,"c:\exontrol\images\pushed.ebn")
		oRibbon:PopupFlatImageWidth := 0
		oItems := oRibbon:Items()
			oItems1 := oItems:Add("Popup",2):Items()
				oItems1:Add("Item 1"):Check := .T.
				oItems1:Add("Item 2"):Check := .T.
				oItems1:Add("Item 3"):Check := .T.
				oItems1:PopupAppearance := 16777216/*0x1000000+*/
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
161
How can I change the visual appearance of the drop down of the control (normal.1)

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oAppearance
	LOCAL oItems,oItems1
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oAppearance := oRibbon:VisualAppearance()
			oAppearance:Add(1,"c:\exontrol\images\normal.ebn")
			oAppearance:Add(2,"c:\exontrol\images\pushed.ebn")
		oRibbon:PopupFlatAppearance := .F.
		oItems := oRibbon:Items()
			oItems1 := oItems:Add("Popup",2):Items()
				oItems1:Add("Item 1"):Check := .T.
				oItems1:Add("Item 2"):Check := .T.
				oItems1:Add("Item 3"):Check := .T.
				oItems1:PopupAppearance := 16777216/*0x1000000+*/
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
160
How can I change the visual appearance of the drop down of the control (flat)

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oAppearance
	LOCAL oItems,oItems1
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oAppearance := oRibbon:VisualAppearance()
			oAppearance:Add(1,"c:\exontrol\images\normal.ebn")
			oAppearance:Add(2,"c:\exontrol\images\pushed.ebn")
		oRibbon:SetProperty("PopupFlatBackColor",0x2000000)
		oRibbon:SetProperty("Background",100/*exMenuFlatLineColor*/,oRibbon:PopupFlatBackColor())
		oItems := oRibbon:Items()
			oItems1 := oItems:Add("Popup",2):Items()
				oItems1:Add("Item 1"):Check := .T.
				oItems1:Add("Item 2"):Check := .T.
				oItems1:Add("Item 3"):Check := .T.
				oItems1:PopupAppearance := 16777216/*0x1000000+*/
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
159
How can I change the visual appearance of the flat portion of the drop down of the control

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItems,oItems1
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:VisualAppearance():Add(1,"c:\exontrol\images\normal.ebn")
		oRibbon:SetProperty("PopupFlatBackColor",0x1000000)
		oRibbon:SetProperty("Background",100/*exMenuFlatLineColor*/,oRibbon:PopupFlatBackColor())
		oItems := oRibbon:Items()
			oItems1 := oItems:Add("Popup",2):Items()
				oItems1:Add("Item 1"):Check := .T.
				oItems1:Add("Item 2"):Check := .T.
				oItems1:Add("Item 3"):Check := .T.
				oItems1:PopupAppearance := 6/*ShadowBorder*/
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
158
How can I change the visual appearance of the radio-buttons to be displayed in the ribbon control (ebn)

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oAppearance
	LOCAL oItem,oItem1,oItem2,oItem3
	LOCAL oItems,oItems1
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oAppearance := oRibbon:VisualAppearance()
			oAppearance:Add(1,"c:\exontrol\images\normal.ebn")
			oAppearance:Add(2,"c:\exontrol\images\pushed.ebn")
		oRibbon:SetProperty("Background",73/*exRadioButtonState0*/,0x1000000)
		oRibbon:SetProperty("Background",74/*exRadioButtonState1*/,0x2000000)
		oItems := oRibbon:Items()
			oItem := oItems:Add("",2)
				oItem:GroupPopup := 1/*exGroupPopup*/
				oItems1 := oItem:Items()
					oItem1 := oItems1:Add("Radio 1",,1000)
						oItem1:Radio := .T.
						oItem1:RadioGroup := 100
					oItem2 := oItems1:Add("Radio 2",,1001)
						oItem2:Radio := .T.
						oItem2:RadioGroup := 100
					oItem3 := oItems1:Add("Radio 2",,1003)
						oItem3:Radio := .T.
						oItem3:RadioGroup := 100
					oItems1:Item(1000):Checked := .T.
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
157
How can I change the visual appearance of the check-boxes to be displayed in the ribbon control (ebn)

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oAppearance
	LOCAL oItem,oItem1
	LOCAL oItems,oItems1
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oAppearance := oRibbon:VisualAppearance()
			oAppearance:Add(1,"c:\exontrol\images\normal.ebn")
			oAppearance:Add(2,"c:\exontrol\images\pushed.ebn")
		oRibbon:SetProperty("Background",70/*exCheckBoxState0*/,0x1000000)
		oRibbon:SetProperty("Background",71/*exCheckBoxState1*/,0x2000000)
		oItems := oRibbon:Items()
			oItem := oItems:Add("",2)
				oItem:GroupPopup := 3/*exNoGroupPopupFrame+exGroupPopup*/
				oItems1 := oItem:Items()
					oItem1 := oItems1:Add("Check 1")
						oItem1:Check := .T.
						oItem1:Checked := .T.
					oItems1:Add("Check 2"):Check := .T.
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
156
How can I change the visual appearance of the tooltips to be displayed in the ribbon control (ebn)

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oAppearance
	LOCAL oItems
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oAppearance := oRibbon:VisualAppearance()
			oAppearance:Add(1,"c:\exontrol\images\normal.ebn")
			oAppearance:Add(2,"c:\exontrol\images\pushed.ebn")
		oRibbon:ToolTipDelay := 1
		oRibbon:SetProperty("Background",64/*exToolTipAppearance*/,0x1000000)
		oRibbon:SetProperty("Background",66/*exToolTipForeColor*/,AutomationTranslateColor( GraMakeRGBColor  ( { 255,0,0 } )  , .F. ))
		oItems := oRibbon:Items()
			oItems:Add("Item"):Tooltip := "this is a bit of text to be shown when cursor hovers it"
			oItems:Add("Item"):Tooltip := "this is a bit of text to be shown when cursor hovers it"
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
155
Is it possible to change the visual appearance of the buttons to be displayed in the ribbon control (ebn)

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oAppearance
	LOCAL oItem,oItem1,oItem2,oItem3
	LOCAL oItems,oItems1,oItems2
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oAppearance := oRibbon:VisualAppearance()
			oAppearance:Add(1,"c:\exontrol\images\normal.ebn")
			oAppearance:Add(2,"c:\exontrol\images\pushed.ebn")
		oRibbon:SetProperty("Background",2/*0x2+*/,0x1000000)
		oRibbon:SetProperty("Background",3/*0x3+*/,0x2000000)
		oRibbon:SetProperty("Background",114/*exMenuSeparatorSelectButton*/,AutomationTranslateColor( GraMakeRGBColor  ( { 255,0,0 } )  , .F. ))
		oRibbon:SetProperty("Background",115/*exMenuSeparatorSelectButtonBottom*/,AutomationTranslateColor( GraMakeRGBColor  ( { 0,0,255 } )  , .F. ))
		oItems := oRibbon:Items()
			oItems:Padding := "4,4,4,4"
			oItems:Add("Button"):ShowAsButton := 3/*exShowAsButtonAutoSize+exShowAsButton*/
			oItem := oItems:Add("")
				oItem:Enabled := .F.
				oItem:ItemHeight := 4
			oItem1 := oItems:Add("Button",2)
				oItem1:ShowAsButton := 275/*exShowAsSelectButtonBottom+exShowAsButtonAutoSize*/
				oItems1 := oItem1:Items()
					oItems1:PopupAppearance := 6/*ShadowBorder*/
					oItems1:Add("Item 1")
					oItems1:Add("Item 2")
					oItems1:Add("Item 3")
			oItem2 := oItems:Add("")
				oItem2:Enabled := .F.
				oItem2:ItemHeight := 4
			oItem3 := oItems:Add("Button",2)
				oItem3:ShowAsButton := 19/*exShowAsSelectButton+exShowAsButtonAutoSize*/
				oItems2 := oItem3:Items()
					oItems2:PopupAppearance := 6/*ShadowBorder*/
					oItems2:Add("Item 1")
					oItems2:Add("Item 2")
					oItems2:Add("Item 3")
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
154
I've seen that the width of the tooltip is variable. Can I make it larger

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

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

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:ToolTipWidth := 328
		oItems := oRibbon:Items()
			oItems:Add("Item"):Tooltip := "this is a bit of text to be shown when cursor hovers it"
			oItems:Add("Item"):Tooltip := "this is a bit of text to be shown when cursor hovers it"
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
153
How do I disable showing the tooltip for all control (method 1)

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

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

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:ToolTipDelay := 0
		oItems := oRibbon:Items()
			oItems:Add("Item"):Tooltip := "this is a bit of text to be shown when cursor hovers it"
			oItems:Add("Item"):Tooltip := "this is a bit of text to be shown when cursor hovers it"
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
152
How do I let the tooltip being displayed longer

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

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

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:ToolTipPopDelay := 10000
		oItems := oRibbon:Items()
			oItems:Add("Item"):Tooltip := "this is a bit of text to be shown when cursor hovers it"
			oItems:Add("Item"):Tooltip := "this is a bit of text to be shown when cursor hovers it"
		oRibbon:Refresh()

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

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

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

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:ToolTipDelay := 1
		oItems := oRibbon:Items()
			oItems:Add("Item"):Tooltip := "this is a bit of text to be shown when cursor hovers it"
			oItems:Add("Item"):Tooltip := "this is a bit of text to be shown when cursor hovers it"
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
150
How can I get the version of the control I am running

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

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

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		DevOut( oRibbon:Version() )

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
149
How can I align the picture on the control's background

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

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

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:Picture := oRibbon:ExecuteTemplate("loadpicture(`c:\exontrol\images\card.png`)")
		oRibbon:PictureDisplay := 2/*UpperRight*/
		oItems := oRibbon:Items()
			oItems:Add("Item")
			oItems:Add("Item")
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
148
Is it possible to place a picture on the control's background

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

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

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:Picture := oRibbon:ExecuteTemplate("loadpicture(`c:\exontrol\images\card.png`)")
		oItems := oRibbon:Items()
			oItems:Add("Item")
			oItems:Add("Item")
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
147
How can I display the item using a different font/size

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

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

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oItems := oRibbon:Items()
			oItems:Add(""):Caption := "<font ;14>This is a bit of text"
			oItems:Add("<font ;6>This is a bit of text")
			oItems:Add(""):Caption := "<font Times New Roman;22>This is a bit of text</font>. Default"
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
146
How can I use the Event event, available for /COM version

PROCEDURE OnEvent(oRibbon,EventID)
	DevOut( "Event" )
	DevOut( Transform(oRibbon:EventParam(-2),"") )
RETURN

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem
	LOCAL oItems
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:Event := {|EventID| OnEvent(oRibbon,EventID)} /*Notifies the application once the control fires an event.*/

		oItems := oRibbon:Items()
			oItems:Add("Check"):Check := .T.
			oItem := oItems:Add("Slider")
				oItem:AllowEdit := 3/*exItemEditSlider*/
				oItem:EditWidth := 128
				oItem:EditBorder := 0/*exEditBorderNone*/
				oItem:EditValue := 25
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
145
Is it possible to get notified once the user edits the field, or change the slider value

PROCEDURE OnEditChange(oRibbon,Itm)
	DevOut( "EditChange event on Itm object" )
RETURN

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem
	LOCAL oItems
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:EditChange := {|Itm| OnEditChange(oRibbon,Itm)} /*Occurs when the user alters the item's text box field.*/

		oItems := oRibbon:Items()
			oItem := oItems:Add("Item")
				oItem:AllowEdit := 3/*exItemEditSlider*/
				oItem:EditWidth := 128
				oItem:EditBorder := 0/*exEditBorderNone*/
				oItem:EditValue := 25
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
144
How do I get notified once I uncheck an item

PROCEDURE OnUncheckItem(oRibbon,Itm)
	DevOut( "UncheckItem event on Itm object" )
RETURN

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

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

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:UncheckItem := {|Itm| OnUncheckItem(oRibbon,Itm)} /*Occurs when the user unchecks the item.*/

		oItems := oRibbon:Items()
			oItems:Add("Item"):Check := .T.
			oItems:Add("Item"):Check := .T.
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
143
How do I get notified once I check an item

PROCEDURE OnCheckItem(oRibbon,Itm)
	DevOut( "CheckItem event on Itm object" )
RETURN

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

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

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:CheckItem := {|Itm| OnCheckItem(oRibbon,Itm)} /*Occurs when the user checks the item.*/

		oItems := oRibbon:Items()
			oItems:Add("Item"):Check := .T.
			oItems:Add("Item"):Check := .T.
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
142
How do I get notified once I click/select an item

PROCEDURE OnSelectItem(oRibbon,Itm)
	DevOut( "SelectItem event on Itm object" )
RETURN

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

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

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:SelectItem := {|Itm| OnSelectItem(oRibbon,Itm)} /*Occurs when the user selects the item.*/

		oItems := oRibbon:Items()
			oItems:Add("Item")
			oItems:Add("Item")
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
141
Does your control support padding for items

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem
	LOCAL oItems,oItems1
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:PopupFlatAppearance := .F.
		oItems := oRibbon:Items()
			oItems:Padding := "2,12,2,2"
			oItem := oItems:Add("",2)
				oItem:GroupPopup := 3/*exNoGroupPopupFrame+exGroupPopup*/
				oItems1 := oItem:Items()
					oItems1:Add("Item 1")
					oItems1:Add("Item 2")
					oItems1:Add("Item 3")
			oItems:SetProperty("BackColor",AutomationTranslateColor( GraMakeRGBColor  ( { 255,255,255 } )  , .F. ))
			oItems:BackgroundExt := "root[pattern=0x000,frame=RGB(128,128,128)](top[2],top[10,text=`<font ;6><fgcolor 808080> group </font></fgcolor>`,align=0x11])"
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
140
How can I display the drop down popup to a different position ( method 2 )

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem
	LOCAL oItems,oItems1
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oItems := oRibbon:Items()
			oItem := oItems:Add("Popup",2,100)
				oItem:ShowPopupAlign := 1/*exShowPopupAlignDown*/
				oItem:ShowPopupArrow := .F.
				oItem:ShowPopupOffset := "-12,-48"
				oItems1 := oItem:Items()
					oItems1:PopupAppearance := 3/*RaisedBorder*/
					oItems1:Add("Item 1")
					oItems1:Add("Item 2")
					oItems1:Add("Item 3")
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
139
How can I display the drop down popup to a different position ( method 1 )

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem,oItem1,oItem2
	LOCAL oItems,oItems1,oItems2,oItems3
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oItems := oRibbon:Items()
			oItem := oItems:Add("",2)
				oItem:GroupPopup := 1/*exGroupPopup*/
				oItems1 := oItem:Items()
					oItem1 := oItems1:Add("Popup 1",2,100)
						oItem1:ShowPopupAlign := 1/*exShowPopupAlignDown*/
						oItem1:ShowPopupArrow := .F.
						oItems2 := oItem1:Items()
							oItems2:PopupAppearance := 3/*RaisedBorder*/
							oItems2:Add("Item 1")
							oItems2:Add("Item 2")
							oItems2:Add("Item 3")
					oItem2 := oItems1:Add("Popup 2",2,200)
						oItem2:ShowPopupAt := 100
						oItem2:ShowPopupArrow := .F.
						oItems3 := oItem2:Items()
							oItems3:PopupAppearance := 3/*RaisedBorder*/
							oItems3:Add("Item 4")
							oItems3:Add("Item 5")
							oItems3:Add("Item 6")
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
138
Is it possible to show the popup bellow to the item, rather than on the right side

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem
	LOCAL oItems,oItems1
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oItems := oRibbon:Items()
			oItem := oItems:Add("Popup",2)
				oItem:ShowPopupAlign := 1/*exShowPopupAlignDown*/
				oItem:ShowPopupArrow := .F.
				oItems1 := oItem:Items()
					oItems1:PopupAppearance := 1/*FlatBorder*/
					oItems1:Add("Item 1")
					oItems1:Add("Item 2")
					oItems1:Add("Item 3")
			oItems:Add(""):ToString := "Popup[arrow=0][popupalign=1][popupapp=1](Item 1,Item 2,Item 3)"
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
137
How can I change the visual appearance for items, when cursor hovers it (hot,EBN)

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem
	LOCAL oItems,oItems1
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:VisualAppearance():Add(1,"c:\exontrol\images\normal.ebn")
		oItems := oRibbon:Items()
			oItem := oItems:Add("",2)
				oItem:GroupPopup := 3/*exNoGroupPopupFrame+exGroupPopup*/
				oItems1 := oItem:Items()
					oItems1:SetProperty("HotBackColor",0x1000000)
					oItems1:Padding := "4,8,4,8"
					oItems1:Add("Item 1")
					oItems1:Add("Item 2")
					oItems1:Add("Item 3")
			oItems:Add(""):ToString := "[group=0x03][itemspad=4,8,4,8][itemsbghot=0x1000000](Item 1,Item 2,Item 3)"
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
136
How can I change the background color for items, when cursor hovers it (hot)

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem
	LOCAL oItems,oItems1
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oItems := oRibbon:Items()
			oItem := oItems:Add("",2)
				oItem:GroupPopup := 3/*exNoGroupPopupFrame+exGroupPopup*/
				oItems1 := oItem:Items()
					oItems1:SetProperty("HotBackColor",AutomationTranslateColor( GraMakeRGBColor  ( { 255,0,0 } )  , .F. ))
					oItems1:Padding := "0,8,0,8"
					oItems1:Add("Item 1")
					oItems1:Add("Item 2")
					oItems1:Add("Item 3")
			oItems:Add(""):ToString := "[group=0x03][itemspad=0,8,0,8][itemsbghot=RGB(255,0,0)](Item 1,Item 2,Item 3)"
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
135
How can I change the visual appearance for items (EBN)

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem
	LOCAL oItems,oItems1
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:VisualAppearance():Add(1,"c:\exontrol\images\normal.ebn")
		oItems := oRibbon:Items()
			oItem := oItems:Add("",2)
				oItem:GroupPopup := 3/*exNoGroupPopupFrame+exGroupPopup*/
				oItems1 := oItem:Items()
					oItems1:SetProperty("BackColor",0x1000000)
					oItems1:Padding := "4,8,4,8"
					oItems1:Add("Item 1")
					oItems1:Add("Item 2")
					oItems1:Add("Item 3")
			oItems:Add(""):ToString := "[group=0x03][itemspad=4,8,4,8][itemsbg=0x1000000](Item 1,Item 2,Item 3)"
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
134
How can I change the background color for items

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem
	LOCAL oItems,oItems1
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oItems := oRibbon:Items()
			oItem := oItems:Add("",2)
				oItem:GroupPopup := 3/*exNoGroupPopupFrame+exGroupPopup*/
				oItems1 := oItem:Items()
					oItems1:SetProperty("BackColor",AutomationTranslateColor( GraMakeRGBColor  ( { 255,0,0 } )  , .F. ))
					oItems1:Padding := "0,8,0,8"
					oItems1:Add("Item 1")
					oItems1:Add("Item 2")
					oItems1:Add("Item 3")
			oItems:Add(""):ToString := "[group=0x03][itemspad=0,8,0,8][itemsbg=RGB(255,0,0)](Item 1,Item 2,Item 3)"
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
133
Is it possible to hide the popup's arrow

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem
	LOCAL oItems,oItems1
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oItems := oRibbon:Items()
			oItem := oItems:Add("Popup",2)
				oItem:ShowPopupArrow := .F.
				oItems1 := oItem:Items()
					oItems1:PopupAppearance := 6/*ShadowBorder*/
					oItems1:Add("Item 1")
					oItems1:Add("Item 2")
					oItems1:Add("Item 3")
			oItems:Add(""):ToString := "Popup[arrow=0][popupapp=6](Item 1,Item 2,Item 3)"
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
132
How do I hide the left gray portion to be shown on the drop down menu/popup (method 2)

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItems,oItems1
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:PopupFlatImageWidth := 0
		oItems := oRibbon:Items()
			oItems1 := oItems:Add("Popup",2):Items()
				oItems1:Add("Item 1")
				oItems1:Add("Item 2")
				oItems1:Add("Item 3")
				oItems1:PopupAppearance := 6/*ShadowBorder*/
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
131
How do I hide the left gray portion to be shown on the drop down menu/popup (method 1)

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItems,oItems1
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:PopupFlatAppearance := .F.
		oItems := oRibbon:Items()
			oItems1 := oItems:Add("Popup",2):Items()
				oItems1:Add("Item 1")
				oItems1:Add("Item 2")
				oItems1:Add("Item 3")
				oItems1:PopupAppearance := 6/*ShadowBorder*/
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
130
How can I arrange the drop down item from left to right, rather than top to bottom

PROCEDURE OnSelectItem(oRibbon,Itm)
	DevOut( "Clicked" )
RETURN

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem,oItem1
	LOCAL oItems,oItems1,oItems2
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:SelectItem := {|Itm| OnSelectItem(oRibbon,Itm)} /*Occurs when the user selects the item.*/

		oRibbon:PopupFlatAppearance := .F.
		oItems := oRibbon:Items()
			oItem := oItems:Add("Button",2)
				oItem:ShowAsButton := 275/*exShowAsSelectButtonBottom+exShowAsButtonAutoSize*/
				oItems1 := oItem:Items()
					oItems1:PopupAppearance := 6/*ShadowBorder*/
					oItem1 := oItems1:Add("",2)
						oItem1:GroupPopup := 3/*exNoGroupPopupFrame+exGroupPopup*/
						oItems2 := oItem1:Items()
							oItems2:Add("Item 1")
							oItems2:Add("Item 2")
							oItems2:Add("Item 3")
			oItems:Add(""):ToString := "Button[button=0x0113][popupapp=6]([group=0x03](Item 1,Item 2,Item 3))"
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
129
How can I add a drop down button / combobox (method 2)

PROCEDURE OnSelectItem(oRibbon,Itm)
	DevOut( "Clicked" )
RETURN

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem
	LOCAL oItems,oItems1
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:SelectItem := {|Itm| OnSelectItem(oRibbon,Itm)} /*Occurs when the user selects the item.*/

		oItems := oRibbon:Items()
			oItem := oItems:Add("Button",2)
				oItem:ShowAsButton := 275/*exShowAsSelectButtonBottom+exShowAsButtonAutoSize*/
				oItems1 := oItem:Items()
					oItems1:PopupAppearance := 6/*ShadowBorder*/
					oItems1:Add("Item 1")
					oItems1:Add("Item 2")
					oItems1:Add("Item 3")
			oItems:Add(""):ToString := "Button[button=275][popupapp=6](Item 1[id=20],Item 2[id=30],Item 3[id=40])"
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
128
How can I add a drop down button / combobox (method 1)

PROCEDURE OnSelectItem(oRibbon,Itm)
	DevOut( "Clicked" )
RETURN

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem
	LOCAL oItems,oItems1
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:SelectItem := {|Itm| OnSelectItem(oRibbon,Itm)} /*Occurs when the user selects the item.*/

		oItems := oRibbon:Items()
			oItem := oItems:Add("Button",2)
				oItem:ShowAsButton := 19/*exShowAsSelectButton+exShowAsButtonAutoSize*/
				oItems1 := oItem:Items()
					oItems1:PopupAppearance := 6/*ShadowBorder*/
					oItems1:Add("Item 1")
					oItems1:Add("Item 2")
					oItems1:Add("Item 3")
			oItems:Add(""):ToString := "Button[button=0x13][popupapp=6](Item 1[id=20],Item 2[id=30],Item 3[id=40])"
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
127
I am using exShowAsSelectButton/exShowAsSelectButtonBottom but none of them works. What could be wrong

PROCEDURE OnSelectItem(oRibbon,Itm)
	DevOut( "Clicked" )
RETURN

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem
	LOCAL oItems,oItems1
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:SelectItem := {|Itm| OnSelectItem(oRibbon,Itm)} /*Occurs when the user selects the item.*/

		oItems := oRibbon:Items()
			oItem := oItems:Add("Button",2)
				oItem:ShowAsButton := 19/*exShowAsSelectButton+exShowAsButtonAutoSize*/
				oItems1 := oItem:Items()
					oItems1:PopupAppearance := 6/*ShadowBorder*/
					oItems1:Add("Item 1")
					oItems1:Add("Item 2")
					oItems1:Add("Item 3")
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
126
How can I add a button (push button)

PROCEDURE OnSelectItem(oRibbon,Itm)
	DevOut( "Clicked" )
RETURN

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

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

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:SelectItem := {|Itm| OnSelectItem(oRibbon,Itm)} /*Occurs when the user selects the item.*/

		oItems := oRibbon:Items()
			oItems:Add("Button"):ShowAsButton := 3/*exShowAsButtonAutoSize+exShowAsButton*/
			oItems:Add(""):ToString := "Button[button=0x03]"
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
125
How can I display grouping items with no frame arround

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem
	LOCAL oItems,oItems1
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oItems := oRibbon:Items()
			oItem := oItems:Add("Horizontal Group",2)
				oItem:GroupPopup := 243/*exGroupPopupFrameThickBox+exGroupPopupFrameSolidBox+exGroupPopupEqualHeight+exGroupPopupEqualWidth+exNoGroupPopupFrame+exGroupPopup*/
				oItems1 := oItem:Items()
					oItems1:Add("A"):Alignment := 1/*exCenter*/
					oItems1:Add("BC"):Alignment := 1/*exCenter*/
					oItems1:Add("D"):Alignment := 1/*exCenter*/
			oItems:Add(""):ToString := "Horizontal Group[group=243](A[id=20][align=1],BC[id=30][align=1],D[id=40][align=1])"
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
124
How can I display grouping items of the same size/width/height

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem
	LOCAL oItems,oItems1
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oItems := oRibbon:Items()
			oItem := oItems:Add("Horizontal Group",2)
				oItem:GroupPopup := 241/*exGroupPopupFrameThickBox+exGroupPopupFrameSolidBox+exGroupPopupEqualHeight+exGroupPopupEqualWidth+exGroupPopup*/
				oItems1 := oItem:Items()
					oItems1:Add("A"):Alignment := 1/*exCenter*/
					oItems1:Add("BC"):Alignment := 1/*exCenter*/
					oItems1:Add("D"):Alignment := 1/*exCenter*/
			oItems:Add(""):ToString := "Horizontal Group[group=0xF1](A[id=20][align=1],BC[id=30][align=1],D[id=40][align=1])"
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
123
Is it possible to display a ticker frame arround grouping items

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem
	LOCAL oItems,oItems1
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oItems := oRibbon:Items()
			oItem := oItems:Add("Horizontal Group",2)
				oItem:GroupPopup := 193/*exGroupPopupFrameThickBox+exGroupPopupFrameSolidBox+exGroupPopup*/
				oItems1 := oItem:Items()
					oItems1:Add("Item 1")
					oItems1:Add("Item 2")
					oItems1:Add("Item 3")
			oItems:Add(""):ToString := "Horizontal Group[group=193](Item 1[id=20],Item 2[id=30],Item 3[id=40])"
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
122
How do I display items horizontally arranged

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem
	LOCAL oItems,oItems1
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oItems := oRibbon:Items()
			oItem := oItems:Add("Horizontal Group",2)
				oItem:GroupPopup := 1/*exGroupPopup*/
				oItems1 := oItem:Items()
					oItems1:Add("Item 1")
					oItems1:Add("Item 2")
					oItems1:Add("Item 3")
			oItems:Add(""):ToString := "Horizontal Group[group=0x01](Item 1[id=20],Item 2[id=30],Item 3[id=40])"
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
121
Is it possible to expand an item when it is clicked (tree,group,vertical)

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem,oItem1
	LOCAL oItems,oItems1
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oItems := oRibbon:Items()
			oItem := oItems:Add("Expand",2)
				oItem:GroupPopup := 259/*exGroupPopupVertical+exNoGroupPopupFrame+exGroupPopup*/
				oItem:Check := .T.
				oItem:ShowPopupOnChecked := .T.
				oItems1 := oItem:Items()
					oItems1:Padding := "22,0,0,0"
					oItems1:Add("Radio 1"):Radio := .T.
					oItems1:Add("Radio 2"):Radio := .T.
					oItem1 := oItems1:Add("Radio 3")
						oItem1:Radio := .T.
						oItem1:Checked := .T.
				oItem:Checked := .T.
			oItems:Add(""):ToString := "Expand[typ=1][chk=1][spchk=-1][group=0x0103][itemspad=22,0,0,0](Radio 1[id=20][typ=2],Radio 2[id=30][typ=2],Radio 3[id=40][typ=2][chk=1])"
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
120
Is it possible to expand an item when it is clicked (tree,group,vertical)

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem,oItem1
	LOCAL oItems,oItems1
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oItems := oRibbon:Items()
			oItem := oItems:Add("Expand",2)
				oItem:GroupPopup := 259/*exGroupPopupVertical+exNoGroupPopupFrame+exGroupPopup*/
				oItem:Check := .T.
				oItem:ShowPopupOnChecked := .T.
				oItems1 := oItem:Items()
					oItems1:Padding := "22,0,0,0"
					oItems1:Add("Radio 1"):Radio := .T.
					oItems1:Add("Radio 2"):Radio := .T.
					oItem1 := oItems1:Add("Radio 3")
						oItem1:Radio := .T.
						oItem1:Checked := .T.
				oItem:Checked := .T.
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
119
Is it possible to expand an item when it is clicked (group)

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem
	LOCAL oItems,oItems1
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oItems := oRibbon:Items()
			oItem := oItems:Add("Expand",2)
				oItem:GroupPopup := 1/*exGroupPopup*/
				oItem:ItemHeight := 24
				oItem:Check := .T.
				oItem:ShowPopupOnChecked := .T.
				oItems1 := oItem:Items()
					oItems1:Add("Item 1")
					oItems1:Add("Item 2")
					oItems1:Add("Item 3")
					oItems1:PopupAppearance := 6/*ShadowBorder*/
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
118
Is it possible to extend an item when it is clicked

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem
	LOCAL oItems,oItems1
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oItems := oRibbon:Items()
			oItem := oItems:Add("Expand",2)
				oItem:Check := .T.
				oItem:ShowPopupOnChecked := .T.
				oItems1 := oItem:Items()
					oItems1:Add("Item 1")
					oItems1:Add("Item 2")
					oItems1:Add("Item 3")
					oItems1:PopupAppearance := 6/*ShadowBorder*/
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
117
Does your control implement padding for item

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

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

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oItems := oRibbon:Items()
			oItems:SetProperty("BackColor",AutomationTranslateColor( GraMakeRGBColor  ( { 250,250,250 } )  , .F. ))
			oItems:Add("Item"):Padding := "4,4,4,4"
			oItems:Add(""):ToString := "Item[pad=4,4,4,4]"
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
116
How can I add an empty item for a horizontal group

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem,oItem1,oItem2
	LOCAL oItems,oItems1
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oItems := oRibbon:Items()
			oItem := oItems:Add("",2)
				oItem:GroupPopup := 3/*exNoGroupPopupFrame+exGroupPopup*/
				oItems1 := oItem:Items()
					oItems1:Add("Item 1")
					oItem1 := oItems1:Add("",2)
						oItem1:GroupPopup := 5/*exGroupPopupCenter+exGroupPopup*/
						oItem1:ItemHeight := 12
						oItem2 := oItem1:Items():Add("")
							oItem2:Enabled := .F.
							oItem2:ItemHeight := 8
							oItem2:CaptionWidth := 8
					oItems1:Add("Item 2")
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
115
How can I add an empty/separator item

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem
	LOCAL oItems
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oItems := oRibbon:Items()
			oItems:Add("Item")
			oItem := oItems:Add("")
				oItem:Enabled := .F.
				oItem:ItemHeight := 2
				oItem:CaptionWidth := 8
				oItem:SetProperty("BackColor",AutomationTranslateColor( GraMakeRGBColor  ( { 240,240,240 } )  , .F. ))
			oItems:Add("Item")
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
114
How can I add an empty/frame item

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem,oItem1
	LOCAL oItems
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oItems := oRibbon:Items()
			oItems:Add("Item 1")
			oItem := oItems:Add("",2)
				oItem:GroupPopup := 5/*exGroupPopupCenter+exGroupPopup*/
				oItem:ItemHeight := 12
				oItem1 := oItem:Items():Add("")
					oItem1:Enabled := .F.
					oItem1:ItemHeight := 8
					oItem1:CaptionWidth := 8
			oItems:Add("Item 2")
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
113
How can I specify the height of the item

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

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

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oItems := oRibbon:Items()
			oItems:SetProperty("BackColor",AutomationTranslateColor( GraMakeRGBColor  ( { 250,250,250 } )  , .F. ))
			oItems:Add("Item"):ItemHeight := 64
			oItems:Add(""):ToString := "Item[height=64]"
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
112
How can I specify the width of the item

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

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

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oItems := oRibbon:Items()
			oItems:SetProperty("BackColor",AutomationTranslateColor( GraMakeRGBColor  ( { 250,250,250 } )  , .F. ))
			oItems:Add("Item"):CaptionWidth := 128
			oItems:Add(""):ToString := "Item[captionwidth=128]"
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
111
How do I align the item

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem,oItem1
	LOCAL oItems
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oItems := oRibbon:Items()
			oItems:SetProperty("BackColor",AutomationTranslateColor( GraMakeRGBColor  ( { 250,250,250 } )  , .F. ))
			oItems:Add("Item")
			oItem := oItems:Add("Item")
				oItem:Alignment := 1/*exCenter*/
				oItem:CaptionWidth := 128
			oItem1 := oItems:Add("Item")
				oItem1:Alignment := 2/*exRight*/
				oItem1:CaptionWidth := 128
			oItems:Add(""):ToString := "Item[align=1]"
		oRibbon:Refresh()

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

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

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

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oItems := oRibbon:Items()
			oItems:Add("Item"):Underline := .T.
			oItems:Add("<u>Item</u>")
			oItems:Add(""):ToString := "Item[und]"
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
109
How can I show the item as strikeout

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

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

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oItems := oRibbon:Items()
			oItems:Add("Item"):Strikeout := .T.
			oItems:Add("<s>Item</s>")
			oItems:Add(""):ToString := "Item[stk]"
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
108
How can I show the item in italics

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

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

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oItems := oRibbon:Items()
			oItems:Add("Item"):Italic := .T.
			oItems:Add("<i>Item</i>")
			oItems:Add(""):ToString := "Item[itl]"
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
107
How can I show the item in bold

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

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

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oItems := oRibbon:Items()
			oItems:Add("Item"):Bold := .T.
			oItems:Add("<b>Item</b>")
			oItems:Add(""):ToString := "Item[bld]"
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
106
How can I show the item as disabled but still be able to select or use it

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

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

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oItems := oRibbon:Items()
			oItems:Add("Item"):ShowAsDisabled := .T.
			oItems:Add(""):ToString := "Item[showdis=1]"
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
105
How can I enable or disable an item

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

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

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oItems := oRibbon:Items()
			oItems:Add("Item"):Enabled := .F.
			oItems:Add(""):ToString := "Item[dis]"
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
104
How can I add a separator item

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

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

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oItems := oRibbon:Items()
			oItems:Add("Item"):CaptionWidth := 128
			oItems:Add("<font ;6>separator",1)
			oItems:Add("Item"):CaptionWidth := 128
			oItems:Add(""):ToString := "<font ;6>separator[sep]"
		oRibbon:Refresh()

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

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

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

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oItems := oRibbon:Items()
			oItems:Add("Item"):SetProperty("ForeColor",AutomationTranslateColor( GraMakeRGBColor  ( { 255,0,0 } )  , .F. ))
			oItems:Add("<fgcolor FF0000>Item")
			oItems:Add(""):ToString := "Item[fg=RGB(255,0,0)]"
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
102
How can I change the item's background/backcolor, when the item is selected/checked (radio-buttons)

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem,oItem1,oItem2
	LOCAL oItems,oItems1
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oItems := oRibbon:Items()
			oItem := oItems:Add("",2)
				oItem:GroupPopup := 3/*exNoGroupPopupFrame+exGroupPopup*/
				oItems1 := oItem:Items()
					oItem1 := oItems1:Add("Radio 1")
						oItem1:SetProperty("HotBackColor",AutomationTranslateColor( GraMakeRGBColor  ( { 255,255,255 } )  , .F. ))
						oItem1:SetProperty("SelBackColor",AutomationTranslateColor( GraMakeRGBColor  ( { 255,0,0 } )  , .F. ))
						oItem1:SetProperty("SelHotBackColor",AutomationTranslateColor( GraMakeRGBColor  ( { 255,0,0 } )  , .F. ))
						oItem1:ShowCheckedAsSelected := 1/*exDisplayItemHighlight*/
						oItem1:Radio := .T.
						oItem1:RadioGroup := 100
						oItem1:Checked := .T.
					oItem2 := oItems1:Add("Radio 2")
						oItem2:SetProperty("HotBackColor",AutomationTranslateColor( GraMakeRGBColor  ( { 255,255,255 } )  , .F. ))
						oItem2:SetProperty("SelBackColor",AutomationTranslateColor( GraMakeRGBColor  ( { 255,0,0 } )  , .F. ))
						oItem2:SetProperty("SelHotBackColor",AutomationTranslateColor( GraMakeRGBColor  ( { 255,0,0 } )  , .F. ))
						oItem2:ShowCheckedAsSelected := 1/*exDisplayItemHighlight*/
						oItem2:Radio := .T.
						oItem2:RadioGroup := 100
					oItems1:Add(""):ToString := "Radio 3[typ=2][show=1][grp=100][bghot=RGB(255,255,255)][bgsel=RGB(255,0,0)][bgselhot=RGB(255,0,0)]"
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
101
How can I change the item's background/backcolor, when the item is selected/checked (check-box)

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem
	LOCAL oItems
	LOCAL oRibbon

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

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oItems := oRibbon:Items()
			oItem := oItems:Add("Check 1")
				oItem:SetProperty("HotBackColor",AutomationTranslateColor( GraMakeRGBColor  ( { 255,255,255 } )  , .F. ))
				oItem:SetProperty("SelBackColor",AutomationTranslateColor( GraMakeRGBColor  ( { 255,0,0 } )  , .F. ))
				oItem:SetProperty("SelHotBackColor",AutomationTranslateColor( GraMakeRGBColor  ( { 255,0,0 } )  , .F. ))
				oItem:ShowCheckedAsSelected := 1/*exDisplayItemHighlight*/
				oItem:Checked := .T.
				oItem:Check := .T.
			oItems:Add(""):ToString := "Check 2[typ=1][chk=0][show=1][bghot=RGB(255,255,255)][bgsel=RGB(255,0,0)][bgselhot=RGB(255,0,0)]"
		oRibbon:Refresh()

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