142
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 oCascadeFile
	LOCAL oAppearance

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:BeginUpdate()
		oCascadeFile:ImageSize := 32
		oCascadeFile:DefaultItemHeight := 36
		oCascadeFile:HeaderHeight := oCascadeFile:DefaultItemHeight()
		oCascadeFile:Font():Size := 16
		oCascadeFile:ToolTipFont():Size := oCascadeFile:Font():Size()
		oCascadeFile:Indent := 26
		oAppearance := oCascadeFile: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==")
		oCascadeFile:SetProperty("BackColorHeader",0x4c6c6c6)
		oCascadeFile:SetProperty("SelBackColor",0x4f0f0f0)
		oCascadeFile:SetProperty("SelForeColor",AutomationTranslateColor( GraMakeRGBColor  ( { 0,0,1 } )  , .F. ))
		oCascadeFile:SetProperty("HotBackColor",0x4f8f8f8)
		oCascadeFile:SetProperty("Background",70/*exCheckBoxState0*/,0x1000000)
		oCascadeFile:SetProperty("Background",71/*exCheckBoxState1*/,0x2000000)
		oCascadeFile:SetProperty("Background",72/*exCheckBoxState2*/,0x3000000)
		oCascadeFile:ExpandFolders := .T.
		oCascadeFile:HasCheckBox := 1/*PartialCheckBox*/
		oCascadeFile:ExploreFromHere := ""
		oCascadeFile:Select := "C:"
		oCascadeFile:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
141
ImageSize property on 16 (default) (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 oCascadeFile
	LOCAL oAppearance

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:BeginUpdate()
		oCascadeFile:ImageSize := 16
		oAppearance := oCascadeFile:VisualAppearance()
			oAppearance:Add(4,"gBFLBCJwBAEHhEJAAEhABUYCg6AADACAxRDgMQBQKAAzQFAYbhkGCGAAGMZxRgmFgAQhFcZQSKUOQTDKMIziYBYfgkMIgSbJUgDGAkRRdDSOYDmGQYDiCIoRShOMIjHLUXxtDaIZwhEAoJb+RgAUY/cTzaAEUwHHiTKInaCQShsFYJUJAdRURQ9EwvCIZBpEWwLChENQwWLCNj2TScBwjCyqbale45ViqdoDU5EUiXJJ8ZxnECfYyrGjaMpCeKBUrGYTVRBIMxLLSia5oeJqMrnBpNVrIUgXCAGFwHK6BcauXIIDp6XoWWRbAAWDpVVzNNC3YzkCIceADHKiXxmVz4JLdGZ1QTGID2XaYaxWK4oZjsVSc4KDHbETbHFi9Fo3NaaxGisew+GYc4HlCR5NAAAIIEkQJSGMOgdE4RhYDwJJsAaAYQgmPpolCWgSCiBJzjcEIAkQXIBm8d5UhOQgCDUIBDDJDhgggJgKgKYJIDSVoDk8KBFF4OohEMZgWDs" +;
		"YYDj4GoGmGSB2B6B5iAiBgYDsYRjGSbIJo4RgqDuIpIAoLoLmMCJGDKDJjJiLA7xqUAAgGTwYnYPoPmQCQGEKEJkEkFg9gGY44BoRoSmSSQ2EKEggHgRhShSZRJFYVoVmWCRmFKFAgGOTheheZgJgYYoYmYSYWGaF4lkMMJ0hqZpJjYbobmcCZGHKHJmjmJh0h2Z4JmYcIaE8WZ2H6H5oAoBoCiCaBKBYfdjGoJoKiKaJKDaDojmkChGgmIgpCoVoWiWaJZiSd4mmmSh2h6J5qAqBoiiiaY5iSeIpmqComiqKpqkqNouiuah6hqMIsmsSpWiuGhP1kOoumuSp2j6L5sAsBo54gKwWkaMZsgsJpKjKbJLDaRYxYWRpSjSbIZiSe41m2CxmlqNptksdpejebR5iSfI4m4S4W16boLiaao6m5fJ9jubwLkaco8m8S5WnaPZunuOp4j6b5Lnac4SA0PAGlgP4wEwFwGkGcIMCcCpCnCCxiA8NYAAmMJfkSbh" +;
		"FCcFpFnGDBnBqRpUhuEwTDeZ5lHCfw6HIQxLCaAxygyJwqgGcATE4FA6hWY4tjEAAQBAgIA==")
		oCascadeFile:SetProperty("BackColorHeader",0x4c6c6c6)
		oCascadeFile:SetProperty("SelBackColor",0x4f0f0f0)
		oCascadeFile:SetProperty("SelForeColor",AutomationTranslateColor( GraMakeRGBColor  ( { 0,0,1 } )  , .F. ))
		oCascadeFile:SetProperty("HotBackColor",0x4f8f8f8)
		oCascadeFile:ExpandFolders := .T.
		oCascadeFile:HasCheckBox := 1/*PartialCheckBox*/
		oCascadeFile:ExploreFromHere := ""
		oCascadeFile:Select := "C:"
		oCascadeFile:EndUpdate()

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

PROCEDURE OnViewEndChanging(oCascadeFile,Operation)
	DevOut( Transform(oCascadeFile:Get(2/*CheckItems*/),"") )
RETURN

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

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:ViewEndChanging := {|Operation| OnViewEndChanging(oCascadeFile,Operation)} /*Occurs once the user changed the view.*/

		oCascadeFile:HasCheckBox := 1/*PartialCheckBox*/
		oCascadeFile:ExploreFromHere := "C:/"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
139
How do I get the selected file/files
PROCEDURE OnViewEndChanging(oCascadeFile,Operation)
	DevOut( oCascadeFile:Select() )
RETURN

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

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:ViewEndChanging := {|Operation| OnViewEndChanging(oCascadeFile,Operation)} /*Occurs once the user changed the view.*/

		oCascadeFile:ExploreFromHere := "C:/"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
138
Is it possible to change the visual appearance of the position signs when user changes the column's position by drag and drop

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

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:BeginUpdate()
		oAppearance := oCascadeFile:VisualAppearance()
			oAppearance:Add(1,"gBFLBCJwBAEHhEJAAEhABZEGACAADACAxRDgMQBQKAAzAJBIYhiG4cYCgMYxXDOCYXABCEYRXBIZQ7BKNIxjSJwFgmEgADKMA4SOKIZhrE4bBhGaQRUgyI43RhHUBzVIUcQvE6TZRHCQYHgkNIhDJIM7TPLkeSVJaTIRoKhJUogApQThTMgVRDEThkGoSa6soSoYTDBKybLrSLKagOT5YUDKUqSdKEZRpEq1YztWbaQoCUoqVRRVIWfbNd4JJa4aDhWpYdpeeY5R7bWLgBYVVABL7LLRsSxpHxPF6RXxaeI3GKsaS8G6ic6nPQMHj7I4NS5pUa6Rh2VYNSa8AAtETRYznOw4bTMXAjNIea5bAYIIR5HIoDzVbQcCQAHL9DBeEMIQEEISgGhMGZQmocgymoYRRCIEQ0G2HYBnEIBig4V4zCQGINnmagCECY43medZ6H2Pw/g+X5fnueh/h+R5+AKABfkMWgGgGYA4AICoCGCE5WA4CphACMgSD2IRIDI" +;
		"BICmEd5YGCBpRjGBgegWIYIgWdgoGIRQsiKCZiAiJZ0gGQI4jUS4LECOAiBmDJflGfg2BSY4Al4OhGkOCJ2DgFJjGGfgqgiH5Ch4RhGkqOQmEOEpkFkHQYhJRYyESAokGKHhIhKIxJEmf4VGUeRGFmF5iBkchPhYJQ5GoYIZg6Ug6GoFYmkmNhuhulRGHKGoImefh0BUZ4JmYeoemeSZ2H6HQmgoBgXDqXwUAQgI=")
			oAppearance:Add(2,"CP:1 0 -36 0 0")
		oCascadeFile:SetProperty("Background",182/*exColumnsPositionSign*/,0x2000000)
		oCascadeFile:StatusBarVisible := 0/*exStatusBarNone*/
		oCascadeFile:Mode := 1/*exSingleCascadeMode*/
		oCascadeFile:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
137
How can I specify my favorites folders

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

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:BeginUpdate()
		oCascadeFile:HeaderVisible := .F.
		oCascadeFile:ExploreFromHere := "::{450d8fba-ad25-11d0-98a8-0800361b1103}|::{018D5C66-4533-4307-9B53-224DE2ED1FE6}|::{20D04FE0-3AEA-1069-A2D8-08002B30309D}|::{F02C1A0D-BE21-4350-88B0-7367FC96EF3C}"
		oCascadeFile:Select := "C:\Windows"
		oCascadeFile:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
136
How can I add the "My Documents"

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

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:ExploreFromHere := "C:\|::{450d8fba-ad25-11d0-98a8-0800361b1103}>"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
135
How can I add the Printers and Faxes

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

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:ColumnsVisible := 2/*exFileColumnName*/
		oCascadeFile:ExploreFromHere := "C:\|::{2227a280-3aea-1069-a2de-08002b30309d}>"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
134
How can I add the "Recycle Bin" folder

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

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:ExploreFromHere := "C:\|::{645FF040-5081-101B-9F08-00AA002F954E}>"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
133
How can I add the "Documents" folder

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

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:ExploreFromHere := "C:\|::{450D8FBA-AD25-11D0-98A8-0800361B1103}>"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
132
How can I add the Network folder

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

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:ExploreFromHere := "C:\|::{F02C1A0D-BE21-4350-88B0-7367FC96EF3C}>"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
131
How can I add the My Computer

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

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:ExploreFromHere := "C:\|::{20D04FE0-3AEA-1069-A2D8-08002B30309D}>"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
130
How can I add the My Network Places folder

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

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:ExploreFromHere := "C:\|::{208D2C60-3AEA-1069-A2D7-08002B30309D}>"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
129
How can I add the Desktop folder

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

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:ExploreFromHere := "C:\|::{00021400-0000-0000-C000-000000000046}>"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
128
How can I create my own favorites folders

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

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:BeginUpdate()
		oCascadeFile:ExploreFromHere := "::{450d8fba-ad25-11d0-98a8-0800361b1103}|C:\Temp><b>My Projects</b>|"
		oCascadeFile:Select := "C:\Temp"
		oCascadeFile:ColumnsVisible := 2/*exFileColumnName*/
		oCascadeFile:HeaderVisible := .F.
		oCascadeFile:FitCascadeColumns := 3
		oCascadeFile:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
127
How can change the explore from folder (sample 2)

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

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:ExploreFromHere := "C:\>"
		oCascadeFile:Layout := "Expand0 = " + CHR(34) + "C:\" + CHR(34) + ";SelectMode0 = 0"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
126
How can change the explore from folder (sample 1)

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

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:ExploreFromHere := "C:\"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
125
Is it possible to include more system drives as root folders (sample 2)

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

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:ExploreFromHere := "C:\>SYSTEM <off 4><b>1|D:\>SYSTEM <off 4><b>2|E:\>SYSTEM <off 4><b>3"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
124
Is it possible to include more system drives as root folders (sample 1)

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

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:ExploreFromHere := "C:\|D:\|E:\"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
123
How can I include a system drive as a root folder, instead lists its content

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

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:ExploreFromHere := "C:\>"
		oCascadeFile:Layout := "Expand0 = " + CHR(34) + "C:\" + CHR(34) + ";SelectMode0 = 0"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
122
How can I add the Desktop as a root folder (sample 3, rename, new display name, root)

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

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:ExploreFromHere := "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}><sha ;;0>This <b>PC</b>"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
121
How can I add the Desktop as a root folder (sample 2)

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

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:ExploreFromHere := "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}>"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
120
How can I add the Desktop as a root folder (sample 1)

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

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:ExploreFromHere := ">"
		oCascadeFile:Select := "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}"
		oCascadeFile:SelectMode := 1/*exSelectModeList*/

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
119
How can I browse the "Public" folder

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

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:ExploreFromHere := "::{4336a54d-038b-4685-ab02-99bb52d3fb8b}>"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
118
How can I browse the "Libraries" folder

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

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:ExploreFromHere := "::{031E4825-7B94-4dc3-B131-E946B44C8DD5}>"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
117
How can I browse the "HomeGroup" folder

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

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:ExploreFromHere := "::{B4FB3F98-C1EA-428d-A78A-D1F5659CBA93}>"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
116
How can I browse the "Games" folder

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

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:ExploreFromHere := "::{ED228FDF-9EA8-4870-83b1-96b02CFE0D52}>"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
115
How can I browse the "OneDrive" folder

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

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:ExploreFromHere := "::{018D5C66-4533-4307-9B53-224DE2ED1FE6}>"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
114
How can I browse the "Recycle Bin" folder

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

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:ExploreFromHere := "::{645FF040-5081-101B-9F08-00AA002F954E}"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
113
How can I browse the "Documents" folder

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

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:ExploreFromHere := "::{450D8FBA-AD25-11D0-98A8-0800361B1103}"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
112
How can I browse the Network folder

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

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:ExploreFromHere := "::{F02C1A0D-BE21-4350-88B0-7367FC96EF3C}"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
111
How can I browse the My Computer

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

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:ExploreFromHere := "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
110
How can I browse the My Network Places folder

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

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:ExploreFromHere := "::{208D2C60-3AEA-1069-A2D7-08002B30309D}"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
109
How can I browse the Desktop folder

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

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:ExploreFromHere := "::{00021400-0000-0000-C000-000000000046}"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
108
How can I select multiple files

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

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:Select := "C:\\r\nD:\\r\nE:\"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
107
How can I select a single file

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

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:Select := "C:\"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
106
Can I change the folder being explored

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

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:ExploreFromHere := "c:\Program Files"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
105
How can I turn on the Thumbnail mode

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

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:Select := "C:\"
		oCascadeFile:SelectMode := 2/*exSelectModeThumbnail*/

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
104
How to turn off the Auto-Update feature
#include "AppEvent.ch"
#include "ActiveX.ch"

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:AutoUpdate := .F.

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
103
I can not make a column larger, by resizing its header, as it splits the control's header only. What can I do

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

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:BeginUpdate()
		oCascadeFile:ColumnAutoResize := .F.
		oCascadeFile:StatusBarVisible := 0/*exStatusBarNone*/
		oCascadeFile:Mode := 1/*exSingleCascadeMode*/
		oCascadeFile:Select := "c:\Windows"
		oCascadeFile:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
102
How can hide the column's header

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

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:BeginUpdate()
		oCascadeFile:HeaderVisible := .F.
		oCascadeFile:ColumnsVisible := 2/*exFileColumnName*/
		oCascadeFile:Select := "C:\Windows"
		oCascadeFile:FitCascadeColumns := 3
		oCascadeFile:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
101
How can hide the Modified, Size and Type columns

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

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:BeginUpdate()
		oCascadeFile:ColumnsVisible := 2/*exFileColumnName*/
		oCascadeFile:Select := "C:\Windows"
		oCascadeFile:FitCascadeColumns := 3
		oCascadeFile:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
100
How can I hide the +/- buttons, so I can show just plain lists, no children

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

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:BeginUpdate()
		oCascadeFile:ColumnsVisible := 2/*exFileColumnName*/
		oCascadeFile:ExpandFolders := .F.
		oCascadeFile:HeaderVisible := .F.
		oCascadeFile:Select := "C:\Windows"
		oCascadeFile:FitCascadeColumns := 3
		oCascadeFile:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
99
A small rectangle is shown around the item that has the focus. Can I hide that
#include "AppEvent.ch"
#include "ActiveX.ch"

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:ShowFocusRect := .F.

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
98
How can I get ride of the hot selection color
#include "AppEvent.ch"
#include "ActiveX.ch"

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:BeginUpdate()
		oCascadeFile:SetProperty("HotBackColor",-1)
		oCascadeFile:SetProperty("HotForeColor",-1)
		oCascadeFile:EndUpdate()

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

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

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:BeginUpdate()
		oAppearance := oCascadeFile:VisualAppearance()
			oAppearance:Add(2,"XP:Button 1 2")
			oAppearance:Add(1,"CP:2 -1 0 1 0")
			oAppearance:Add(4,"XP:Button 1 1")
			oAppearance:Add(3,"CP:4 -1 0 1 0")
		oCascadeFile:FitCascadeColumns := 2
		oCascadeFile:Select := "c:\"
		oCascadeFile:FullRowSelect := .T.
		oCascadeFile:ExpandFolders := .F.
		oCascadeFile:SetProperty("SelBackColor",0x1000000)
		oCascadeFile:SetProperty("SelForeColor",AutomationTranslateColor( GraMakeRGBColor  ( { 0,0,0 } )  , .F. ))
		oCascadeFile:SetProperty("HotBackColor",0x3000000)
		oCascadeFile:SetProperty("HotForeColor",AutomationTranslateColor( GraMakeRGBColor  ( { 0,0,0 } )  , .F. ))
		oCascadeFile:EndUpdate()

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

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

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:BeginUpdate()
		oCascadeFile:VisualAppearance():Add(1,"gBFLBCJwBAEHhEJAAEhABNACg6AADACAxRDgMQBQKAAzAJBIYhiG4cYCgMZhXDOCYXABCEYRXBIZQ7BKNIxjSJwFiCCQwSDKEjyCKcGRHF6MI6gOYpCgOIYjRJNIASVAceAAGaUZrjSgobjmOYhAJCKJUWAFFoVDCgZThGgJHomMIhBDHASQTQ8EytJqmKajCaRSDUJZkWZOIyjBd6a5tVbXEaVTAccxhOKeahvGo5Fred40TRINCWHI1d4NH69JbwMILSgME6FABXdhWFC+Ex9Kiea7kOqIJwyA5bY5kGRWDRkLzROAALJ1Cz7KqydpDYyAGbABagAYfPy8JzxHKNarfA5GZzuG4zdi8U41WCBdpnHQNS4KL6ndBbWrdFoiC8X4QnAOQ8B4dwiHQCIEhQDQmDOIZUmQZYDkIVRSmIEQ3lUGwbEIRQQh4ZpeEQGIMB0JZdkoc4XnqVB/k0CAGAKAJgEgFgGgGYBXnyVA5mCRQ4maA5NjgRJvgSTwoFY" +;
		"FoFmGCBmBqBphhgTJvDcIkFlWCJhmOLgmDoYoIiYKoKmKSI2C6CwiGOLJwgyTJ4lYAg8mOCI+DqDpjkiMJ0g+TJZAYN4OGOWQWEaCpjnOUhBDMZAzk4MYTmUCRGFKFJlEkRhJhKZJTjIWoWmWSR2F6F5mAmBhbhWZAoASdYZk6WYmGqGpmkmNhuhulQonaHJlgmGhnDuJ4JmYeoemeSZ2H6H5nhmTJ2h0TQKAoHohmiCgmgqIpokoJJ3iOaBKDydw8GkShWhaJZpgoZoaiaaRTmKHokGieJiiKKJqEqFomimaoKg6Hg+CgSouimK5rAqRg4D4axKjaHoSGuCpmjqLprkqdo6i0D4aBKQIgiwSwWkaMZsgsJpGD6LJLAqNIyi0CxGlKHJskOahLgKJhzlaK4gi2GxOl6MZtjmTJOjiX5ThSWo5mMM5CkCOpukuNpujubwLiYEY8k2NQ4mqPZNhuZgIj6b5LnaeQ2GXsJrGuQAEAQgI")
		oCascadeFile:FitCascadeColumns := 2
		oCascadeFile:Select := "c:\"
		oCascadeFile:FullRowSelect := .T.
		oCascadeFile:SetProperty("SelBackColor",0x1e0e0e0)
		oCascadeFile:SetProperty("SelForeColor",AutomationTranslateColor( GraMakeRGBColor  ( { 0,0,0 } )  , .F. ))
		oCascadeFile:EndUpdate()

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

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

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:BeginUpdate()
		oCascadeFile:FitCascadeColumns := 2
		oCascadeFile:Select := "c:\"
		oCascadeFile:FullRowSelect := .T.
		oCascadeFile:SetProperty("SelBackColor",AutomationTranslateColor( GraMakeRGBColor  ( { 0,0,0 } )  , .F. ))
		oCascadeFile:SetProperty("SelForeColor",AutomationTranslateColor( GraMakeRGBColor  ( { 255,255,255 } )  , .F. ))
		oCascadeFile:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
94
How can I select the entire item, rather that name only

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

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:BeginUpdate()
		oCascadeFile:Select := "c:\|d:\|e:\"
		oCascadeFile:SelectMode := 1/*exSelectModeList*/
		oCascadeFile:FullRowSelect := .T.
		oCascadeFile:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
93
Is it possible to show the selection with a different color, when the control loses the focus

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

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:BeginUpdate()
		oCascadeFile:HideSelection := .F.
		oCascadeFile:SetProperty("Background",166/*0xa6+*/,AutomationTranslateColor( GraMakeRGBColor  ( { 224,224,224 } )  , .F. ))
		oCascadeFile:SetProperty("Background",167/*0xa7+*/,AutomationTranslateColor( GraMakeRGBColor  ( { 64,64,64 } )  , .F. ))
		oCascadeFile:Select := "c:\|d:\|e:\"
		oCascadeFile:SelectMode := 1/*exSelectModeList*/
		oCascadeFile:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
92
The selection is still shown when the control loses the focus. Is it possible to hide it
#include "AppEvent.ch"
#include "ActiveX.ch"

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:HideSelection := .T.

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
91
How can I enable single-selection
#include "AppEvent.ch"
#include "ActiveX.ch"

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:SingleSel := .T.

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
90
Predefined Keywords of ShowContextMenu property

PROCEDURE OnViewEndChanging(oCascadeFile,Operation)
	oCascadeFile:ExecuteContextMenu := 0
RETURN

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

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:ViewEndChanging := {|Operation| OnViewEndChanging(oCascadeFile,Operation)} /*Occurs once the user changed the view.*/

		oCascadeFile:BeginUpdate()
		oCascadeFile:SetProperty("ScrollPartVisible",0/*exVScroll*/,65536/*exExtentThumbPart*/,.T.)
		oCascadeFile:SetProperty("ScrollPartVisible",1/*exHScroll*/,65536/*exExtentThumbPart*/,.T.)
		oCascadeFile:SetProperty("ScrollPartVisible",2/*exScroll*/,65536/*exExtentThumbPart*/,.T.)
		oCascadeFile:ScrollWidth := 4
		oCascadeFile:SetProperty("Background",276/*exVSBack*/,AutomationTranslateColor( GraMakeRGBColor  ( { 240,240,240 } )  , .F. ))
		oCascadeFile:SetProperty("Background",260/*exVSThumb*/,AutomationTranslateColor( GraMakeRGBColor  ( { 128,128,128 } )  , .F. ))
		oCascadeFile:ScrollHeight := 4
		oCascadeFile:SetProperty("Background",404/*exHSBack*/,oCascadeFile:Background(276/*exVSBack*/))
		oCascadeFile:SetProperty("Background",388/*exHSThumb*/,oCascadeFile:Background(260/*exVSThumb*/))
		oCascadeFile:SetProperty("Background",511/*exScrollSizeGrip*/,oCascadeFile:Background(276/*exVSBack*/))
		oCascadeFile:EndUpdate()
		oCascadeFile:AllowSplitView := 2/*exAllowTwoSplitView*/
		oCascadeFile:FitCascadeColumns := 3
		oCascadeFile:ShowContextMenu := "`menu(` + menu + `)` + `,filecount=` + filecount + `,fileattr=` + hex(fileattr) + `,filename=` + filename + `,fileparsename=` + fileparsename + `,filefullname=` + filefullname + `,[sep]` + `,vlevels=` + vlevels + `,vlevel=` + vlevel + `,hlevels=` + hlevels + `,hlevel=` + hlevel + `,view=` + view + `,[sep]` + `,selectmode=` + selectmode"
		oCascadeFile:SplitViewHeight := "256,256"
		oCascadeFile:Layout := "Select1=" + CHR(34) + "C:\" + CHR(34) + ""
		oCascadeFile:Select := "C:\Windows"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
89
How can I display the identifiers of the control's context menu (debug)

PROCEDURE OnViewEndChanging(oCascadeFile,Operation)
	DevOut( "Operation" )
	DevOut( Transform(Operation,"") )
	DevOut( "ExecuteContextMenu" )
	DevOut( Transform(oCascadeFile:ExecuteContextMenu(),"") )
RETURN

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

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:ViewEndChanging := {|Operation| OnViewEndChanging(oCascadeFile,Operation)} /*Occurs once the user changed the view.*/

		oCascadeFile:ColumnsVisible := 2/*exFileColumnName*/
		oCascadeFile:Mode := 1539/*exDisableThumbnails+exAutoFitOnResizeClient+exSplitFixCascadeMode*/
		oCascadeFile:SingleSel := .F.
		oCascadeFile:ShowContextMenu := "`[debug]` + menu"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
88
How can I copy/execute command a file/folder (selection)
#include "AppEvent.ch"
#include "ActiveX.ch"

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:BeginUpdate()
		oCascadeFile:SingleSel := .F.
		oCascadeFile:ExploreFromHere := "c:\"
		oCascadeFile:ExpandFolders := .T.
		oCascadeFile:Select := "c:\Temp"
		oCascadeFile:ExecuteContextCommand("<selection>",.T.,"Copy")
		oCascadeFile:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
87
How can I copy a file/folder (absolute name)
#include "AppEvent.ch"
#include "ActiveX.ch"

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:BeginUpdate()
		oCascadeFile:ExploreFromHere := "c:\"
		oCascadeFile:ExecuteContextCommand("c:\Temp",.T.,"Copy")
		oCascadeFile:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
86
How can I copy a file/folder (relative name)
#include "AppEvent.ch"
#include "ActiveX.ch"

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:BeginUpdate()
		oCascadeFile:ExploreFromHere := "c:\"
		oCascadeFile:ExecuteContextCommand("Temp",.T.,"Copy")
		oCascadeFile:EndUpdate()

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

PROCEDURE OnViewEndChanging(oCascadeFile,Operation)
	DevOut( "Operation" )
	DevOut( Transform(Operation,"") )
	DevOut( "ExecuteContextMenu" )
	DevOut( Transform(oCascadeFile:ExecuteContextMenu(),"") )
RETURN

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

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:ViewEndChanging := {|Operation| OnViewEndChanging(oCascadeFile,Operation)} /*Occurs once the user changed the view.*/

		oCascadeFile:ColumnsVisible := 2/*exFileColumnName*/
		oCascadeFile:Mode := 1539/*exDisableThumbnails+exAutoFitOnResizeClient+exSplitFixCascadeMode*/
		oCascadeFile:SingleSel := .F.
		oCascadeFile:FullRowSelect := .T.
		oCascadeFile:ShowContextMenu := "filecount = 0 ? `Exit[id=1000]` : ( ( ( filecount = 1 ) ? `" + CHR(34) + "` + filename + `" + CHR(34) + "` : `multiple selection` ) + `[dis],[sep],` + menu)"

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

PROCEDURE OnViewEndChanging(oCascadeFile,Operation)
	DevOut( "Operation" )
	DevOut( Transform(Operation,"") )
	DevOut( "ExecuteContextMenu" )
	DevOut( Transform(oCascadeFile:ExecuteContextMenu(),"") )
RETURN

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

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:ViewEndChanging := {|Operation| OnViewEndChanging(oCascadeFile,Operation)} /*Occurs once the user changed the view.*/

		oCascadeFile:ColumnsVisible := 2/*exFileColumnName*/
		oCascadeFile:Mode := 1539/*exDisableThumbnails+exAutoFitOnResizeClient+exSplitFixCascadeMode*/
		oCascadeFile:SingleSel := .F.
		oCascadeFile:FullRowSelect := .T.
		oCascadeFile:ShowContextMenu := "filecount > 1 ? `multiple selection[dis]` : menu"

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

PROCEDURE OnViewEndChanging(oCascadeFile,Operation)
	DevOut( "Operation" )
	DevOut( Transform(Operation,"") )
	DevOut( "ExecuteContextMenu" )
	DevOut( Transform(oCascadeFile:ExecuteContextMenu(),"") )
RETURN

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

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:ViewEndChanging := {|Operation| OnViewEndChanging(oCascadeFile,Operation)} /*Occurs once the user changed the view.*/

		oCascadeFile:ColumnsVisible := 2/*exFileColumnName*/
		oCascadeFile:Mode := 1539/*exDisableThumbnails+exAutoFitOnResizeClient+exSplitFixCascadeMode*/
		oCascadeFile:SingleSel := .F.
		oCascadeFile:FullRowSelect := .T.
		oCascadeFile:ShowContextMenu := "filecount > 1 ? `multiple selection[dis]` : menu"

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

PROCEDURE OnViewEndChanging(oCascadeFile,Operation)
	DevOut( "Operation" )
	DevOut( Transform(Operation,"") )
	DevOut( "ExecuteContextMenu" )
	DevOut( Transform(oCascadeFile:ExecuteContextMenu(),"") )
RETURN

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

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:ViewEndChanging := {|Operation| OnViewEndChanging(oCascadeFile,Operation)} /*Occurs once the user changed the view.*/

		oCascadeFile:ExploreFromHere := "c:\"
		oCascadeFile:ColumnsVisible := 2/*exFileColumnName*/
		oCascadeFile:Mode := 1539/*exDisableThumbnails+exAutoFitOnResizeClient+exSplitFixCascadeMode*/
		oCascadeFile:SingleSel := .F.
		oCascadeFile:FullRowSelect := .T.
		oCascadeFile:ExpandFolders := .T.
		oCascadeFile:ShowContextMenu := "menu replace `Delete` with `Delete[dis]`"

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

PROCEDURE OnViewEndChanging(oCascadeFile,Operation)
	DevOut( "Operation" )
	DevOut( Transform(Operation,"") )
	DevOut( "ExecuteContextMenu" )
	DevOut( Transform(oCascadeFile:ExecuteContextMenu(),"") )
RETURN

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

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:ViewEndChanging := {|Operation| OnViewEndChanging(oCascadeFile,Operation)} /*Occurs once the user changed the view.*/

		oCascadeFile:ExploreFromHere := "c:\"
		oCascadeFile:ColumnsVisible := 2/*exFileColumnName*/
		oCascadeFile:Mode := 1539/*exDisableThumbnails+exAutoFitOnResizeClient+exSplitFixCascadeMode*/
		oCascadeFile:SingleSel := .F.
		oCascadeFile:FullRowSelect := .T.
		oCascadeFile:ExpandFolders := .T.
		oCascadeFile:ShowContextMenu := "menu replace `&Delete` with ``"

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

PROCEDURE OnViewEndChanging(oCascadeFile,Operation)
	DevOut( "Operation" )
	DevOut( Transform(Operation,"") )
	DevOut( "ExecuteContextMenu" )
	DevOut( Transform(oCascadeFile:ExecuteContextMenu(),"") )
RETURN

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

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:ViewEndChanging := {|Operation| OnViewEndChanging(oCascadeFile,Operation)} /*Occurs once the user changed the view.*/

		oCascadeFile:ColumnsVisible := 2/*exFileColumnName*/
		oCascadeFile:Mode := 1539/*exDisableThumbnails+exAutoFitOnResizeClient+exSplitFixCascadeMode*/
		oCascadeFile:SingleSel := .F.
		oCascadeFile:FullRowSelect := .T.
		oCascadeFile:ShowContextMenu := "`Popup(Item 1[id=1001],Item 2[id=1002],Item 3[id=1003]),` + menu + `,Exit[id=1000]`"

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

PROCEDURE OnViewEndChanging(oCascadeFile,Operation)
	DevOut( "Operation" )
	DevOut( Transform(Operation,"") )
	DevOut( "ExecuteContextMenu" )
	DevOut( Transform(oCascadeFile:ExecuteContextMenu(),"") )
RETURN

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

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:ViewEndChanging := {|Operation| OnViewEndChanging(oCascadeFile,Operation)} /*Occurs once the user changed the view.*/

		oCascadeFile:ColumnsVisible := 2/*exFileColumnName*/
		oCascadeFile:Mode := 1539/*exDisableThumbnails+exAutoFitOnResizeClient+exSplitFixCascadeMode*/
		oCascadeFile:SingleSel := .F.
		oCascadeFile:FullRowSelect := .T.
		oCascadeFile:ShowContextMenu := "filecount = 0 ? `Popup(Item 1[id=1001],Item 2[id=1002],Item 3[id=1003]),[sep],Exit[def][id=1000]` : menu"

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

PROCEDURE OnViewEndChanging(oCascadeFile,Operation)
	DevOut( "Operation" )
	DevOut( Transform(Operation,"") )
	DevOut( "ExecuteContextMenu" )
	DevOut( Transform(oCascadeFile:ExecuteContextMenu(),"") )
RETURN

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

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:ViewEndChanging := {|Operation| OnViewEndChanging(oCascadeFile,Operation)} /*Occurs once the user changed the view.*/

		oCascadeFile:ColumnsVisible := 2/*exFileColumnName*/
		oCascadeFile:Mode := 1539/*exDisableThumbnails+exAutoFitOnResizeClient+exSplitFixCascadeMode*/
		oCascadeFile:FullRowSelect := .T.
		oCascadeFile:ShowContextMenu := "Popup(Item 1[id=1001],Item 2[id=1002],Item 3[id=1003]),[sep],Exit[def][id=1000]"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
77
ShowContextMenu usage
PROCEDURE OnViewEndChanging(oCascadeFile,Operation)
	DevOut( "Operation" )
	DevOut( Transform(Operation,"") )
	DevOut( "ExecuteContextMenu" )
	DevOut( Transform(oCascadeFile:ExecuteContextMenu(),"") )
	DevOut( "no context menu is generated, so nothing is displayed" )
RETURN

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

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:ViewEndChanging := {|Operation| OnViewEndChanging(oCascadeFile,Operation)} /*Occurs once the user changed the view.*/

		oCascadeFile:ColumnsVisible := 2/*exFileColumnName*/
		oCascadeFile:Mode := 1539/*exDisableThumbnails+exAutoFitOnResizeClient+exSplitFixCascadeMode*/
		oCascadeFile:FullRowSelect := .T.
		oCascadeFile:ShowContextMenu := "``"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
76
How can I add new items to the default file's context menu

PROCEDURE OnViewEndChanging(oCascadeFile,Operation)
	DevOut( "Operation" )
	DevOut( Transform(Operation,"") )
	DevOut( "ContextMenu" )
	DevOut( oCascadeFile:ShowContextMenu() )
	oCascadeFile:ShowContextMenu := Transform(oCascadeFile:FormatABC("B = 20 ? ( `My First Popup[def](A,B,C),[sep],`+ value + `,[sep],My Last Popup[def](A,B,C)` ) : value",oCascadeFile:ShowContextMenu(),Operation),"")
	DevOut( "Execute" )
	DevOut( Transform(oCascadeFile:ExecuteContextMenu(),"") )
RETURN

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

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:ViewEndChanging := {|Operation| OnViewEndChanging(oCascadeFile,Operation)} /*Occurs once the user changed the view.*/

		oCascadeFile:ColumnsVisible := 2/*exFileColumnName*/
		oCascadeFile:Mode := 1539/*exDisableThumbnails+exAutoFitOnResizeClient+exSplitFixCascadeMode*/

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

PROCEDURE OnViewEndChanging(oCascadeFile,Operation)
	DevOut( "Operation" )
	DevOut( Transform(Operation,"") )
	DevOut( "ContextMenu" )
	DevOut( oCascadeFile:ShowContextMenu() )
	oCascadeFile:ShowContextMenu := Transform(oCascadeFile:FormatABC("B = 20 ? (`[debug]`+ value) : value ",oCascadeFile:ShowContextMenu(),Operation),"")
RETURN

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

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:ViewEndChanging := {|Operation| OnViewEndChanging(oCascadeFile,Operation)} /*Occurs once the user changed the view.*/

		oCascadeFile:ColumnsVisible := 2/*exFileColumnName*/
		oCascadeFile:Mode := 1539/*exDisableThumbnails+exAutoFitOnResizeClient+exSplitFixCascadeMode*/

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
74
How can I remove the Delete command from the file's context menu

PROCEDURE OnViewEndChanging(oCascadeFile,Operation)
	DevOut( "Operation" )
	DevOut( Transform(Operation,"") )
	DevOut( "ContextMenu" )
	DevOut( oCascadeFile:ShowContextMenu() )
	oCascadeFile:ShowContextMenu := Transform(oCascadeFile:FormatABC("value replace `&Delete` with ``",oCascadeFile:ShowContextMenu()),"")
RETURN

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

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:ViewEndChanging := {|Operation| OnViewEndChanging(oCascadeFile,Operation)} /*Occurs once the user changed the view.*/

		oCascadeFile:ColumnsVisible := 2/*exFileColumnName*/
		oCascadeFile:Mode := 1539/*exDisableThumbnails+exAutoFitOnResizeClient+exSplitFixCascadeMode*/

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

PROCEDURE OnViewEndChanging(oCascadeFile,Operation)
	DevOut( "Operation" )
	DevOut( Transform(Operation,"") )
	DevOut( "ContextMenu" )
	DevOut( oCascadeFile:ShowContextMenu() )
	oCascadeFile:ShowContextMenu := "Item 1[id=1][def],Item 2[id=2],[sep][id=3],Popup[id=4](Item 3[id=5],Item 4[id=6])"
	DevOut( "ExecuteContextMenu" )
	DevOut( Transform(oCascadeFile:ExecuteContextMenu(),"") )
RETURN

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

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:ViewEndChanging := {|Operation| OnViewEndChanging(oCascadeFile,Operation)} /*Occurs once the user changed the view.*/

		oCascadeFile:ColumnsVisible := 2/*exFileColumnName*/
		oCascadeFile:Mode := 1539/*exDisableThumbnails+exAutoFitOnResizeClient+exSplitFixCascadeMode*/

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
72
Is it possible to prevent executing a specific command from the object's context menu
PROCEDURE OnViewEndChanging(oCascadeFile,Operation)
	DevOut( "Operation" )
	DevOut( Transform(Operation,"") )
	DevOut( "ContextMenu" )
	DevOut( oCascadeFile:ShowContextMenu() )
	DevOut( "ExecuteContextMenu" )
	DevOut( Transform(oCascadeFile:ExecuteContextMenu(),"") )
	oCascadeFile:ExecuteContextMenu := 0
RETURN

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

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:ViewEndChanging := {|Operation| OnViewEndChanging(oCascadeFile,Operation)} /*Occurs once the user changed the view.*/

		oCascadeFile:ColumnsVisible := 2/*exFileColumnName*/
		oCascadeFile:Mode := 1539/*exDisableThumbnails+exAutoFitOnResizeClient+exSplitFixCascadeMode*/

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
71
How can I disable the Delete command from the object's context menu

PROCEDURE OnViewEndChanging(oCascadeFile,Operation)
	DevOut( "Operation" )
	DevOut( Transform(Operation,"") )
	DevOut( "ContextMenu" )
	DevOut( oCascadeFile:ShowContextMenu() )
	oCascadeFile:ShowContextMenu := Transform(oCascadeFile:FormatABC("value replace `&Delete` with `&Delete[dis]`",oCascadeFile:ShowContextMenu()),"")
RETURN

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

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:ViewEndChanging := {|Operation| OnViewEndChanging(oCascadeFile,Operation)} /*Occurs once the user changed the view.*/

		oCascadeFile:ColumnsVisible := 2/*exFileColumnName*/
		oCascadeFile:Mode := 1539/*exDisableThumbnails+exAutoFitOnResizeClient+exSplitFixCascadeMode*/

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
70
How can I turn off, disable the control's context menu
#include "AppEvent.ch"
#include "ActiveX.ch"

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:AllowContextMenu := .F.
		oCascadeFile:ColumnsVisible := 2/*exFileColumnName*/

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
69
How can I decode the Layout property

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oCascadeFile
	LOCAL oPrint
	LOCAL sLayout

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:AllowSplitView := 2/*exAllowTwoSplitView*/
		oCascadeFile:Select := "C:\"
		oCascadeFile:SplitViewHeight := "256,256"
		sLayout := oCascadeFile:Layout()
		DevOut( "Encoded:" )
		DevOut( Transform(sLayout,"") )
		oPrint := CreateObject("Exontrol.Print")
			DevOut( "Decoded: " )
			DevOut( oPrint:Decode64TextW(Transform(sLayout,"")) )

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
68
Is there any property I could use, so I can save the control's state, so I can restore once my application is re-started
#include "AppEvent.ch"
#include "ActiveX.ch"

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		sLayout := oCascadeFile:Layout()
		DevOut( "Save" )
		DevOut( Transform(sLayout,"") )
		oCascadeFile:Select := "C:\"
		oCascadeFile:Layout := Transform(sLayout,"")

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
67
Turn on the backcolor alternate feature

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

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:BeginUpdate()
		oCascadeFile:SetProperty("BackColorAlternate",AutomationTranslateColor( GraMakeRGBColor  ( { 240,240,240 } )  , .F. ))
		oCascadeFile:SetProperty("ForeColorAlternate",AutomationTranslateColor( GraMakeRGBColor  ( { 40,40,40 } )  , .F. ))
		oCascadeFile:Select := "C:\Windows\System32"
		oCascadeFile:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
66
Display HTML in the control's status bar

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

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:BeginUpdate()
		oCascadeFile:StatusBarVisible := 2/*exStatusBarAnchorTop*/
		oCascadeFile:Select := "C:\Windows\System32"
		oCascadeFile:FitCascadeColumns := 3
		oCascadeFile:StatusBarLabel := "Current: <b><%0%>"
		oCascadeFile:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
65
Display relative name into the control's status bar

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

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:BeginUpdate()
		oCascadeFile:ExploreFromHere := "C:\"
		oCascadeFile:StatusBarVisible := 2/*exStatusBarAnchorTop*/
		oCascadeFile:Select := "C:\Windows"
		oCascadeFile:FitCascadeColumns := 3
		oCascadeFile:StatusBarLabel := "<%3%>"
		oCascadeFile:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
64
Display parsed name into the control's status bar

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

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:BeginUpdate()
		oCascadeFile:StatusBarVisible := 2/*exStatusBarAnchorTop*/
		oCascadeFile:Select := "C:\Windows"
		oCascadeFile:FitCascadeColumns := 3
		oCascadeFile:StatusBarLabel := "<%2%> >"
		oCascadeFile:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
63
Display name into the control's status bar (default)

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

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:BeginUpdate()
		oCascadeFile:StatusBarVisible := 2/*exStatusBarAnchorTop*/
		oCascadeFile:Select := "C:\Windows"
		oCascadeFile:FitCascadeColumns := 3
		oCascadeFile:StatusBarLabel := "<%1%> >"
		oCascadeFile:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
62
Display full path into the control's status bar

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

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:BeginUpdate()
		oCascadeFile:StatusBarVisible := 2/*exStatusBarAnchorTop*/
		oCascadeFile:Select := "C:\Windows"
		oCascadeFile:FitCascadeColumns := 3
		oCascadeFile:StatusBarLabel := "<%0%>"
		oCascadeFile:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
61
Removes the extra > shown at the end of the status label

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

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:BeginUpdate()
		oCascadeFile:StatusBarVisible := 2/*exStatusBarAnchorTop*/
		oCascadeFile:Select := "C:\Windows"
		oCascadeFile:FitCascadeColumns := 3
		oCascadeFile:SetProperty("Background",174/*exStatusPanelBackColor*/,AutomationTranslateColor( GraMakeRGBColor  ( { 0,0,1 } )  , .F. ))
		oCascadeFile:SetProperty("Background",169/*exStatusForeColor*/,AutomationTranslateColor( GraMakeRGBColor  ( { 255,255,255 } )  , .F. ))
		oCascadeFile:StatusBarLabel := "<%1%>"
		oCascadeFile:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
60
Just wondering if I can show the status on the bottom side of the control

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

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:BeginUpdate()
		oCascadeFile:Select := "C:\Windows"
		oCascadeFile:FitCascadeColumns := 3
		oCascadeFile:StatusBarVisible := 1/*exStatusBarAnchorBottom*/
		oCascadeFile:EndUpdate()

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

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:BeginUpdate()
		oCascadeFile:StatusBarVisible := 0/*exStatusBarNone*/
		oCascadeFile:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
58
I've noticed that if I use a second view, the selected path in the first view, ensures that fits the control's client are as soon as the user resizes the panels. Is it possible to prevent that
#include "AppEvent.ch"
#include "ActiveX.ch"

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:BeginUpdate()
		oCascadeFile:Mode := 3/*exSplitFixCascadeMode*/
		oCascadeFile:FitCascadeColumns := 3
		oCascadeFile:AllowSplitView := 2/*exAllowTwoSplitView*/
		oCascadeFile:ColumnsVisible := 2/*exFileColumnName*/
		oCascadeFile:HeaderVisible := .F.
		oCascadeFile:Select := "c:\Windows\System32"
		oCascadeFile:SplitViewHeight := "256"
		oCascadeFile:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
57
I've noticed the control splits the control in 4 parts, and displays each view, the question I have is it possible to have that changed, for instance 3 ( sample 2 )
#include "AppEvent.ch"
#include "ActiveX.ch"

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:BeginUpdate()
		oCascadeFile:ColumnsVisible := 2/*exFileColumnName*/
		oCascadeFile:HeaderVisible := .F.
		oCascadeFile:Select := "c:\Windows\System32"
		oCascadeFile:FitToClient(3)
		oCascadeFile:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
56
I've noticed the control splits the control in 4 parts, and displays each view, the question I have is it possible to have that changed, for instance 3 ( sample 1 )
#include "AppEvent.ch"
#include "ActiveX.ch"

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:BeginUpdate()
		oCascadeFile:ColumnsVisible := 2/*exFileColumnName*/
		oCascadeFile:HeaderVisible := .F.
		oCascadeFile:Select := "c:\Windows\System32"
		oCascadeFile:FitToClient(3)
		oCascadeFile:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
55
I am trying to use your control as a file-view, but without any generated thumbnail. Is this possible

PROCEDURE OnViewEndChanging(oCascadeFile,Operation)
	DevOut( "ViewEndChanging: " )
	DevOut( Transform(Operation,"") )
	DevOut( oCascadeFile:Select() )
RETURN

PROCEDURE OnViewStartChanging(oCascadeFile,Operation)
	DevOut( "ViewStartChanging: " )
	DevOut( Transform(Operation,"") )
RETURN

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

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:ViewEndChanging := {|Operation| OnViewEndChanging(oCascadeFile,Operation)} /*Occurs once the user changed the view.*/
		oCascadeFile:ViewStartChanging := {|Operation| OnViewStartChanging(oCascadeFile,Operation)} /*Occurs once the user is about to change the view.*/

		oCascadeFile:BeginUpdate()
		oCascadeFile:Mode := 1027/*exDisableThumbnails+exSplitFixCascadeMode*/
		oCascadeFile:Layout := "Select0 = " + CHR(34) + "c:\|d:\" + CHR(34) + ""
		oCascadeFile:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
54
How can I prevent resizing the cascade columns, once the user resizes the entire control
PROCEDURE OnViewEndChanging(oCascadeFile,Operation)
	DevOut( "ViewEndChanging: " )
	DevOut( Transform(Operation,"") )
	DevOut( oCascadeFile:Select() )
RETURN

PROCEDURE OnViewStartChanging(oCascadeFile,Operation)
	DevOut( "ViewStartChanging: " )
	DevOut( Transform(Operation,"") )
RETURN

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

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:ViewEndChanging := {|Operation| OnViewEndChanging(oCascadeFile,Operation)} /*Occurs once the user changed the view.*/
		oCascadeFile:ViewStartChanging := {|Operation| OnViewStartChanging(oCascadeFile,Operation)} /*Occurs once the user is about to change the view.*/

		oCascadeFile:BeginUpdate()
		oCascadeFile:FitToClient(3)
		oCascadeFile:Mode := 3/*exSplitFixCascadeMode*/
		oCascadeFile:Select := "c:\Windows"
		oCascadeFile:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
53
Is it possible to disable resizing the cascade columns

PROCEDURE OnViewEndChanging(oCascadeFile,Operation)
	DevOut( "ViewEndChanging: " )
	DevOut( Transform(Operation,"") )
	DevOut( oCascadeFile:Select() )
RETURN

PROCEDURE OnViewStartChanging(oCascadeFile,Operation)
	DevOut( "ViewStartChanging: " )
	DevOut( Transform(Operation,"") )
RETURN

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

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:ViewEndChanging := {|Operation| OnViewEndChanging(oCascadeFile,Operation)} /*Occurs once the user changed the view.*/
		oCascadeFile:ViewStartChanging := {|Operation| OnViewStartChanging(oCascadeFile,Operation)} /*Occurs once the user is about to change the view.*/

		oCascadeFile:BeginUpdate()
		oCascadeFile:FitToClient(3)
		oCascadeFile:Mode := 771/*exAutoFitOnResizeClient+exDisableResizeCascadeColumns+exSplitFixCascadeMode*/
		oCascadeFile:Select := "c:\Windows"
		oCascadeFile:EndUpdate()

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

PROCEDURE OnViewEndChanging(oCascadeFile,Operation)
	DevOut( "ViewEndChanging: " )
	DevOut( Transform(Operation,"") )
	DevOut( oCascadeFile:Select() )
RETURN

PROCEDURE OnViewStartChanging(oCascadeFile,Operation)
	DevOut( "ViewStartChanging: " )
	DevOut( Transform(Operation,"") )
RETURN

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

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:ViewEndChanging := {|Operation| OnViewEndChanging(oCascadeFile,Operation)} /*Occurs once the user changed the view.*/
		oCascadeFile:ViewStartChanging := {|Operation| OnViewStartChanging(oCascadeFile,Operation)} /*Occurs once the user is about to change the view.*/

		oCascadeFile:BeginUpdate()
		oCascadeFile:Mode := 3/*exSplitFixCascadeMode*/
		oCascadeFile:Select := "c:\"
		oCascadeFile:EndUpdate()

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

PROCEDURE OnViewEndChanging(oCascadeFile,Operation)
	DevOut( "ViewEndChanging: " )
	DevOut( Transform(Operation,"") )
	DevOut( oCascadeFile:Select() )
RETURN

PROCEDURE OnViewStartChanging(oCascadeFile,Operation)
	DevOut( "ViewStartChanging: " )
	DevOut( Transform(Operation,"") )
RETURN

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

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:ViewEndChanging := {|Operation| OnViewEndChanging(oCascadeFile,Operation)} /*Occurs once the user changed the view.*/
		oCascadeFile:ViewStartChanging := {|Operation| OnViewStartChanging(oCascadeFile,Operation)} /*Occurs once the user is about to change the view.*/

		oCascadeFile:BeginUpdate()
		oCascadeFile:HeaderVisible := .F.
		oCascadeFile:DefColumnWidth := 128
		oCascadeFile:Mode := 0/*exFixCascadeMode*/
		oCascadeFile:Select := "c:\Windows"
		oCascadeFile:EndUpdate()

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

PROCEDURE OnViewEndChanging(oCascadeFile,Operation)
	DevOut( "ViewEndChanging: " )
	DevOut( Transform(Operation,"") )
	DevOut( oCascadeFile:Select() )
RETURN

PROCEDURE OnViewStartChanging(oCascadeFile,Operation)
	DevOut( "ViewStartChanging: " )
	DevOut( Transform(Operation,"") )
RETURN

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

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:ViewEndChanging := {|Operation| OnViewEndChanging(oCascadeFile,Operation)} /*Occurs once the user changed the view.*/
		oCascadeFile:ViewStartChanging := {|Operation| OnViewStartChanging(oCascadeFile,Operation)} /*Occurs once the user is about to change the view.*/

		oCascadeFile:BeginUpdate()
		oCascadeFile:Mode := 2/*exSplitEqualCascadeMode*/
		oCascadeFile:Select := "c:\"
		oCascadeFile:EndUpdate()

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

PROCEDURE OnViewEndChanging(oCascadeFile,Operation)
	DevOut( "ViewEndChanging: " )
	DevOut( Transform(Operation,"") )
	DevOut( oCascadeFile:Select() )
RETURN

PROCEDURE OnViewStartChanging(oCascadeFile,Operation)
	DevOut( "ViewStartChanging: " )
	DevOut( Transform(Operation,"") )
RETURN

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

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:ViewEndChanging := {|Operation| OnViewEndChanging(oCascadeFile,Operation)} /*Occurs once the user changed the view.*/
		oCascadeFile:ViewStartChanging := {|Operation| OnViewStartChanging(oCascadeFile,Operation)} /*Occurs once the user is about to change the view.*/

		oCascadeFile:BeginUpdate()
		oCascadeFile:Select := "c:\Windows"
		oCascadeFile:FitToClient(3)
		oCascadeFile:EndUpdate()

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

PROCEDURE OnViewEndChanging(oCascadeFile,Operation)
	DevOut( "ViewEndChanging: " )
	DevOut( Transform(Operation,"") )
	DevOut( oCascadeFile:Select() )
RETURN

PROCEDURE OnViewStartChanging(oCascadeFile,Operation)
	DevOut( "ViewStartChanging: " )
	DevOut( Transform(Operation,"") )
RETURN

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

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:ViewEndChanging := {|Operation| OnViewEndChanging(oCascadeFile,Operation)} /*Occurs once the user changed the view.*/
		oCascadeFile:ViewStartChanging := {|Operation| OnViewStartChanging(oCascadeFile,Operation)} /*Occurs once the user is about to change the view.*/

		oCascadeFile:BeginUpdate()
		oCascadeFile:StatusBarVisible := 0/*exStatusBarNone*/
		oCascadeFile:Mode := 1/*exSingleCascadeMode*/
		oCascadeFile:Select := "c:\Windows"
		oCascadeFile:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
47
How to expand more folders, when single cascade mode is used

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

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:BeginUpdate()
		oCascadeFile:StatusBarVisible := 0/*exStatusBarNone*/
		oCascadeFile:Mode := 1/*exSingleCascadeMode*/
		oCascadeFile:Layout := "Expand0 = " + CHR(34) + "c:\|d:\|e:\" + CHR(34) + ";SelectMode0 = 0"
		oCascadeFile:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
46
Is it possible to programmatically selects more folders

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

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:BeginUpdate()
		oCascadeFile:Layout := "Select0 = " + CHR(34) + "c:\|d:\|e:\" + CHR(34) + ";SelectMode0 = 0"
		oCascadeFile:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
45
Is it possible to programmatically expand a folder (sample 4, select, expand more)

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

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:BeginUpdate()
		oCascadeFile:Layout := "Expand0 = " + CHR(34) + "c:\|d:\|e:\" + CHR(34) + ";SelectMode0 = 0"
		oCascadeFile:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
44
Is it possible to programmatically expand a folder (sample 3)

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

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:BeginUpdate()
		oCascadeFile:Layout := "Expand0 = " + CHR(34) + "c:\" + CHR(34) + ";SelectMode0 = 2"
		oCascadeFile:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
43
Is it possible to programmatically expand a folder (sample 2)

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

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

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

	oCascadeFile := XbpActiveXControl():new( oForm:drawingArea )
	oCascadeFile:CLSID  := "Exontrol.ExMiller.1" /*{A44EFDCD-D526-4E58-909D-193FD6519290}*/
	oCascadeFile:create(,, {10,60},{610,370} )

		oCascadeFile:BeginUpdate()
		oCascadeFile:Layout := "Expand0 = " + CHR(34) + "c:\" + CHR(34) + ";SelectMode0 = 1"
		oCascadeFile:EndUpdate()

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