125
Explorer control (browse for the folder being double-clicked)

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

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:BeginUpdate()
		oThumbnail:AcceptFolders := 2/*exIncludeAny*/
		oThumbnail:Mode := 32768/*exThumbnailBrowseOnDblClk*/
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample")
		oThumbnail:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
124
Can I display the size of the files, using 1 decimal, such as 10.2 KB instead of 10 KB

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

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:BeginUpdate()
		oThumbnail:AcceptFolders := -1/*exIncludeSubFilesOnly*/
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample")
		oThumbnail:Caption := "ffolder ? ( fname + ( len( 22:=(int(0:=(1:=fsize)/1024/1024/1024) ? round(=:0*10)/10 + ` GB` : (int(0:==:1/1024/1024) ? round(=:0*10)/10 + ` MB` : (int(0:==:1/1024) ? round(=:0*10)/10 + ` KB` : =:1 + ` B`))) ) ? `, ` + =:22 : `` ) ) : ffile"
		oThumbnail:ToolTipText := "ffolder ? ( `Name: <b>` + fname + `</b>` + `<br>` + ( len( 0:= ftype ) ? `Type: <b>` + =:0 + `</b>` + `<br>` : `` ) + ( ffolder = 1 ? `Size: <b>` + (int(0:=(1:=fsize)/1024/1024/1024) ? round(=:0*10)/10 + ` GB` : (int(0:==:1/1024/1024) ? round(=:0*10)/10 + ` MB` : (int(0:==:1/1024) ? round(=:0*10)/10 + ` KB` : =:1 + ` B`))) + `</b>` + `<br>` : `` ) + `Created: <b>` + fcreated_local + `</b>` + `<br>` + `Modified: <b>` + fmodified_local + `</b>`+ `<br>` + `Last Opened: <b>` + fopened_local + `</b>`+ (fpicture" +;
		" ? (`<br>Dimensions: <b>` + fwidth + ` x ` + fheight + `</b>` ) : ``) ) : ffile"
		oThumbnail:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
123
It appears that Created, Modified and Last Opened values are not correct (local)
#include "AppEvent.ch"
#include "ActiveX.ch"

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:BeginUpdate()
		oThumbnail:Padding := ""
		oThumbnail:Alignment := 33/*exAlignBottomCenter*/
		oThumbnail:InputFiles := "C:\Program Files\Exontrol\ExThumbnail\Sample\elogo.jpg"
		oThumbnail:Caption := "`Created: <b><r>` + fcreated_local + `</b>` + `<br>` + `Modified: <b><r>` + fmodified_local + `</b>`+ `<br>` + `Last Opened: <r><b>` + fopened_local + `</b>`"
		oThumbnail:SingleCaption := oThumbnail:Caption()
		oThumbnail:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
122
It appears that Created, Modified and Last Opened values are not correct (bias)
#include "AppEvent.ch"
#include "ActiveX.ch"

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:BeginUpdate()
		oThumbnail:Padding := ""
		oThumbnail:Alignment := 33/*exAlignBottomCenter*/
		oThumbnail:InputFiles := "C:\Program Files\Exontrol\ExThumbnail\Sample\elogo.jpg"
		oThumbnail:Caption := "`Created: <b><r>` + date(fcreated - bias/24/60) + `</b>` + `<br>` + `Modified: <b><r>` + date(fmodified - bias/24/60) + `</b>`+ `<br>` + `Last Opened: <r><b>` + date(fopened - bias/24/60) + `</b>`"
		oThumbnail:SingleCaption := oThumbnail:Caption()
		oThumbnail:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
121
How can I sort the thumbnails, case insensitive

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

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:BeginUpdate()
		oThumbnail:AcceptFolders := -1/*exIncludeSubFilesOnly*/
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample")
		oThumbnail:Sort := 514/*exThumbailSortInsensitive+exThumbailSortByName*/
		oThumbnail:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
120
How can I select programatically multiple files
PROCEDURE OnStateChange(oThumbnail,State)
	DevOut( Transform(State,"") )
	DevOut( oThumbnail:Select() )
RETURN

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

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:StateChange := {|State| OnStateChange(oThumbnail,State)} /*Fired while the control's state has been changed.*/

		oThumbnail:BeginUpdate()
		oThumbnail:AutoUpdate := .T.
		oThumbnail:AcceptFolders := -1/*exIncludeSubFilesOnly*/
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample")
		oThumbnail:SingleSel := .F.
		oThumbnail:Select := "Brazil.png\r\ncordova.png"
		oThumbnail:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
119
Does your control support multiple-selection

PROCEDURE OnStateChange(oThumbnail,State)
	DevOut( Transform(State,"") )
	DevOut( oThumbnail:Select() )
RETURN

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

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:StateChange := {|State| OnStateChange(oThumbnail,State)} /*Fired while the control's state has been changed.*/

		oThumbnail:BeginUpdate()
		oThumbnail:AutoUpdate := .T.
		oThumbnail:AcceptFolders := -1/*exIncludeSubFilesOnly*/
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample")
		oThumbnail:SingleSel := .F.
		oThumbnail:Select := "Brazil.png\r\ncordova.png"
		oThumbnail:EndUpdate()

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:BeginUpdate()
		oThumbnail:AcceptFolders := 2/*exIncludeAny*/
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample")
		oThumbnail:SetProperty("Background",179/*exThumbnailSelBorderColorHide*/,AutomationTranslateColor( GraMakeRGBColor  ( { 0,0,1 } )  , .F. ))
		oThumbnail:Select := "Access2007"
		oThumbnail:EndUpdate()

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

PROCEDURE OnStateChange(oThumbnail,State)
	oThumbnail:ExecuteContextMenu := 0
RETURN

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

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:StateChange := {|State| OnStateChange(oThumbnail,State)} /*Fired while the control's state has been changed.*/

		oThumbnail:BeginUpdate()
		oThumbnail:AutoUpdate := .T.
		oThumbnail:AcceptFolders := -1/*exIncludeSubFilesOnly*/
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample")
		oThumbnail:ShowContextMenu := "`menu(` + menu + `)` + `,filecount=` + filecount + `,fileattr=` + hex(fileattr) + `,filename=` + filename + `,fileparsename=` + fileparsename + `,filefullname=` + filefullname"
		oThumbnail:EndUpdate()

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

PROCEDURE OnStateChange(oThumbnail,State)
	DevOut( "State" )
	DevOut( Transform(State,"") )
	DevOut( "ExecuteContextMenu" )
	DevOut( Transform(oThumbnail:ExecuteContextMenu(),"") )
RETURN

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

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:StateChange := {|State| OnStateChange(oThumbnail,State)} /*Fired while the control's state has been changed.*/

		oThumbnail:BeginUpdate()
		oThumbnail:AutoUpdate := .T.
		oThumbnail:AcceptFolders := -1/*exIncludeSubFilesOnly*/
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample")
		oThumbnail:ShowContextMenu := "`[debug]` + menu"
		oThumbnail:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
115
How can I copy/execute command a file/folder as path (selection)

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

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:BeginUpdate()
		oThumbnail:AutoUpdate := .T.
		oThumbnail:AcceptFolders := -1/*exIncludeSubFilesOnly*/
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample")
		oThumbnail:Select := "Brazil.png"
		oThumbnail:ExecuteContextCommand("<selection>",.T.,"Copy As Path")
		oThumbnail:EndUpdate()

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

PROCEDURE OnStateChange(oThumbnail,State)
	DevOut( "State " )
	DevOut( Transform(State,"") )
	DevOut( "ContextMenu" )
	DevOut( oThumbnail:ShowContextMenu() )
	oThumbnail:ShowContextMenu := Transform(oThumbnail:FormatABC("B = 20 ? (`[debug]`+ value) : value ",oThumbnail:ShowContextMenu(),State),"")
RETURN

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

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:StateChange := {|State| OnStateChange(oThumbnail,State)} /*Fired while the control's state has been changed.*/

		oThumbnail:BeginUpdate()
		oThumbnail:AutoUpdate := .T.
		oThumbnail:AcceptFolders := -1/*exIncludeSubFilesOnly*/
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample")
		oThumbnail:EndUpdate()

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:BeginUpdate()
		oThumbnail:AutoUpdate := .T.
		oThumbnail:AcceptFolders := -1/*exIncludeSubFilesOnly*/
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample")
		oThumbnail:Select := "Brazil.png"
		oThumbnail:ExecuteContextCommand("<selection>",.T.,"Copy")
		oThumbnail:EndUpdate()

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:BeginUpdate()
		oThumbnail:AutoUpdate := .T.
		oThumbnail:AcceptFolders := -1/*exIncludeSubFilesOnly*/
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample")
		oThumbnail:ExecuteContextCommand("c:\Temp",.T.,"Copy")
		oThumbnail:EndUpdate()

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:BeginUpdate()
		oThumbnail:AutoUpdate := .T.
		oThumbnail:AcceptFolders := -1/*exIncludeSubFilesOnly*/
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample")
		oThumbnail:ExecuteContextCommand("Belgium.png",.T.,"Copy")
		oThumbnail:EndUpdate()

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

PROCEDURE OnStateChange(oThumbnail,State)
	DevOut( "State" )
	DevOut( Transform(State,"") )
	DevOut( "ExecuteContextMenu" )
	DevOut( Transform(oThumbnail:ExecuteContextMenu(),"") )
RETURN

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

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:StateChange := {|State| OnStateChange(oThumbnail,State)} /*Fired while the control's state has been changed.*/

		oThumbnail:BeginUpdate()
		oThumbnail:AutoUpdate := .T.
		oThumbnail:AcceptFolders := -1/*exIncludeSubFilesOnly*/
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample")
		oThumbnail:ShowContextMenu := "filecount = 0 ? `Exit[id=1000]` : ( ( ( filecount = 1 ) ? filename : `multiple selection` ) + `[dis],[sep],` + menu)"
		oThumbnail:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
109
ShowContextMenu usage
PROCEDURE OnStateChange(oThumbnail,State)
	DevOut( "State" )
	DevOut( Transform(State,"") )
	DevOut( "ExecuteContextMenu" )
	DevOut( Transform(oThumbnail:ExecuteContextMenu(),"") )
RETURN

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

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:StateChange := {|State| OnStateChange(oThumbnail,State)} /*Fired while the control's state has been changed.*/

		oThumbnail:BeginUpdate()
		oThumbnail:AutoUpdate := .T.
		oThumbnail:AcceptFolders := -1/*exIncludeSubFilesOnly*/
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample")
		oThumbnail:ShowContextMenu := "filecount > 1 ? `multiple selection[dis]` : menu"
		oThumbnail:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
108
ShowContextMenu usage
PROCEDURE OnStateChange(oThumbnail,State)
	DevOut( "State" )
	DevOut( Transform(State,"") )
	DevOut( "ExecuteContextMenu" )
	DevOut( Transform(oThumbnail:ExecuteContextMenu(),"") )
RETURN

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

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:StateChange := {|State| OnStateChange(oThumbnail,State)} /*Fired while the control's state has been changed.*/

		oThumbnail:BeginUpdate()
		oThumbnail:AutoUpdate := .T.
		oThumbnail:AcceptFolders := -1/*exIncludeSubFilesOnly*/
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample")
		oThumbnail:ShowContextMenu := "filecount > 1 ? `multiple selection[dis]` : menu"
		oThumbnail:EndUpdate()

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

PROCEDURE OnStateChange(oThumbnail,State)
	DevOut( "State" )
	DevOut( Transform(State,"") )
	DevOut( "ExecuteContextMenu" )
	DevOut( Transform(oThumbnail:ExecuteContextMenu(),"") )
RETURN

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

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:StateChange := {|State| OnStateChange(oThumbnail,State)} /*Fired while the control's state has been changed.*/

		oThumbnail:BeginUpdate()
		oThumbnail:AutoUpdate := .T.
		oThumbnail:AcceptFolders := -1/*exIncludeSubFilesOnly*/
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample")
		oThumbnail:ShowContextMenu := "menu replace `&Delete` with ``"
		oThumbnail:EndUpdate()

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

PROCEDURE OnStateChange(oThumbnail,State)
	DevOut( "State" )
	DevOut( Transform(State,"") )
	DevOut( "ExecuteContextMenu" )
	DevOut( Transform(oThumbnail:ExecuteContextMenu(),"") )
RETURN

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

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:StateChange := {|State| OnStateChange(oThumbnail,State)} /*Fired while the control's state has been changed.*/

		oThumbnail:BeginUpdate()
		oThumbnail:AutoUpdate := .T.
		oThumbnail:AcceptFolders := -1/*exIncludeSubFilesOnly*/
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample")
		oThumbnail:ShowContextMenu := "`Popup(Item 1[id=1001],Item 2[id=1002],Item 3[id=1003]),` + menu + `,Exit[id=1000]`"
		oThumbnail:EndUpdate()

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

PROCEDURE OnStateChange(oThumbnail,State)
	DevOut( "State" )
	DevOut( Transform(State,"") )
	DevOut( "ExecuteContextMenu" )
	DevOut( Transform(oThumbnail:ExecuteContextMenu(),"") )
RETURN

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

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:StateChange := {|State| OnStateChange(oThumbnail,State)} /*Fired while the control's state has been changed.*/

		oThumbnail:BeginUpdate()
		oThumbnail:AutoUpdate := .T.
		oThumbnail:AcceptFolders := -1/*exIncludeSubFilesOnly*/
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample")
		oThumbnail:ShowContextMenu := "filecount = 0 ? `Popup(Item 1[id=1001],Item 2[id=1002],Item 3[id=1003]),[sep],Exit[def][id=1000]` : menu"
		oThumbnail:EndUpdate()

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

PROCEDURE OnStateChange(oThumbnail,State)
	DevOut( "State" )
	DevOut( Transform(State,"") )
	DevOut( "ExecuteContextMenu" )
	DevOut( Transform(oThumbnail:ExecuteContextMenu(),"") )
RETURN

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

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:StateChange := {|State| OnStateChange(oThumbnail,State)} /*Fired while the control's state has been changed.*/

		oThumbnail:BeginUpdate()
		oThumbnail:AutoUpdate := .T.
		oThumbnail:AcceptFolders := -1/*exIncludeSubFilesOnly*/
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample")
		oThumbnail:ShowContextMenu := "Popup(Item 1[id=1001],Item 2[id=1002],Item 3[id=1003]),[sep],Exit[def][id=1000]"
		oThumbnail:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
103
ShowContextMenu usage
PROCEDURE OnStateChange(oThumbnail,State)
	DevOut( "State" )
	DevOut( Transform(State,"") )
	DevOut( "ExecuteContextMenu" )
	DevOut( Transform(oThumbnail: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 oThumbnail

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:StateChange := {|State| OnStateChange(oThumbnail,State)} /*Fired while the control's state has been changed.*/

		oThumbnail:BeginUpdate()
		oThumbnail:AutoUpdate := .T.
		oThumbnail:AcceptFolders := -1/*exIncludeSubFilesOnly*/
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample")
		oThumbnail:ShowContextMenu := "``"
		oThumbnail:EndUpdate()

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

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

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

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:StateChange := {|State| OnStateChange(oThumbnail,State)} /*Fired while the control's state has been changed.*/

		oThumbnail:BeginUpdate()
		oThumbnail:AutoUpdate := .T.
		oThumbnail:AcceptFolders := -1/*exIncludeSubFilesOnly*/
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample")
		oThumbnail:EndUpdate()

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

PROCEDURE OnStateChange(oThumbnail,State)
	DevOut( "State " )
	DevOut( Transform(State,"") )
	DevOut( "ContextMenu" )
	DevOut( oThumbnail:ShowContextMenu() )
RETURN

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

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:StateChange := {|State| OnStateChange(oThumbnail,State)} /*Fired while the control's state has been changed.*/

		oThumbnail:BeginUpdate()
		oThumbnail:AutoUpdate := .T.
		oThumbnail:AcceptFolders := -1/*exIncludeSubFilesOnly*/
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample")
		oThumbnail:ShowContextMenu := "menu replace `Delete` with `Delete[dis]`"
		oThumbnail:EndUpdate()

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

PROCEDURE OnStateChange(oThumbnail,State)
	DevOut( "State " )
	DevOut( Transform(State,"") )
	DevOut( "ContextMenu" )
	DevOut( oThumbnail:ShowContextMenu() )
RETURN

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

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:StateChange := {|State| OnStateChange(oThumbnail,State)} /*Fired while the control's state has been changed.*/

		oThumbnail:BeginUpdate()
		oThumbnail:AutoUpdate := .T.
		oThumbnail:AcceptFolders := -1/*exIncludeSubFilesOnly*/
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample")
		oThumbnail:ShowContextMenu := "menu replace `&Delete` with ``"
		oThumbnail:EndUpdate()

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

PROCEDURE OnStateChange(oThumbnail,State)
	DevOut( "State " )
	DevOut( Transform(State,"") )
	DevOut( "ContextMenu" )
	DevOut( oThumbnail:ShowContextMenu() )
	oThumbnail: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(oThumbnail:ExecuteContextMenu(),"") )
RETURN

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

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:StateChange := {|State| OnStateChange(oThumbnail,State)} /*Fired while the control's state has been changed.*/

		oThumbnail:BeginUpdate()
		oThumbnail:AutoUpdate := .T.
		oThumbnail:AcceptFolders := -1/*exIncludeSubFilesOnly*/
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample")
		oThumbnail:EndUpdate()

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

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

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:StateChange := {|State| OnStateChange(oThumbnail,State)} /*Fired while the control's state has been changed.*/

		oThumbnail:BeginUpdate()
		oThumbnail:AutoUpdate := .T.
		oThumbnail:AcceptFolders := -1/*exIncludeSubFilesOnly*/
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample")
		oThumbnail:EndUpdate()

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

PROCEDURE OnStateChange(oThumbnail,State)
	DevOut( "State " )
	DevOut( Transform(State,"") )
	DevOut( "ContextMenu" )
	DevOut( oThumbnail:ShowContextMenu() )
	oThumbnail:ShowContextMenu := Transform(oThumbnail:FormatABC("value replace `&Delete` with `&Delete[dis]`",oThumbnail:ShowContextMenu()),"")
RETURN

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

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:StateChange := {|State| OnStateChange(oThumbnail,State)} /*Fired while the control's state has been changed.*/

		oThumbnail:BeginUpdate()
		oThumbnail:AutoUpdate := .T.
		oThumbnail:AcceptFolders := -1/*exIncludeSubFilesOnly*/
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample")
		oThumbnail:EndUpdate()

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

PROCEDURE OnStateChange(oThumbnail,State)
	DevOut( Transform(State,"") )
RETURN

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

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:StateChange := {|State| OnStateChange(oThumbnail,State)} /*Fired while the control's state has been changed.*/

		oThumbnail:BeginUpdate()
		oThumbnail:AcceptFolders := 2/*exIncludeAny*/
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample")
		oThumbnail:SetProperty("Background",178/*exThumbnailSelBorderColor*/,AutomationTranslateColor( GraMakeRGBColor  ( { 255,0,0 } )  , .F. ))
		oThumbnail:SetProperty("Background",179/*exThumbnailSelBorderColorHide*/,oThumbnail:Background(178/*exThumbnailSelBorderColor*/))
		oThumbnail:Select := "Access2007"
		oThumbnail:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
95
How can I programmatically unselect the file
PROCEDURE OnStateChange(oThumbnail,State)
	DevOut( Transform(State,"") )
RETURN

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

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:StateChange := {|State| OnStateChange(oThumbnail,State)} /*Fired while the control's state has been changed.*/

		oThumbnail:BeginUpdate()
		oThumbnail:AcceptFolders := 2/*exIncludeAny*/
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample")
		oThumbnail:SetProperty("Background",178/*exThumbnailSelBorderColor*/,AutomationTranslateColor( GraMakeRGBColor  ( { 255,0,0 } )  , .F. ))
		oThumbnail:SetProperty("Background",179/*exThumbnailSelBorderColorHide*/,oThumbnail:Background(178/*exThumbnailSelBorderColor*/))
		oThumbnail:Select := ""
		oThumbnail:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
94
How can I change the color to show the selected frame

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

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:BeginUpdate()
		oThumbnail:AcceptFolders := 2/*exIncludeAny*/
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample")
		oThumbnail:SetProperty("Background",178/*exThumbnailSelBorderColor*/,AutomationTranslateColor( GraMakeRGBColor  ( { 255,0,0 } )  , .F. ))
		oThumbnail:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
93
How can I remove the frame being selected when the control loses the focus (hidesel)
#include "AppEvent.ch"
#include "ActiveX.ch"

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:BeginUpdate()
		oThumbnail:AcceptFolders := 2/*exIncludeAny*/
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample")
		oThumbnail:SetProperty("Background",179/*exThumbnailSelBorderColorHide*/,-1)
		oThumbnail:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
92
When I drop a folder, can I include all its content, files and sub-folders

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

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:BeginUpdate()
		oThumbnail:AcceptFolders := 2/*exIncludeAny*/
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample")
		oThumbnail:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
91
When I drop a folder, can I include sub-folders only

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

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:BeginUpdate()
		oThumbnail:AcceptFolders := 1/*exIncludeSubFoldersOnly*/
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample")
		oThumbnail:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
90
I've noticed that if I drop a single file I get a different caption. How can I change that (sample 2)

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

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:BeginUpdate()
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample\Brazil.png")
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample\Romania.png")
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample\USA.png")
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample\Venezuela.png")
		oThumbnail:Caption := "`<sha ;;0><fgcolor=808080>` + upper(fname replace `.` + fext with ``)"
		oThumbnail:SingleCaption := ""
		oThumbnail:FilterBarPromptPattern := "USA"
		oThumbnail:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
89
I've noticed that if I drop a single file I get a different caption. How can I change that (sample 1)

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

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:InputFile := "C:\Program Files\Exontrol\ExThumbnail\Sample\elogo.jpg"
		oThumbnail:SingleCaption := oThumbnail:Caption()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
88
Can I somehow show the close button of the control's filter bar to the right, only if required

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

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:BeginUpdate()
		oThumbnail:FilterBarVisible := 1537/*exFilterBarShowCloseOnRight+exFilterBarShowCloseIfRequired+exFilterBarVisible*/
		oThumbnail:AcceptFolders := -1/*exIncludeSubFilesOnly*/
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample")
		oThumbnail:SetProperty("FilterBarBackColor",AutomationTranslateColor( GraMakeRGBColor  ( { 0,0,0 } )  , .F. ))
		oThumbnail:SetProperty("FilterBarForeColor",AutomationTranslateColor( GraMakeRGBColor  ( { 255,255,255 } )  , .F. ))
		oThumbnail:FilterBarPromptPattern := "elogo"
		oThumbnail:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
87
I have a filter being applied, the question is how can I display the number/count of results (sample 3)

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

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:BeginUpdate()
		oThumbnail:AcceptFolders := -1/*exIncludeSubFilesOnly*/
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample")
		oThumbnail:FilterBarPromptPattern := "el"
		oThumbnail:StatusCaption := "(len(ffilter) = 0) ? `` : ( `<fgcolor=808080>` + ( fvcount ? ( fvcount format `0` ) + ` result(s).` : `No results.` ) )"
		oThumbnail:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
86
Just icons are shown when droping the file into the control. What can I check

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

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:BeginUpdate()
		oThumbnail:ThumbnailType := 255/*exThumbnailAvail*/
		oThumbnail:ExtractMethod := "ThumbnailCache,ThumbnailProvider,ExtractImage"
		oThumbnail:AcceptFolders := -1/*exIncludeSubFilesOnly*/
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample")
		oThumbnail:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
85
How can I turn on the auto-update, so the thumbnails updates automatically once the user changes the files
#include "AppEvent.ch"
#include "ActiveX.ch"

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:BeginUpdate()
		oThumbnail:AutoUpdate := .T.
		oThumbnail:AllowContextMenu := .T.
		oThumbnail:AcceptFolders := -1/*exIncludeSubFilesOnly*/
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample")
		oThumbnail:StatusCaption := "<c><font ;10><sha ;;0>Open the Windows Explorer, and delete or edit any of these files."
		oThumbnail:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
84
I am using the control's default context menu to delete the file, and the file still shows in the control with no thumbnail. What can I do so it won't be shown
#include "AppEvent.ch"
#include "ActiveX.ch"

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:BeginUpdate()
		oThumbnail:AutoUpdate := .T.
		oThumbnail:AllowContextMenu := .T.
		oThumbnail:AcceptFolders := -1/*exIncludeSubFilesOnly*/
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample")
		oThumbnail:StatusCaption := "<c><font ;10><sha ;;0>Open the Windows Explorer, and delete or edit any of these files."
		oThumbnail:EndUpdate()

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

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

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:BeginUpdate()
		oThumbnail:AllowContextMenu := .T.
		oThumbnail:AcceptFolders := -1/*exIncludeSubFilesOnly*/
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample")
		oThumbnail:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
82
How can I programmatically get the number of results

PROCEDURE OnClick(oThumbnail)
	DevOut( "Results:" )
	DevOut( Transform(oThumbnail:FormatABC("fvcount"),"") )
	DevOut( "Total:" )
	DevOut( Transform(oThumbnail:FormatABC("fcount"),"") )
RETURN

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

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

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

		oThumbnail:BeginUpdate()
		oThumbnail:AcceptFolders := -1/*exIncludeSubFilesOnly*/
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample")
		oThumbnail:FilterBarPromptPattern := "el"
		oThumbnail:StatusCaption := "(fvcount = fcount) ? `` : ( `<fgcolor=808080>` + ( fvcount ? ( fvcount format `0` ) + ` result(s).` : `No results.` ) )"
		oThumbnail:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
81
I have a filter being applied, the question is how can I display the number/count of results (sample 2)

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

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:BeginUpdate()
		oThumbnail:AcceptFolders := -1/*exIncludeSubFilesOnly*/
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample")
		oThumbnail:FilterBarPromptPattern := "el"
		oThumbnail:StatusCaption := "(fvcount = fcount) ? `` : ( `<fgcolor=808080>` + ( fvcount ? ( fvcount format `0` ) + ` result(s).` : `No results.` ) )"
		oThumbnail:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
80
I have a filter being applied, the question is how can I display the number of results (sample 1)

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

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:BeginUpdate()
		oThumbnail:AcceptFolders := -1/*exIncludeSubFilesOnly*/
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample")
		oThumbnail:FilterBarPromptPattern := "e"
		oThumbnail:StatusCaption := "not (fcount = fvcount ) ? (`<r><font ;6><fgcolor=808080><sha ;;0>Found: <b>` + (len(fvcount) ? fvcount format `0` : 0)) : ``"
		oThumbnail:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
79
Is it possible to display the number of files that are currently in the list

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

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:BeginUpdate()
		oThumbnail:AcceptFolders := -1/*exIncludeSubFilesOnly*/
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample")
		oThumbnail:StatusCaption := "`<r><font ;6><fgcolor=808080><sha ;;0>Count: <b>` + (len(fvcount) ? fvcount : 0)"
		oThumbnail:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
78
How can I specify the number of files to be displayed

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

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:BeginUpdate()
		oThumbnail:LimitInputFiles := 4
		oThumbnail:AcceptFolders := -1/*exIncludeSubFilesOnly*/
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample")
		oThumbnail:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
77
Is it possible to limit the number of files to be shown to one

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

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:BeginUpdate()
		oThumbnail:LimitInputFiles := 1
		oThumbnail:AcceptFolders := -1/*exIncludeSubFilesOnly*/
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample")
		oThumbnail:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
76
I've seen that you can magnify the view once the user draggs the control while middle-mouse button is pressed. How can I disable that
#include "AppEvent.ch"
#include "ActiveX.ch"

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:BeginUpdate()
		oThumbnail:AcceptFolders := -1/*exIncludeSubFilesOnly*/
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample")
		oThumbnail:Mode := 26368/*exThumbnailKeepAspectRatio+exThumbnailAutoFitOnDblClk+exThumbnailCenter+exThumbnailStretch+exThumbnailAutoFit*/
		oThumbnail:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
75
How can I display the name on a line, and the size on the other line

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

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:BeginUpdate()
		oThumbnail:AcceptFolders := -1/*exIncludeSubFilesOnly*/
		oThumbnail:Padding := "0 0 0 36"
		oThumbnail:Margins := "4 0"
		oThumbnail:Sort := 4/*exThumbailSortBySize*/
		oThumbnail:WordWrap := .T.
		oThumbnail:Caption := "ffolder ? ( lower(fname) + ( len( 0:=fsizeF ) ? `<br><c>` + =:0 : `` ) ) : ffile"
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample")
		oThumbnail:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
74
Can I display the name of the thumbnails without the extension

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

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:BeginUpdate()
		oThumbnail:SetProperty("Background",177/*exThumbnailBorderColor*/,AutomationTranslateColor( GraMakeRGBColor  ( { 1,0,0 } )  , .F. ))
		oThumbnail:AcceptFolders := -1/*exIncludeSubFilesOnly*/
		oThumbnail:WordWrap := .F.
		oThumbnail:Caption := "ffolder ? ( lower(fname replace `.` + fext with ``) + ( len( 0:=fsizeF ) ? `, ` + =:0 : `` ) ) : ffile"
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample")
		oThumbnail:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
73
I am trying to use the DblClick event, but the control switch the view to a different mode. Can I open the file, when user double clicks the control
PROCEDURE OnDblClick(oThumbnail,Shift,X,Y)
	DevOut( Transform(oThumbnail:ThumbnailFromPoint(-1,-1),"") )
RETURN

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

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:DblClick := {|Shift,X,Y| OnDblClick(oThumbnail,Shift,X,Y)} /*Occurs when the user dblclk the left mouse button over an object.*/

		oThumbnail:BeginUpdate()
		oThumbnail:AcceptFolders := -1/*exIncludeSubFilesOnly*/
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample")
		oThumbnail:Mode := 22272/*exThumbnailKeepAspectRatio+exThumbnailAllowResize+exThumbnailCenter+exThumbnailStretch+exThumbnailAutoFit*/
		oThumbnail:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
72
How can I hide/prevent showing the control's filter

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

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:BeginUpdate()
		oThumbnail:FilterBarVisible := 0/*exFilterBarHidden*/
		oThumbnail:AcceptFolders := -1/*exIncludeSubFilesOnly*/
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample")
		oThumbnail:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
71
The thumbnails get resized as soon as I change the filter. Can I make it fixed

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

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:BeginUpdate()
		oThumbnail:SetProperty("ScrollPartVisible",0/*exVScroll*/,65536/*exExtentThumbPart*/,.T.)
		oThumbnail:SetProperty("ScrollPartVisible",1/*exHScroll*/,65536/*exExtentThumbPart*/,.T.)
		oThumbnail:SetProperty("ScrollPartVisible",2/*0x2+*/,65536/*exExtentThumbPart*/,.T.)
		oThumbnail:ScrollWidth := 4
		oThumbnail:SetProperty("Background",276/*exVSBack*/,AutomationTranslateColor( GraMakeRGBColor  ( { 240,240,240 } )  , .F. ))
		oThumbnail:SetProperty("Background",260/*exVSThumb*/,AutomationTranslateColor( GraMakeRGBColor  ( { 128,128,128 } )  , .F. ))
		oThumbnail:ScrollHeight := 4
		oThumbnail:SetProperty("Background",404/*exHSBack*/,oThumbnail:Background(276/*exVSBack*/))
		oThumbnail:SetProperty("Background",388/*exHSThumb*/,oThumbnail:Background(260/*exVSThumb*/))
		oThumbnail:SetProperty("Background",511/*exScrollSizeGrip*/,oThumbnail:Background(276/*exVSBack*/))
		oThumbnail:Mode := 30208/*exThumbnailKeepAspectRatio+exThumbnailAutoFitOnDblClk+exThumbnailAllowResize+exThumbnailCenter+exThumbnailStretch*/
		oThumbnail:AcceptFolders := -1/*exIncludeSubFilesOnly*/
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample")
		oThumbnail:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
70
Is it possible to display the names in lower-case, and with a different color the size

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

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:BeginUpdate()
		oThumbnail:AcceptFolders := -1/*exIncludeSubFilesOnly*/
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample")
		oThumbnail:Caption := "lower(ffolder ? ( fname : ffile)) + ( len( 0:=fsizeF ) ? `, <fgcolor=A0A0A0>` + =:0 + `</fgcolor>` : `` )"
		oThumbnail:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
69
Is it possible to display the names in upper-case

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

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:BeginUpdate()
		oThumbnail:AcceptFolders := -1/*exIncludeSubFilesOnly*/
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample")
		oThumbnail:Caption := "upper(ffolder ? ( fname + ( len( 0:=fsizeF ) ? `, ` + =:0 : `` ) ) : ffile)"
		oThumbnail:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
68
How can I programmatically apply a filter to the control

PROCEDURE OnClick(oThumbnail)
	oThumbnail:FilterBarPromptPattern := "jpg"
RETURN

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

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

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

		oThumbnail:BeginUpdate()
		oThumbnail:AcceptFolders := -1/*exIncludeSubFilesOnly*/
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample")
		oThumbnail:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
67
How can I clear programmatically the control's filter

PROCEDURE OnClick(oThumbnail)
	oThumbnail:FilterBarPromptPattern := ""
RETURN

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

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

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

		oThumbnail:BeginUpdate()
		oThumbnail:AcceptFolders := -1/*exIncludeSubFilesOnly*/
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample")
		oThumbnail:FilterBarPromptPattern := "jpg"
		oThumbnail:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
66
Is the "Start Filter ..." customizable, so I can change to my language

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

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:BeginUpdate()
		oThumbnail:SetProperty("FilterBarBackColor",AutomationTranslateColor( GraMakeRGBColor  ( { 0,0,0 } )  , .F. ))
		oThumbnail:SetProperty("FilterBarForeColor",AutomationTranslateColor( GraMakeRGBColor  ( { 255,255,255 } )  , .F. ))
		oThumbnail:FilterBarPrompt := "<i><b>Click here to start filter for...</b></i>"
		oThumbnail:AcceptFolders := -1/*exIncludeSubFilesOnly*/
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample")
		oThumbnail:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
65
How can I define what to filter for. For instance, just the name, extension. Is it possible

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

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:BeginUpdate()
		oThumbnail:AcceptFolders := -1/*exIncludeSubFilesOnly*/
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample")
		oThumbnail:FilterBarFor := "fname"
		oThumbnail:FilterBarPromptPattern := "jpg"
		oThumbnail:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
64
It is possible to turn-on case-sensitive for the control's filter

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

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:BeginUpdate()
		oThumbnail:AcceptFolders := -1/*exIncludeSubFilesOnly*/
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample")
		oThumbnail:FilterBarPromptType := 257/*exFilterPromptCaseSensitive+exFilterPromptContainsAll*/
		oThumbnail:FilterBarPromptPattern := "el"
		oThumbnail:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
63
Can I filter the thumbnails that starts with instead contains typed characters

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

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:BeginUpdate()
		oThumbnail:AcceptFolders := -1/*exIncludeSubFilesOnly*/
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample")
		oThumbnail:FilterBarPromptType := 3/*exFilterPromptStartWith*/
		oThumbnail:FilterBarPromptPattern := "el"
		oThumbnail:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
62
Can I use wild characters in the filter

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

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:BeginUpdate()
		oThumbnail:AcceptFolders := -1/*exIncludeSubFilesOnly*/
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample")
		oThumbnail:FilterBarPromptType := 16/*exFilterPromptPattern*/
		oThumbnail:FilterBarFor := "fname"
		oThumbnail:FilterBarPromptPattern := "*.jpg"
		oThumbnail:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
61
I've noticed that If I type more words on filter bar all should be included, the question is can I display thumbnails that contains any of these words

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

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:BeginUpdate()
		oThumbnail:AcceptFolders := -1/*exIncludeSubFilesOnly*/
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample")
		oThumbnail:FilterBarPromptType := 2/*exFilterPromptContainsAny*/
		oThumbnail:FilterBarPromptPattern := "elogo or something that you won't find"
		oThumbnail:EndUpdate()

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

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

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:BeginUpdate()
		oThumbnail:SetProperty("FilterBarBackColor",AutomationTranslateColor( GraMakeRGBColor  ( { 0,0,0 } )  , .F. ))
		oThumbnail:SetProperty("FilterBarForeColor",AutomationTranslateColor( GraMakeRGBColor  ( { 255,255,255 } )  , .F. ))
		oThumbnail:FilterBarPrompt := "<i>Start Filter...</i>"
		oThumbnail:AcceptFolders := -1/*exIncludeSubFilesOnly*/
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample")
		oThumbnail:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
59
The question is can I somehow show the close button of the control's filter bar to the right

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

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:BeginUpdate()
		oThumbnail:FilterBarVisible := 1025/*exFilterBarShowCloseOnRight+exFilterBarVisible*/
		oThumbnail:AcceptFolders := -1/*exIncludeSubFilesOnly*/
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample")
		oThumbnail:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
58
Is it possible to change the color to show the close button of the control's filter bar

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

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:BeginUpdate()
		oThumbnail:SetProperty("Background",1/*exFooterFilterBarButton*/,AutomationTranslateColor( GraMakeRGBColor  ( { 0,255,0 } )  , .F. ))
		oThumbnail:AcceptFolders := -1/*exIncludeSubFilesOnly*/
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample")
		oThumbnail:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
57
How can I prevent showing the close button, in the control's filter bar

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

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:BeginUpdate()
		oThumbnail:SetProperty("Background",1/*exFooterFilterBarButton*/,-1)
		oThumbnail:AcceptFolders := -1/*exIncludeSubFilesOnly*/
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample")
		oThumbnail:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
56
Is it possible to show the close button, only if there is a filter applied

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

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:BeginUpdate()
		oThumbnail:FilterBarVisible := 513/*exFilterBarShowCloseIfRequired+exFilterBarVisible*/
		oThumbnail:AcceptFolders := -1/*exIncludeSubFilesOnly*/
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample")
		oThumbnail:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
55
How can I close/hide the filter once the user clicks the close button
#include "AppEvent.ch"
#include "ActiveX.ch"

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:BeginUpdate()
		oThumbnail:FilterBarVisible := 257/*exFilterBarToggle+exFilterBarVisible*/
		oThumbnail:AcceptFolders := -1/*exIncludeSubFilesOnly*/
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample")
		oThumbnail:EndUpdate()

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

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

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:BeginUpdate()
		oThumbnail:FilterBarVisible := 0/*exFilterBarHidden*/
		oThumbnail:AcceptFolders := -1/*exIncludeSubFilesOnly*/
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample")
		oThumbnail:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
53
How can I enable the control's filter bar

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

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:BeginUpdate()
		oThumbnail:FilterBarVisible := 1/*exFilterBarVisible*/
		oThumbnail:AcceptFolders := -1/*exIncludeSubFilesOnly*/
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample")
		oThumbnail:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
52
How can I enable alternate background/foreground colors

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

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:BeginUpdate()
		oThumbnail:SetProperty("Background",175/*exThumbnailBackColorAlt*/,AutomationTranslateColor( GraMakeRGBColor  ( { 240,240,240 } )  , .F. ))
		oThumbnail:SetProperty("Background",176/*exThumbnailForeColorAlt*/,AutomationTranslateColor( GraMakeRGBColor  ( { 128,128,128 } )  , .F. ))
		oThumbnail:AcceptFolders := -1/*exIncludeSubFilesOnly*/
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample")
		oThumbnail:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
51
How can I remove all margins, so I have a compact view

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

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:BeginUpdate()
		oThumbnail:Margins := "0 0"
		oThumbnail:Padding := "0 0 0 0"
		oThumbnail:Borders := "0 0 0 0"
		oThumbnail:SetProperty("Background",177/*exThumbnailBorderColor*/,AutomationTranslateColor( GraMakeRGBColor  ( { 1,0,0 } )  , .F. ))
		oThumbnail:Alignment := 33/*exAlignBottomCenter*/
		oThumbnail:AcceptFolders := -1/*exIncludeSubFilesOnly*/
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample")
		oThumbnail:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
50
The thumbnail's caption gets wrapped, the question is can I disable that

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

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:BeginUpdate()
		oThumbnail:Margins := "16 16"
		oThumbnail:ThumbnailMinWidth := 32
		oThumbnail:ThumbnailMinHeight := 32
		oThumbnail:Mode := 30208/*exThumbnailKeepAspectRatio+exThumbnailAutoFitOnDblClk+exThumbnailAllowResize+exThumbnailCenter+exThumbnailStretch*/
		oThumbnail:AcceptFolders := -1/*exIncludeSubFilesOnly*/
		oThumbnail:WordWrap := .F.
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample")
		oThumbnail:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
49
How can I display the thumbnail's caption on the right rather than bottom

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

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:BeginUpdate()
		oThumbnail:Margins := "0 16"
		oThumbnail:Padding := "0 0 16 0"
		oThumbnail:Borders := "16 16 16 16"
		oThumbnail:CaptionRotate := 17/*exHTMLMirror+exHTMLVertical*/
		oThumbnail:SetProperty("Background",177/*exThumbnailBorderColor*/,AutomationTranslateColor( GraMakeRGBColor  ( { 1,0,0 } )  , .F. ))
		oThumbnail:AcceptFolders := -1/*exIncludeSubFilesOnly*/
		oThumbnail:WordWrap := .F.
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample")
		oThumbnail:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
48
How can I display the thumbnail's caption on the left rather than bottom

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

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:BeginUpdate()
		oThumbnail:Margins := "0 16"
		oThumbnail:Padding := "16 0 0 0"
		oThumbnail:Borders := "16 16 16 16"
		oThumbnail:CaptionRotate := 1/*exHTMLVertical*/
		oThumbnail:SetProperty("Background",177/*exThumbnailBorderColor*/,AutomationTranslateColor( GraMakeRGBColor  ( { 1,0,0 } )  , .F. ))
		oThumbnail:AcceptFolders := -1/*exIncludeSubFilesOnly*/
		oThumbnail:WordWrap := .F.
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample")
		oThumbnail:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
47
How can I display the thumbnail's caption on the top rather than bottom

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

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:BeginUpdate()
		oThumbnail:Margins := "16 0"
		oThumbnail:Padding := "0 16 0 0"
		oThumbnail:Borders := "16 16 16 16"
		oThumbnail:SetProperty("Background",177/*exThumbnailBorderColor*/,AutomationTranslateColor( GraMakeRGBColor  ( { 1,0,0 } )  , .F. ))
		oThumbnail:AcceptFolders := -1/*exIncludeSubFilesOnly*/
		oThumbnail:WordWrap := .F.
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample")
		oThumbnail:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
46
How do I enable the scrollbar-extension, as thumb to be shown outside of the control's client area

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

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:BeginUpdate()
		oThumbnail:SetProperty("ScrollPartVisible",0/*exVScroll*/,65536/*exExtentThumbPart*/,.T.)
		oThumbnail:SetProperty("ScrollPartVisible",1/*exHScroll*/,65536/*exExtentThumbPart*/,.T.)
		oThumbnail:SetProperty("ScrollPartVisible",2/*0x2+*/,65536/*exExtentThumbPart*/,.T.)
		oThumbnail:ScrollWidth := 4
		oThumbnail:SetProperty("Background",276/*exVSBack*/,AutomationTranslateColor( GraMakeRGBColor  ( { 240,240,240 } )  , .F. ))
		oThumbnail:SetProperty("Background",260/*exVSThumb*/,AutomationTranslateColor( GraMakeRGBColor  ( { 128,128,128 } )  , .F. ))
		oThumbnail:ScrollHeight := 4
		oThumbnail:SetProperty("Background",404/*exHSBack*/,oThumbnail:Background(276/*exVSBack*/))
		oThumbnail:SetProperty("Background",388/*exHSThumb*/,oThumbnail:Background(260/*exVSThumb*/))
		oThumbnail:SetProperty("Background",511/*exScrollSizeGrip*/,oThumbnail:Background(276/*exVSBack*/))
		oThumbnail:AcceptFolders := -1/*exIncludeSubFilesOnly*/
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample")
		oThumbnail:EndUpdate()

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

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:BeginUpdate()
		oThumbnail:AutoDrag := 0/*exAutoDragNone*/
		oThumbnail:ScrollWidth := 0
		oThumbnail:ScrollHeight := 0
		oThumbnail:AcceptFolders := -1/*exIncludeSubFilesOnly*/
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample")
		oThumbnail:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
44
How can I modify the margins of the thumbnail

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

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:BeginUpdate()
		oThumbnail:Margins := "16 0"
		oThumbnail:Padding := "0 16 0 0"
		oThumbnail:Borders := "16 16 16 16"
		oThumbnail:WordWrap := .F.
		oThumbnail:SetProperty("Background",177/*exThumbnailBorderColor*/,AutomationTranslateColor( GraMakeRGBColor  ( { 1,0,0 } )  , .F. ))
		oThumbnail:AcceptFolders := -1/*exIncludeSubFilesOnly*/
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample")
		oThumbnail:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
43
The thumbnail view gets scrolled when user clicks it. Can I disable that
#include "AppEvent.ch"
#include "ActiveX.ch"

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:BeginUpdate()
		oThumbnail:AutoDrag := 0/*exAutoDragNone*/
		oThumbnail:AcceptFolders := -1/*exIncludeSubFilesOnly*/
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample")
		oThumbnail:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
42
The thumbnail get maximized as soon as the user double clicks it. May I prevent that
#include "AppEvent.ch"
#include "ActiveX.ch"

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:BeginUpdate()
		oThumbnail:Mode := 22272/*exThumbnailKeepAspectRatio+exThumbnailAllowResize+exThumbnailCenter+exThumbnailStretch+exThumbnailAutoFit*/
		oThumbnail:AcceptFolders := -1/*exIncludeSubFilesOnly*/
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample")
		oThumbnail:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
41
Can I limit the thumbnail size when the user resizes it

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

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:BeginUpdate()
		oThumbnail:Margins := "16 16"
		oThumbnail:ThumbnailMinWidth := 64
		oThumbnail:ThumbnailMinHeight := 64
		oThumbnail:ThumbnailMaxWidth := 64
		oThumbnail:ThumbnailMaxHeight := 64
		oThumbnail:Mode := 30208/*exThumbnailKeepAspectRatio+exThumbnailAutoFitOnDblClk+exThumbnailAllowResize+exThumbnailCenter+exThumbnailStretch*/
		oThumbnail:AcceptFolders := -1/*exIncludeSubFilesOnly*/
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample")
		oThumbnail:Caption := "fname"
		oThumbnail:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
40
I've seen that that the thumbnail can be resized up to 120 points, can I change that

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

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:BeginUpdate()
		oThumbnail:Margins := "8 8"
		oThumbnail:Padding := "0 0 0 8"
		oThumbnail:ThumbnailMinWidth := 32
		oThumbnail:ThumbnailMinHeight := 32
		oThumbnail:Mode := 30208/*exThumbnailKeepAspectRatio+exThumbnailAutoFitOnDblClk+exThumbnailAllowResize+exThumbnailCenter+exThumbnailStretch*/
		oThumbnail:AcceptFolders := -1/*exIncludeSubFilesOnly*/
		oThumbnail:WordWrap := .F.
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample")
		oThumbnail:Caption := "`<font ;4>` + fname replace `.` + fext with ``"
		oThumbnail:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
39
How can I change the thumbnail's mode to stack

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

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:BeginUpdate()
		oThumbnail:VirtualMode := .F.
		oThumbnail:Margins := "16 16"
		oThumbnail:Mode := 14081/*exThumbnailAutoFitOnDblClk+exThumbnailAllowResize+exThumbnailCenter+exThumbnailStretch+exThumbnailAutoFit+exThumbnailStack*/
		oThumbnail:AcceptFolders := -1/*exIncludeSubFilesOnly*/
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample")
		oThumbnail:EndUpdate()

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

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

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:BeginUpdate()
		oThumbnail:AcceptFolders := -1/*exIncludeSubFilesOnly*/
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample")
		oThumbnail:Sort := 260/*exThumbailSortReverse+exThumbailSortBySize*/
		oThumbnail:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
37
How can I get thumbnailed all sub-files within the folder

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

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:BeginUpdate()
		oThumbnail:AcceptFolders := -1/*exIncludeSubFilesOnly*/
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample")
		oThumbnail:EndUpdate()

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

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:BeginUpdate()
		oThumbnail:Padding := ""
		oThumbnail:Alignment := 33/*exAlignBottomCenter*/
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample\elogo.jpg")
		oThumbnail:Caption := "ffolder ? ( `Name: <b>` + fname + `</b>` + `<br>` + ( len( 0:= ftype ) ? `Type: <b>` + =:0 + `</b>` + `<br>` : `` ) + ( ffolder = 1 ? `Size: <b>` + fsizeF + `</b>` + `<br>` : `` ) + `Created: <b>` + date(fcreated - bias/24/60) + `</b>` + `<br>` + `Modified: <b>` + date(fmodified - bias/24/60) + `</b>`+ `<br>` + `Last Opened: <b>` + date(fopened - bias/24/60) + `</b>`+ (fpicture ? (`<br>Dimensions: <b>` + fwidth + ` x ` + fheight + `</b>` ) : ``) ) : ffile"
		oThumbnail:SetProperty("Background",177/*exThumbnailBorderColor*/,AutomationTranslateColor( GraMakeRGBColor  ( { 0,0,0 } )  , .F. ))
		oThumbnail:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
35
How do I get the thumbnail from the cursor
PROCEDURE OnMouseMove(oThumbnail,Button,Shift,X,Y)
	DevOut( Transform(oThumbnail:ThumbnailFromPoint(-1,-1),"") )
RETURN

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

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

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

		oThumbnail:BeginUpdate()
		oThumbnail:AcceptFolders := -1/*exIncludeSubFilesOnly*/
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample")
		oThumbnail:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
34
I've noticed that the thumbnail's tooltip is displaying more information. How can I change that

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

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:BeginUpdate()
		oThumbnail:AcceptFolders := -1/*exIncludeSubFilesOnly*/
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample")
		oThumbnail:ToolTipTitle := "File"
		oThumbnail:ToolTipText := "ffile replace fname with (`<b>` + fname + `</b>`)"
		oThumbnail:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
33
How can I display more information about the thumbnail

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

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:BeginUpdate()
		oThumbnail:Padding := ""
		oThumbnail:Alignment := 33/*exAlignBottomCenter*/
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample\EndangeredAnimals.png")
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample\logocanary.png")
		oThumbnail:Caption := "ffolder ? ( `Name: <b>` + fname + `</b>` + `<br>` + ( len( 0:= ftype ) ? `Type: <b>` + =:0 + `</b>` + `<br>` : `` ) + ( ffolder = 1 ? `Size: <b>` + fsizeF + `</b>` + `<br>` : `` ) + `Created: <b>` + date(fcreated - bias/24/60) + `</b>` + `<br>` + `Modified: <b>` + date(fmodified - bias/24/60) + `</b>`+ `<br>` + `Last Opened: <b>` + date(fopened - bias/24/60) + `</b>`+ (fpicture ? (`<br>Dimensions: <b>` + fwidth + ` x ` + fheight + `</b>` ) : ``) ) : ffile"
		oThumbnail:SingleCaption := oThumbnail:Caption()
		oThumbnail:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
32
Can I display the thumbnail's caption based on the size of the view
#include "AppEvent.ch"
#include "ActiveX.ch"

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:BeginUpdate()
		oThumbnail:InputFile := "C:\Program Files\Exontrol\ExThumbnail\Sample\elogo.jpg"
		oThumbnail:Caption := "width < 256 ? fname : ffile"
		oThumbnail:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
31
How do I know the thumbnail's size (sample 2)

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

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:BeginUpdate()
		oThumbnail:AcceptFolders := -1/*exIncludeSubFilesOnly*/
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample")
		oThumbnail:Caption := "`View: ` + width + ` x ` + height"
		oThumbnail:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
30
How do I know the thumbnail's size (sample 1)

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

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:BeginUpdate()
		oThumbnail:InputFile := "C:\Program Files\Exontrol\ExThumbnail\Sample\elogo.jpg"
		oThumbnail:EndUpdate()
		DevOut( "Width: " )
		DevOut( Transform(oThumbnail:ThumbnailWidth(),"") )
		DevOut( "Height: " )
		DevOut( Transform(oThumbnail:ThumbnailHeight(),"") )

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
29
Is it possible to get the dimensions of the picture file

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

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:BeginUpdate()
		oThumbnail:InputFiles := "C:\Program Files\Exontrol\ExThumbnail\Sample\elogo.jpg"
		oThumbnail:Caption := "`Dimensions: <b>` + fwidth + ` x ` + fheight"
		oThumbnail:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
28
Is there any function to determine whether the file is a picture

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

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:BeginUpdate()
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample\elogo.jpg")
		oThumbnail:AddInputFiles("C:\Program Files\Exontrol\ExThumbnail\Sample\elogo.jpg.2")
		oThumbnail:Caption := "`IsPicture: <b>` + (fpicture ? `Yes` : `No`)"
		oThumbnail:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
27
How can I get the type of the file, like JPG File, and so on...

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

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:BeginUpdate()
		oThumbnail:InputFiles := "C:\Program Files\Exontrol\ExThumbnail\Sample\elogo.jpg"
		oThumbnail:Caption := "`Type: <b>` + ftype"
		oThumbnail:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
26
How do I get the file/folder's attributes

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

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

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

	oThumbnail := XbpActiveXControl():new( oForm:drawingArea )
	oThumbnail:CLSID  := "Exontrol.Thumbnail.1" /*{44BA596F-E225-476B-81B1-3BDE56AC595A}*/
	oThumbnail:create(,, {10,60},{610,370} )

		oThumbnail:BeginUpdate()
		oThumbnail:InputFiles := "C:\Program Files\Exontrol\ExThumbnail\Sample\elogo.jpg"
		oThumbnail:Caption := "`Attributes: <b>0x` + hex(fattr)"
		oThumbnail:EndUpdate()

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