129:
Export Data in HTML format

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oFormatAppearances
	LOCAL oFormatConditionalAppearances
	LOCAL oShellBrowserWindow
	LOCAL oPivot
	LOCAL sFile

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:BeginUpdate()
		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:SetProperty("Description",11/*exFilterBarAnd*/,Transform(oPivot:FormatABC("`<fgcolor=808080> ` + value + ` </fgcolor>`",oPivot:Description(11/*exFilterBarAnd*/)),""))
		oPivot:FilterBarCaption := "(( ( value replace `[<b>` with `<bgcolor=000000><fgcolor=FFFFFF><b> ` replace `</b>]` with ` </b></bgcolor></fgcolor>` replace `[<s>` with `<bgcolor=C0C0C0><fgcolor=FFFFFF> ` replace `</s>]` with ` </fgcolor></bgcolor>` )  + `<r><fgcolor=808080>` + ( matchitemcount < 0 ? ( ( len(value) ? `` : `` ) + `<r>` + abs(matchitemcount + 1) + ` result(s)` ) : (`<r><fgcolor=808080>`+ itemcount + ` item(s)`) )))"
		oPivot:FilterBarPromptVisible := 2583/*exFilterBarCompact+exFilterBarShowCloseIfRequired+exFilterBarSingleLine+exFilterBarCaptionVisible+exFilterBarVisible+exFilterBarPromptVisible*/
		oFormatConditionalAppearances := oPivot:FormatConditionalAppearances()
			oFormatConditionalAppearances:Add("G1000","> 1000","value > 1000"):SetProperty("ForeColor",AutomationTranslateColor( GraMakeRGBColor  ( { 0,0,255 } )  , .F. ))
			oFormatConditionalAppearances:Add("L1000","< 1000","value < 1000"):SetProperty("ForeColor",AutomationTranslateColor( GraMakeRGBColor  ( { 255,0,0 } )  , .F. ))
			oFormatConditionalAppearances:Add("Zero","zero","value = 0"):SetProperty("BackColor",AutomationTranslateColor( GraMakeRGBColor  ( { 224,224,224 } )  , .F. ))
		oFormatAppearances := oPivot:FormatAppearances()
			oFormatAppearances:Add("grayed"):SetProperty("ForeColor",AutomationTranslateColor( GraMakeRGBColor  ( { 128,128,128 } )  , .F. ))
			oFormatAppearances:Add("red"):SetProperty("ForeColor",AutomationTranslateColor( GraMakeRGBColor  ( { 255,0,0 } )  , .F. ))
			oFormatAppearances:Add("green"):SetProperty("ForeColor",AutomationTranslateColor( GraMakeRGBColor  ( { 0,255,0 } )  , .F. ))
			oFormatAppearances:Add("blue"):SetProperty("ForeColor",AutomationTranslateColor( GraMakeRGBColor  ( { 0,0,255 } )  , .F. ))
			oFormatAppearances:Add("bgrayed"):SetProperty("BackColor",AutomationTranslateColor( GraMakeRGBColor  ( { 128,128,128 } )  , .F. ))
			oFormatAppearances:Add("bred"):SetProperty("BackColor",AutomationTranslateColor( GraMakeRGBColor  ( { 255,0,0 } )  , .F. ))
			oFormatAppearances:Add("bgreen"):SetProperty("BackColor",AutomationTranslateColor( GraMakeRGBColor  ( { 0,255,0 } )  , .F. ))
			oFormatAppearances:Add("bblue"):SetProperty("BackColor",AutomationTranslateColor( GraMakeRGBColor  ( { 0,0,255 } )  , .F. ))
		oPivot:PivotRows := "0[bold],2[grayed]"
		oPivot:PivotColumns := "sum(5)[L1000],sum(5)[G1000]/12:A"
		oPivot:PivotTotals := "sum[bold,content=currency,bgrayed]"
		oPivot:AutoDrag := 16/*exAutoDragScroll*/
		oPivot:SetProperty("BackColorAlternate",AutomationTranslateColor( GraMakeRGBColor  ( { 240,240,240 } )  , .F. ))
		oPivot:FilterBarPromptType := 2/*exFilterPromptContainsAny*/
		oPivot:FilterBarPromptPattern := "France Germany"
		oPivot:EndUpdate()
		sFile := "c:/temp/test.htm"
		oPivot:Export(sFile)
		oShellBrowserWindow := CreateObject("internetexplorer.application")
			oShellBrowserWindow:Navigate2(sFile)

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
128:
Export Data in CSV format

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:BeginUpdate()
		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:PivotRows := "0"
		oPivot:PivotColumns := "sum(5),sum(5)/12:A"
		oPivot:PivotTotals := "sum[bold,content=currency]"
		oPivot:AutoDrag := 16/*exAutoDragScroll*/
		oPivot:SetProperty("BackColorAlternate",AutomationTranslateColor( GraMakeRGBColor  ( { 240,240,240 } )  , .F. ))
		oPivot:EndUpdate()
		DevOut( Transform(oPivot:Export(),"") )

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
127:
Is it possible to change the visual appearance of the update / reload button being displayed in the control's pivot bar

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:BeginUpdate()
		oAppearance := oPivot:VisualAppearance()
			oAppearance:Add(1,"gBFLBCJwBAEHhEJAAEhABMsGACAADACAxRDgMQBQKAAzAJBIYhiG4cYCgMYxXDOCYXABCEYRXBIZQ7BKNIxjSJwCgkBYJDSMAiiaLETwHFKVRwkWBBWjMAAxDZFcggA77fwxHaOAghGgobjaPY+UbGERAAKQahLJamablCSqLjCS4kSLHEbQHTcRSzLKQZBBCCSQKkYx0HScRiwPBIbQkIQmbajOaYDCiQ53QLCAYRXS9PwvI7AMBwLA8EwXBo9DZiIy4WyuGj3R4WchAbIwIxUK6XHhmLjZXg+Bz9T6LQZ0JStEx2SYjAJqOiKU62W9xbAUOxQTpIBJXW7Oc7GTa8dQfPoJaIDLicHgoZ6NLIcOR0abSO42CRrdByfRYMwvisCQKnYOh9i4LwbBINpBHeBxeC6X4TAIEpzkIWgei8L4Qk2boEhWPg9C4SJijIOZ7mEXA/iAX5yBKDx/lmVhEC0Z5ZlKHgGAAYIHkGcQxiCQ5eA4PghAKNgSG0VYXEi" +;
		"JYFl+QAtiCBpdjcDJkB0IgAiYIgBmIQAWCYCoigYZB4DQYpAjoLh3h6SJFgcOpXlAAQBICA==")
		oPivot:SetProperty("Background",184/*exPivotBarReload*/,0x1000000)
		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:PivotBarVisible := 16780763/*exPivotBarAllowFormatConditionalAppearance+exPivotBarAllowResizeColumns+exPivotBarAllowUndoRedo+exPivotBarAllowFormatContent+exPivotBarAllowFormatAppearance+exPivotBarAllowValues+exPivotBarShowTotals+exPivotBarAutoFit+exPivotBarSizable+exPivotBarVisible*/
		oPivot:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
126:
Is it possible to change the visual appearance of the plus/add new button being displayed in the control's pivot bar

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:BeginUpdate()
		oAppearance := oPivot:VisualAppearance()
			oAppearance:Add(1,"gBFLBCJwBAEHhEJAAEhABDwCg6AADACAxRDgMQBQKAAzAJBIYhiG4cYCgMYxXDOCYXABCEYRXBIZQ7BKNIxjSJ5BhIAAyDSJMjSRJUEhqGCWYDleYYYAKHIMQLJQKQSBcQR9EaBZBAWTpQC0OJDTJRI4TNAgbSYAAYRqoCb6loTKypaxjCQQIgkUBpGKdBynEYsDwSGyJCCJWyIbpKAwoVbcs4AYhuJpaQi+d5PFbjVT8dLAMBwLA8EwXAJ+OpfDxXU7eFKpR5fchXTI8UxXFqXZhkeQrfh7KYVRBKdBQRBEFQPJqnahqOpaXo2RoLUJKcQwHTmHYNQTALyuTALZrWeZ3XrgN74LbtZzVQauYRpbCMEr6bpoWLnFi6Ho1U4llWah1jqSweFqfxPgQQRphi+Yak0YIuqUfJegef4zluaJ3nqPJeCYH4BAeX5TDLBpVGqKRRnwf4flefZtHsX54BYAR/F+EwVnUd5eAMMJKDIChygyIQpAoEh4iIJ5Jlg" +;
		"XIcgCXpIGoFwnGEQh6BEKBgmMIICHgIJCAiUAzgyUoAhwJohkiRgygwYpiGoKwzGIcgKCkNQNCMRIbCYCRYk4QoMiOchWDwNBjhiJJaDYTRiGiFwlCQAhOE8JBJHITIRgwZRZFCFCZBkOIUhKTRpCWAwgGYQ4El4NxlBifIWCcCYCFoaoMGaKYyG6GxlBmGJdhkCAWBIeA5g4U4QhMJAImkPIShRVxGgQJRlCIUISh+SJpnCZIeBgFgiHgO4OlOMINCISByECDQikkGhuh2JwpmqBogCKaYiC6FwhmkQ4yHgYgYiaHopiuaRakCbIsisSpGjYOwaHYKYMCkK5CA2IxrCwCwFigaJrkLTI6lcdANAEgIA=")
		oPivot:SetProperty("Background",183/*exPivotBarAddNew*/,0x1000000)
		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:EndUpdate()

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

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:BeginUpdate()
		oPivot:HeaderAppearance := 4/*Etched*/
		oAppearance := oPivot:VisualAppearance()
			oAppearance:Add(1,"gBFLBCJwBAEHhEJAAEhABZEGACAADACAxRDgMQBQKAAzAJBIYhiG4cYCgMYxXDOCYXABCEYRXBIZQ7BKNIxjSJwFgmEgADKMA4SOKIZhrE4bBhGaQRUgyI43RhHUBzVIUcQvE6TZRHCQYHgkNIhDJIM7TPLkeSVJaTIRoKhJUogApQThTMgVRDEThkGoSa6soSoYTDBKybLrSLKagOT5YUDKUqSdKEZRpEq1YztWbaQoCUoqVRRVIWfbNd4JJa4aDhWpYdpeeY5R7bWLgBYVVABL7LLRsSxpHxPF6RXxaeI3GKsaS8G6ic6nPQMHj7I4NS5pUa6Rh2VYNSa8AAtETRYznOw4bTMXAjNIea5bAYIIR5HIoDzVbQcCQAHL9DBeEMIQEEISgGhMGZQmocgymoYRRCIEQ0G2HYBnEIBig4V4zCQGINnmagCECY43medZ6H2Pw/g+X5fnueh/h+R5+AKABfkMWgGgGYA4AICoCGCE5WA4CphACMgSD2IRIDI" +;
		"BICmEd5YGCBpRjGBgegWIYIgWdgoGIRQsiKCZiAiJZ0gGQI4jUS4LECOAiBmDJflGfg2BSY4Al4OhGkOCJ2DgFJjGGfgqgiH5Ch4RhGkqOQmEOEpkFkHQYhJRYyESAokGKHhIhKIxJEmf4VGUeRGFmF5iBkchPhYJQ5GoYIZg6Ug6GoFYmkmNhuhulRGHKGoImefh0BUZ4JmYeoemeSZ2H6HQmgoBgXDqXwUAQgI=")
			oAppearance:Add(2,"CP:1 0 -36 0 0")
		oPivot:SetProperty("Background",182/*exColumnsPositionSign*/,0x2000000)
		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
124:
FilterBarCaption ALL Keyword ( sample 2, result )

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:BeginUpdate()
		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:FilterBarFont := oPivot:Font()
		oPivot:SetProperty("Description",11/*exFilterBarAnd*/,Transform(oPivot:FormatABC("`<fgcolor=808080> ` + value + ` </fgcolor>`",oPivot:Description(11/*exFilterBarAnd*/)),""))
		oPivot:FilterBarCaption := "(( ( value replace `[<b>` with `<bgcolor=000000><fgcolor=FFFFFF><b> ` replace `</b>]` with ` </b></bgcolor></fgcolor>` replace `[<s>` with `<bgcolor=C0C0C0><fgcolor=FFFFFF> ` replace `</s>]` with ` </fgcolor></bgcolor>` )  + `<r><fgcolor=808080>` + ( matchitemcount < 0 ? ( ( len(value) ? `` : `` ) + `<r>` + abs(matchitemcount + 1) + ` result(s)` ) : (`<r><fgcolor=808080>`+ itemcount + ` item(s)`) )))"
		oPivot:FilterBarPromptVisible := 2583/*exFilterBarCompact+exFilterBarShowCloseIfRequired+exFilterBarSingleLine+exFilterBarCaptionVisible+exFilterBarVisible+exFilterBarPromptVisible*/
		oPivot:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
123:
FilterBarCaption ALL Keyword ( sample 1 )

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:BeginUpdate()
		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:FilterBarFont := oPivot:Font()
		oPivot:SetProperty("Description",11/*exFilterBarAnd*/,Transform(oPivot:FormatABC("`<fgcolor=808080> ` + value + ` </fgcolor>`",oPivot:Description(11/*exFilterBarAnd*/)),""))
		oPivot:FilterBarCaption := "all"
		oPivot:FilterBarPromptVisible := 3/*exFilterBarVisible+exFilterBarPromptVisible*/
		oPivot:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
122:
FilterBarCaption ALLUI Keyword ( sample 2, result )

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:BeginUpdate()
		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:FilterBarFont := oPivot:Font()
		oPivot:SetProperty("Description",11/*exFilterBarAnd*/,Transform(oPivot:FormatABC("`<fgcolor=808080> ` + value + ` </fgcolor>`",oPivot:Description(11/*exFilterBarAnd*/)),""))
		oPivot:FilterBarCaption := "(( ( allui replace `[<b>` with `<bgcolor=000000><fgcolor=FFFFFF><b> ` replace `</b>]` with ` </b></bgcolor></fgcolor>` replace `[<s>` with `<bgcolor=C0C0C0><fgcolor=FFFFFF> ` replace `</s>]` with ` </fgcolor></bgcolor>` )  + `<r><fgcolor=808080>` + ( matchitemcount < 0 ? ( ( len(value) ? `` : `` ) + `<r>` + abs(matchitemcount + 1) + ` result(s)` ) : (`<r><fgcolor=808080>`+ itemcount + ` item(s)`) )))"
		oPivot:FilterBarPromptVisible := 3/*exFilterBarVisible+exFilterBarPromptVisible*/
		oPivot:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
121:
FilterBarCaption ALLUI Keyword ( sample 1 )

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:BeginUpdate()
		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:FilterBarFont := oPivot:Font()
		oPivot:SetProperty("Description",11/*exFilterBarAnd*/,Transform(oPivot:FormatABC("`<fgcolor=808080> ` + value + ` </fgcolor>`",oPivot:Description(11/*exFilterBarAnd*/)),""))
		oPivot:FilterBarCaption := "allui"
		oPivot:FilterBarPromptVisible := 3/*exFilterBarVisible+exFilterBarPromptVisible*/
		oPivot:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
120:
FilterBarCaption AVAILABLE Keyword ( sample 2, result )

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:BeginUpdate()
		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:FilterBarFont := oPivot:Font()
		oPivot:SetProperty("Description",11/*exFilterBarAnd*/,Transform(oPivot:FormatABC("`<fgcolor=808080> ` + value + ` </fgcolor>`",oPivot:Description(11/*exFilterBarAnd*/)),""))
		oPivot:FilterBarCaption := "(( ( value replace `[` with `<bgcolor=000000><fgcolor=FFFFFF><b> ` replace `]` with ` </b></bgcolor></fgcolor>` ) + ` ` + ( available replace `[` with `<bgcolor=C0C0C0><fgcolor=FFFFFF><b> ` replace `]` with ` </b></bgcolor></fgcolor>` replace `<s>` with `` replace `</s>` with `` ) + `<fgcolor=808080>` + ( matchitemcount < 0 ? ( ( len(value) ? `` : `` ) + `<r>` + abs(matchitemcount + 1) + ` result(s)` ) : (`<r><fgcolor=808080>`+ itemcount + ` item(s)`) )))"
		oPivot:FilterBarPromptVisible := 3/*exFilterBarVisible+exFilterBarPromptVisible*/
		oPivot:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
119:
FilterBarCaption AVAILABLE Keyword ( sample 1 )

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:BeginUpdate()
		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:FilterBarFont := oPivot:Font()
		oPivot:SetProperty("Description",11/*exFilterBarAnd*/,Transform(oPivot:FormatABC("`<fgcolor=808080> ` + value + ` </fgcolor>`",oPivot:Description(11/*exFilterBarAnd*/)),""))
		oPivot:FilterBarCaption := "value + ` ` + available"
		oPivot:FilterBarPromptVisible := 3/*exFilterBarVisible+exFilterBarPromptVisible*/
		oPivot: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 somehow highlight the column's name different than its filter value in the control's filter bar ( sample 3, results )

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:BeginUpdate()
		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:FilterBarFont := oPivot:Font()
		oPivot:SetProperty("Description",11/*exFilterBarAnd*/,Transform(oPivot:FormatABC("`<fgcolor=808080>` + value + `</fgcolor>`",oPivot:Description(11/*exFilterBarAnd*/)),""))
		oPivot:FilterBarCaption := "(`<b>` + value + `</b><fgcolor=808080>` + ( matchitemcount < 0 ? ( ( len(value) ? `` : `` ) + `<r>` + abs(matchitemcount + 1) + ` result(s)` ) : (`<fgcolor=808080>`+ itemcount + ` item(s)`) )) replace `[` with `<bgcolor=000000><fgcolor=FFFFFF><b> ` replace `]` with ` </b></bgcolor></fgcolor>`"
		oPivot:FilterBarPromptVisible := 256/*exFilterBarToggle*/
		oPivot:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
117:
Is it possible to somehow highlight the column's name different than its filter value in the control's filter bar ( sample 2 )

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:BeginUpdate()
		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:FilterBarFont := oPivot:Font()
		oPivot:SetProperty("Description",11/*exFilterBarAnd*/,Transform(oPivot:FormatABC("`<fgcolor=808080>` + value + `</fgcolor>`",oPivot:Description(11/*exFilterBarAnd*/)),""))
		oPivot:FilterBarCaption := "value replace `[` with `<bgcolor=000000><fgcolor=FFFFFF><b> ` replace `]` with ` </b></bgcolor></fgcolor>`"
		oPivot:FilterBarPromptVisible := 256/*exFilterBarToggle*/
		oPivot:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
116:
Is it possible to somehow highlight the column's name different than its filter value in the control's filter bar ( sample 1 )

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:BeginUpdate()
		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:SetProperty("Description",11/*exFilterBarAnd*/,Transform(oPivot:FormatABC("`<fgcolor=808080>` + value + `</fgcolor>`",oPivot:Description(11/*exFilterBarAnd*/)),""))
		oPivot:FilterBarCaption := "value replace `[` with `<fgcolor=808080>[` replace `]` with `]</fgcolor>`"
		oPivot:FilterBarPromptVisible := 256/*exFilterBarToggle*/
		oPivot:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
115:
Is it possible to automatically displays the control's filter label to the right

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:BeginUpdate()
		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:FilterBarCaption := "`<r>` + value"
		oPivot:FilterBarPromptVisible := 1280/*exFilterBarShowCloseOnRight+exFilterBarToggle*/
		oPivot:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
114:
How can I get the number of results/items being shown in the control's filter bar (sample 4)

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:BeginUpdate()
		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:FilterBarFont := oPivot:Font()
		oPivot:FilterBarPrompt := Transform(oPivot:FormatABC("`<b>` + value",oPivot:FilterBarPrompt()),"")
		oPivot:FilterBarCaption := "`<b><r>` + value + `</b><fgcolor=808080>` + ( matchitemcount < 0 ? ( ( len(value) ? `<br>` : `` ) + `<r>` + abs(matchitemcount + 1) + ` result(s)` ) : (`<fgcolor=808080>`+ itemcount + ` item(s)`) )"
		oPivot:FilterBarPromptVisible := 3591/*exFilterBarCompact+exFilterBarShowCloseOnRight+exFilterBarShowCloseIfRequired+exFilterBarCaptionVisible+exFilterBarVisible+exFilterBarPromptVisible*/
		oPivot:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
113:
How can I get the number of results being shown in the control's filter bar (sample 3)

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:BeginUpdate()
		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:FilterBarFont := oPivot:Font()
		oPivot:FilterBarCaption := "`<b><r>` + value + `</b><fgcolor=808080>` + ( matchitemcount < 0 ? ( ( len(value) ? `<br>` : `` ) + `<r>` + abs(matchitemcount + 1) + ` result(s)` ) : ``)"
		oPivot:FilterBarPromptVisible := 2055/*exFilterBarCompact+exFilterBarCaptionVisible+exFilterBarVisible+exFilterBarPromptVisible*/
		oPivot:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
112:
How can I get the number of results being shown in the control's filter bar (sample 2, compact)

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:BeginUpdate()
		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:FilterBarFont := oPivot:Font()
		oPivot:FilterBarCaption := "`<b><r>` + value + `</b><fgcolor=808080>` + ( matchitemcount < 0 ? `<off -4> ` + abs(matchitemcount + 1) + ` result(s)` : ``)"
		oPivot:FilterBarPromptVisible := 2071/*exFilterBarCompact+exFilterBarSingleLine+exFilterBarCaptionVisible+exFilterBarVisible+exFilterBarPromptVisible*/
		oPivot:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
111:
How can I get the number of results being shown in the control's filter bar (sample 1)

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:BeginUpdate()
		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:FilterBarFont := oPivot:Font()
		oPivot:FilterBarCaption := "`<b>` + value + `</b><r><fgcolor=808080>` + ( matchitemcount < 0 ? abs(matchitemcount + 1) + ` result(s)` : ``)"
		oPivot:FilterBarPromptVisible := 7/*exFilterBarCaptionVisible+exFilterBarVisible+exFilterBarPromptVisible*/
		oPivot:EndUpdate()

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

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:BeginUpdate()
		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:LinesAtRoot := -1/*exLinesAtRoot*/
		oPivot:FilterInclude := 1/*exItemsWithChilds*/
		oPivot:FilterBarFont := oPivot:Font()
		oPivot:FilterBarCaption := "`<fgcolor=0000FF><i>value/current</i></fgcolor>: <fgcolor=808080>` + value + `</fgcolor>` + `<br><fgcolor=0000FF><i>available</i></fgcolor>: ` + available + `<br><fgcolor=0000FF><i>allui</i></fgcolor>: ` + allui + `<br><fgcolor=0000FF><i>all</i></fgcolor>: ` + all + `<br><fgcolor=0000FF><i>itemcount</i></fgcolor>: <fgcolor=808080>` + itemcount + `</fgcolor>`+ `<br><fgcolor=0000FF><i>visibleitemcount</i></fgcolor>: <fgcolor=808080>` + visibleitemcount + `</fgcolor>`+ `<br><fgcolor=0000FF><i>matchitemcount</" +;
		"i></fgcolor>: <fgcolor=808080>` + matchitemcount + `</fgcolor>`+ `<br><fgcolor=0000FF><i>promptpattern</i></fgcolor>: <fgcolor=808080>` + promptpattern + `</fgcolor>`+ `<br><fgcolor=0000FF><i>leafitemcount</i></fgcolor>: <fgcolor=808080>` + leafitemcount + `</fgcolor>`"
		oPivot:FilterBarPromptPattern := "USA"
		oPivot:FilterBarPromptVisible := 7/*exFilterBarCaptionVisible+exFilterBarVisible+exFilterBarPromptVisible*/
		oPivot:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
109:
I am using filter prompt feature, and also column's filter, just wondering if possible to compact displaying the filter bar so it won't show on multiple lines

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:BeginUpdate()
		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:FilterBarFont := oPivot:Font()
		oPivot:FilterBarCaption := "`<r><i><fgcolor=808080><upline><solidline><sha ;;0>` + value"
		oPivot:FilterBarPromptPattern := "USA"
		oPivot:FilterBarPromptVisible := 2067/*exFilterBarCompact+exFilterBarSingleLine+exFilterBarVisible+exFilterBarPromptVisible*/
		oPivot:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
108:
Just wondering if it is possible to show the filter bar's close button on the right ( sample 2 )

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:BeginUpdate()
		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:FilterBarPromptVisible := 1281/*exFilterBarShowCloseOnRight+exFilterBarToggle+exFilterBarPromptVisible*/
		oPivot:FilterBarPrompt := Transform(oPivot:FormatABC("`<r>` + value",oPivot:FilterBarPrompt()),"")
		oPivot:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
107:
How can I change the visual appearance of the filter bar's close button (EBN)

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:BeginUpdate()
		oAppearance := oPivot:VisualAppearance()
			oAppearance:Add(1,"gBFLBCJwBAEHhEJAAEhABHQDg6AADACAxRDgMQBQKAAzAJBIYhiG4cYCgMZhXDOCYXABCEYRXBIZQ7BKNIxjSJ5BhIAAyDSJMjSRJUEhqGCWYDleYYYAKHIMQLOg7IJjyI4/SJAYCydKAWhxIaZKJHCZoEDaTAADCNVAQp6MEIJVbVEI0e79OgBLp/Z7kECIJJAaRjHQdJxGLA8EhtCQhCZteK6SgMKJYXhWQYRXI1JwvMBrWrdQjiOYELQtMKmSZNLYGG4dR5SVJbcYhSYsRRFMoyDIOXYDLKsdYqSpXIThObEGgaPqJYjsUjCMKnR7HVIURrBPC9TBPE69ZgmC6ucKPX51ShKFaBWDZcwFAS+UBuYCAILiEAQGZ1XT8OROicbgJgSTJRlCaZeDsHY7QGR4xkSYp3CaExZAQMgalQYAwjCAAfBANxcA2TgKAUOpDCGFhKg0RpXCwCwDHQHQHEyAIkCkOhbFOGA8A8DohBgRg9AccZcn8EpEjMLI2C2" +;
		"DYxAgQgvAIUIVkoAAPBQDJlECTZ3CCYwDACQwUA8A5MCAWAWDiQi4l8aQOEgLJuBgBgDmYFAzEoIoIl0WALgKYJbBABADAAHgHg8VAMmqCQQDMXABAATYwTmNwBDATJXAiAgjHmNQ5lgQ5QEQEQMmcWg/GwD5ylyNw2gMcJcjsBgBgOQQDDhRpVAMMwnDBFw1B0Ax8D0DxOmmJJIGQTY5hGMAwkwM4CAYLZAmAOJnAqAojiIGg6iieYkmeAYOHaKJDCyCwjH6AoggsQpQliAJLhgaJ0CESBTnyDwjk+cg4g4P5IHIHJ+BWRRzlYWAxiOUxihsY4KjKLJRGqC44FCegkkkM58iAKAPnIWIWD8SRSFSfQnkmewUhYP4GiGKJ7G0TIbCSUoggqUo0lAQ4LnEcBcD8Coiiif4nE+eAAn2HpOkcFJqi4T5SkyMw/kqQown8IBIBOdA+A+DJrBqVxXEqYo4lCApLhGHBnD8S4ymyfxmg+cwQkQP5egOUZIWoEA" +;
		"kjIeIPBMBJBD+TBjBifwvkuc58hQJQPmFrYykkchclSApKjGOBuD+TRDFCfw3mmIxNi8FxFlOXhVC4aYDFyPgvg2YBcBcLZGCGCJ0DSLRzGSWQ/lmY5+mEP5gmMDBZRSMRsFsOxMhMJJ/DsTpTnwaQaE+N5ojuNhdEYNI5C4TZJO1GRDmCaxnA2Yx4n8IpIjOTBQBQC5TgyYw7gUYRYikC0BYRwsDQBoB8eA6Q2hsE0BUXgywZtYCyHMKwnxSAhAQHkIQhRrBaDsCwA4ERiB2EWAIYIXhhiVEgAEUYwwYjyASLge4FhHgRDkM8OQih0jWPkGgBBAQ")
		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:FilterBarPromptVisible := 257/*exFilterBarToggle+exFilterBarPromptVisible*/
		oPivot:SetProperty("Background",1/*exFooterFilterBarButton*/,0x1000000)
		oPivot:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
106:
How can I change the visual appearance of the filter bar's close button (solid)

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:BeginUpdate()
		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:FilterBarPromptVisible := 1/*exFilterBarPromptVisible*/
		oPivot:SetProperty("Background",1/*exFooterFilterBarButton*/,AutomationTranslateColor( GraMakeRGBColor  ( { 255,0,0 } )  , .F. ))
		oPivot:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
105:
Is it possible to prevent definitely showing the filter bar's close button

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:BeginUpdate()
		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:FilterBarPromptVisible := 1/*exFilterBarPromptVisible*/
		oPivot:SetProperty("Background",1/*exFooterFilterBarButton*/,-1)
		oPivot:EndUpdate()

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:BeginUpdate()
		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:FilterBarPromptVisible := 513/*exFilterBarShowCloseIfRequired+exFilterBarPromptVisible*/
		oPivot:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
103:
The control's filter bar is not closed once I click the close button (toggle)
#include "AppEvent.ch"
#include "ActiveX.ch"

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:BeginUpdate()
		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:FilterBarCaption := "`<r><fgcolor=808080>` + value"
		oPivot:FilterBarPromptPattern := "USA"
		oPivot:FilterBarPromptVisible := 2323/*exFilterBarCompact+exFilterBarToggle+exFilterBarSingleLine+exFilterBarVisible+exFilterBarPromptVisible*/
		oPivot:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
102:
How can I display the control's filter on a single line

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:BeginUpdate()
		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:FilterBarCaption := "len(value) ? `filter for: <fgcolor 808080>` + value  : `<fgcolor 808080>no filter`"
		oPivot:FilterBarPromptVisible := 18/*exFilterBarSingleLine+exFilterBarVisible*/
		oPivot:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
101:
How can I display the control's filter on a single line (prompt-combined)

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:BeginUpdate()
		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:FilterBarCaption := "`<r>` + value"
		oPivot:FilterBarPromptVisible := 2067/*exFilterBarCompact+exFilterBarSingleLine+exFilterBarVisible+exFilterBarPromptVisible*/
		oPivot:EndUpdate()

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

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

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

		oPivot:BeginUpdate()
		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:FilterBarPromptVisible := 1/*exFilterBarPromptVisible*/
		oPivot:FilterBarPromptPattern := "USA"
		oPivot:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
99:
Is it possible to prevent closing the control's filter bar, so it is always shown (prompt-combined)

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:BeginUpdate()
		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:FilterBarPromptPattern := "USA"
		oPivot:FilterBarPromptVisible := 3/*exFilterBarVisible+exFilterBarPromptVisible*/
		oPivot: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 closing the control's filter bar, so it is always shown (prompt)

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:BeginUpdate()
		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:FilterBarPromptVisible := 1/*exFilterBarPromptVisible*/
		oPivot:FilterBarPromptPattern := "USA"
		oPivot:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
97:
Is it possible to prevent closing the control's filter bar, so it is always shown

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:BeginUpdate()
		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:FilterBarCaption := "len(value) = 0 ? `<fgcolor=808080>no filter` : value"
		oPivot:FilterBarPromptVisible := 2/*exFilterBarVisible*/
		oPivot:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
96:
How can I find if the control is running in DPI mode
#include "AppEvent.ch"
#include "ActiveX.ch"

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		DevOut( Transform(oPivot:FormatABC("dpi = 1 ? `normal/stretch mode` : `dpi mode`"),"") )

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
95:
If I connect it to a datasource, all works perfectly but the records that I see in the control is a little number of total of the recordset. I need to show all 60.000 rows of the recordset without click on the [...] button. Itís possible to setting up this parameters
#include "AppEvent.ch"
#include "ActiveX.ch"

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:DisplayPivotData := -1
		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
94:
How do I change the drop down filter icon/button (white)

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:BeginUpdate()
		oAppearance := oPivot:VisualAppearance()
			oAppearance:Add(2,"gBFLBCJwBAEHhEJAAEhABX8GACAADACAxSDEMQBQKAAzQFAYbhgHCGAAGQaBUgmFgAQhFcZQSKUOQTDKNYykCIRSDUJYkSZEIyjBI8ExXFqNACkGKwYgmNYiTLAcgANJ0WBaGIZJ4gOT5fDKMoEDRRYADFCscwxJybQAqGQKKb+VgAVY/cTyBIAEQSKA0TDOQ5TSKWB4JPZQRBEbZMNBtBIUJquKaqShdQJCU5FdY3Xblez9P7AMBwLFEC4NQ8YNYuPhjR4dRTIMhvVAsUArFh8Zg9GZZFjmDIDT4ydBLTQwcyVIKnP5qOa6XbmPoCQDYKxZHYxPzVDa3axuL76dqCAT7XrXNy1TbNRrzQKfcJqfCbdw2YaDZLOOT3fjuI4hhKaRzFAHJ+jYQ4xHuY4gHuGIXGeExqC8Tp6C+PoEm+G5ImycRgh0XwvDGa5rgOeoejyXwnFeQp2mkf5ClgBB9gCWIYAwfYAEKV58mkdwOggNArgOXY2EWLoDkKOA0mg" +;
		"bhOGgZApgaSBIHWSYHSmbApgYThmESZYJkIeIkgeCpfliLIHgpMIcmUYYYmODAlg2SI4mWfRfGOEguDcCRjFYAJihCQhJBSDoRmONgKEcI4kFCEJhhOVYTmYnAlEAQhWBMJYJGYWoWmWSR2F6F5lnkWAQhUAgpEieRWEuSYkjWGpmkmNhuhuZwJkYcocmaaYkjyEhngnUA6lEFAlAEgI=")
			oAppearance:Add(1,"CP:2 -6 -4 2 4")
		oPivot:SetProperty("Background",0/*exHeaderFilterBarButton*/,0x1000000)
		oPivot:SetProperty("Background",32/*exCursorHoverColumn*/,oPivot:BackColor())
		oPivot:HeaderVisible := .T.
		oPivot:HeaderHeight := 24
		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:DisplayFilterList := 288/*exShowCheckBox+exSortItemsAsc*/
		oPivot:PivotBarVisible := 1/*exPivotBarVisible*/
		oPivot:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
93:
How do I change the drop down filter icon/button (black)

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:BeginUpdate()
		oAppearance := oPivot:VisualAppearance()
			oAppearance:Add(1,"gBFLBCJwBAEHhEJAAEhABXUIQAAYAQGKIcBiAKBQAGYBIJDEMgzDDAUBjKKocQTC4AIQjCK4JDKHYJRpHEZyCA8EhqGASRAFUQBYiWE4oSpLABQaK0ZwIGyRIrkGQgQgmPYDSDNU4zVIEEglBI0TDNczhNDENgtGYaJqHIYpZBcM40TKkEZoSIITZcRrOEBiRL1S0RBhGcRUHZlWzdN64LhuK47UrWdD/XhdVzXRbjfz1Oq+bxve48Br7A5yYThdr4LhOFQ3RjIL4xbIcUwGe6VZhjOLZXjmO49T69HTtOCYBEBA")
		oPivot:SetProperty("Background",0/*exHeaderFilterBarButton*/,0x1000000)
		oPivot:SetProperty("Background",32/*exCursorHoverColumn*/,-1)
		oPivot:SetProperty("BackColorHeader",AutomationTranslateColor( GraMakeRGBColor  ( { 0,0,0 } )  , .F. ))
		oPivot:SetProperty("ForeColorHeader",AutomationTranslateColor( GraMakeRGBColor  ( { 255,255,255 } )  , .F. ))
		oPivot:HeaderVisible := .T.
		oPivot:HeaderHeight := 22
		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:DisplayFilterList := 288/*exShowCheckBox+exSortItemsAsc*/
		oPivot:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
92:
How do I prevent showing the control's BackColorAlternate property on empty / non-items part of the control

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:BeginUpdate()
		oPivot:SetProperty("BackColorAlternate",0x7ff0f0f0)
		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:PivotRows := "12"
		oPivot:PivotColumns := "sum(5)"
		oPivot:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
91:
How can I find out if the user clicks the grid's header
PROCEDURE OnMouseMove(oPivot,Button,Shift,X,Y)
	DevOut( "Type of ColumnFromPoint: " )
	DevOut( Transform(oPivot:ColumnFromPoint(-1,-1),"") )
	DevOut( " should not be VT_NULL" )
	DevOut( "Type of ValueFromPoint: " )
	DevOut( Transform(oPivot:ValueFromPoint(-1,-1),"") )
	DevOut( " should be VT_NULL" )
RETURN

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

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

		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:PivotRows := "0"
		oPivot:PivotColumns := "sum(5)"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
90:
What should I set FormatPivotHeader to, to show it on the columns header only

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:BeginUpdate()
		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:PivotRows := "0"
		oPivot:PivotColumns := "sum(5)/12"
		oPivot:FormatPivotHeader := "(iaggregate ? ( caption + ` <off -6><font ;6>(` + lower(caggregate) + ')</off></font>') : caption) + ( ( display=1 ? `<c>Date: <b><upline><dotline>` + date(`now`) : `` ) + `</dotline> </b>` )"
		oPivot:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
89:
What should I set FormatPivotHeader to, to show "Report Generated on 7/9/2016 14:20" etc when the report is executed (ie the date and time will change)

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:BeginUpdate()
		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:PivotRows := "0"
		oPivot:PivotColumns := "sum(5)/12"
		oPivot:FormatPivotHeader := "(iaggregate ? (`<b>` + caption + `</b> <off -6><font ;6>(` + lower(caggregate) + ')</off></font>') : caption) + `<r>ReportDate: ` + date(`now`)"
		oPivot:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
88:
Is it possible to display aggregate result on parent rows as well

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:BeginUpdate()
		oPivot:HeaderHeight := 22
		oPivot:DefaultItemHeight := 20
		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:PivotRows := "12[bold],0"
		oFormatConditionalAppearance := oPivot:FormatConditionalAppearances():Add("nempty","not empty","")
			oFormatConditionalAppearance:Expression := "len(value) != 0"
			oFormatConditionalAppearance:SetProperty("BackColor",AutomationTranslateColor( GraMakeRGBColor  ( { 240,240,240 } )  , .F. ))
		oPivot:PivotColumns := "sum(5)[nempty]/6"
		oPivot:IncludeExpandColumn := 1/*exIncludeExpandColumn*/
		oPivot:DrawGridLines := 0/*exNoLines*/
		oPivot:ShowBranchRows := 33/*exBranchIncludeAggregate+exBranchTree*/
		oPivot:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
87:
How do I show expanded/collapsed rows

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:BeginUpdate()
		oPivot:HeaderHeight := 22
		oPivot:DefaultItemHeight := 20
		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:PivotRows := "12[bold],0"
		oFormatConditionalAppearance := oPivot:FormatConditionalAppearances():Add("nempty","not empty","")
			oFormatConditionalAppearance:Expression := "len(value) != 0"
			oFormatConditionalAppearance:SetProperty("BackColor",AutomationTranslateColor( GraMakeRGBColor  ( { 240,240,240 } )  , .F. ))
		oPivot:PivotColumns := "sum(5)[nempty]/6"
		oPivot:IncludeExpandColumn := 1/*exIncludeExpandColumn*/
		oPivot:DrawGridLines := 0/*exNoLines*/
		oPivot:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
86:
How do I show expanded/collapsed columns

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:BeginUpdate()
		oPivot:HeaderHeight := 22
		oPivot:DefaultItemHeight := 20
		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:PivotRows := "0"
		oFormatConditionalAppearance := oPivot:FormatConditionalAppearances():Add("nempty","not empty","")
			oFormatConditionalAppearance:Expression := "len(value) != 0"
			oFormatConditionalAppearance:SetProperty("BackColor",AutomationTranslateColor( GraMakeRGBColor  ( { 240,240,240 } )  , .F. ))
		oPivot:PivotColumns := "sum(5)[nempty]/12"
		oPivot:FormatPivotHeader := "(iaggregate ? ( caption + ` <r>[` + lower(caggregate) + `]` ) : caption)"
		oPivot:IncludeExpandColumn := 1/*exIncludeExpandColumn*/
		oPivot:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
85:
Where you have say "Sum of ...." as the first row heading of the pivot are there and options to be able to change this text as a whole

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:BeginUpdate()
		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:PivotRows := "0"
		oFormatConditionalAppearance := oPivot:FormatConditionalAppearances():Add("nempty","not empty","")
			oFormatConditionalAppearance:Expression := "len(value) != 0"
			oFormatConditionalAppearance:SetProperty("BackColor",AutomationTranslateColor( GraMakeRGBColor  ( { 240,240,240 } )  , .F. ))
		oPivot:PivotColumns := "sum(5)[nempty]/12"
		oPivot:FormatPivotHeader := "(iaggregate ? (`<b>` + caption + `</b> <off -6><font ;6>(` + lower(caggregate) + ' )') : caption)"
		oPivot:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
84:
How can I get the data column from the cursor
PROCEDURE OnMouseMove(oPivot,Button,Shift,X,Y)
	DevOut( "DataColumn" )
	DevOut( Transform(oPivot:DataColumnFromPoint(-1,-1),"") )
RETURN

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

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

		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:PivotRows := "0"
		oPivot:PivotColumns := "sum(5)[content=numeric]"
		oPivot:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
83:
Is there any way for the user to change the alignment at runtime (using excontextmenu)

PROCEDURE OnRClick(oPivot)
	LOCAL oColumn
	LOCAL c
	LOCAL h
	h := oPivot:DataColumns:Item(5):Alignment()
	c := CreateObject("Exontrol.ContextMenu")
		c:FlatImageWidth := 0
		c:ToString := "Alignment[align=1][dis],[group=0x71](Left[typ=2][grp=100][close=0][id=0],Center[typ=2][grp=100][close=0][id=1],Right[typ=2][grp=100][close=0][id=2])"
		c:item(h):Checked := .T.
		h := c:Select()
	oColumn := oPivot:DataColumns:Item(5)
		oColumn:Alignment := h
		oColumn:HeaderAlignment := h
	oPivot:Refresh()
RETURN

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:RClick := {|| OnRClick(oPivot)} /*Occurs once the user right clicks the control.*/

		oPivot:PivotBarVisible := 3609/*exPivotBarAllowResizeColumns+exPivotBarAllowUndoRedo+exPivotBarAutoUpdate+exPivotBarShowTotals+exPivotBarAutoFit+exPivotBarVisible*/
		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oColumn := oPivot:DataColumns:Item(5)
			oColumn:Alignment := 2/*RightAlignment*/
			oColumn:HeaderAlignment := 2/*RightAlignment*/
		oPivot:PivotRows := "0"
		oPivot:PivotColumns := "sum(5)[content=numeric]"
		oPivot:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
82:
Is there any way for the user to change the alignment at runtime

PROCEDURE OnRClick(oPivot)
	LOCAL oColumn
	DevOut( "The column gets aligned to the center" )
	oColumn := oPivot:DataColumns:Item(5)
		oColumn:Alignment := 1/*CenterAlignment*/
		oColumn:HeaderAlignment := 1/*CenterAlignment*/
	oPivot:Refresh()
RETURN

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:RClick := {|| OnRClick(oPivot)} /*Occurs once the user right clicks the control.*/

		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oColumn := oPivot:DataColumns:Item(5)
			oColumn:Alignment := 2/*RightAlignment*/
			oColumn:HeaderAlignment := 2/*RightAlignment*/
		oPivot:PivotRows := "0"
		oPivot:PivotColumns := "sum(5)[content=numeric]"
		oPivot:Refresh()

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

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oColumn := oPivot:DataColumns:Item(5)
			oColumn:Alignment := 2/*RightAlignment*/
			oColumn:HeaderAlignment := 2/*RightAlignment*/
		oPivot:PivotRows := "0"
		oPivot:PivotColumns := "sum(5)[content=numeric]"
		oPivot:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
80:
How can I display the control's content on an single A3 paper size, when using PDF format
#include "AppEvent.ch"
#include "ActiveX.ch"

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:BeginUpdate()
		oPivot:VisualAppearance():Add(1,"c:\exontrol\images\normal.ebn")
		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:FormatConditionalAppearances:Item("positive"):SetProperty("BackColor",0x100ff00)
		oPivot:FormatConditionalAppearances:Item("negative"):SetProperty("BackColor",0x10000ff)
		oPivot:PivotRows := "0"
		oPivot:PivotColumns := "sum(5)[positive,negative]/12"
		oPivot:ExpandAll()
		var_CopyTo := oPivot:CopyTo("C:\Temp\Preview.pdf|11.69 in x 16.53 in||single")
		DevOut( "Look for C:\Temp\Preview.pd file." )
		oPivot:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
79:
How can I display the control's content on an A3 paper size, when using PDF format
#include "AppEvent.ch"
#include "ActiveX.ch"

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:BeginUpdate()
		oPivot:VisualAppearance():Add(1,"c:\exontrol\images\normal.ebn")
		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:FormatConditionalAppearances:Item("positive"):SetProperty("BackColor",0x100ff00)
		oPivot:FormatConditionalAppearances:Item("negative"):SetProperty("BackColor",0x10000ff)
		oPivot:PivotRows := "0"
		oPivot:PivotColumns := "sum(5)[positive,negative]/12"
		oPivot:ExpandAll()
		var_CopyTo := oPivot:CopyTo("C:\Temp\Preview.pdf|11.69 in x 16.53 in")
		DevOut( "Look for C:\Temp\Preview.pd file." )
		oPivot:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
78:
How can I export the control's content to a PDF document (method 1)
#include "AppEvent.ch"
#include "ActiveX.ch"

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:BeginUpdate()
		oPivot:VisualAppearance():Add(1,"c:\exontrol\images\normal.ebn")
		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:FormatConditionalAppearances:Item("positive"):SetProperty("BackColor",0x100ff00)
		oPivot:FormatConditionalAppearances:Item("negative"):SetProperty("BackColor",0x10000ff)
		oPivot:PivotRows := "0"
		oPivot:PivotColumns := "sum(5)[positive,negative]/12"
		oPivot:ExpandAll()
		oPivot:EndUpdate()
		oPrint := CreateObject("Exontrol.Print")
			oPrint:PrintExt := oPivot
			oPrint:CopyTo("c:/temp/xtest.pdf")
		DevOut( "Look for C:\Temp\xtest.pdf file." )
		oPivot:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
77:
How can I export the control's content to a PDF document (method 2)
#include "AppEvent.ch"
#include "ActiveX.ch"

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:BeginUpdate()
		oPivot:VisualAppearance():Add(1,"c:\exontrol\images\normal.ebn")
		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:FormatConditionalAppearances:Item("positive"):SetProperty("BackColor",0x100ff00)
		oPivot:FormatConditionalAppearances:Item("negative"):SetProperty("BackColor",0x10000ff)
		oPivot:PivotRows := "0"
		oPivot:PivotColumns := "sum(5)[positive,negative]/12"
		oPivot:ExpandAll()
		var_CopyTo := oPivot:CopyTo("c:/temp/xtest.pdf")
		DevOut( "Look for C:\Temp\xtest.pdf file." )
		oPivot:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
76:
Does / could the control have a read-only mode by where I could load the data and layout and just use the control to display it and allow the user to scroll around it / print it but not change it
#include "AppEvent.ch"
#include "ActiveX.ch"

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:PivotRows := "0"
		oPivot:PivotColumns := "sum(5)[content=numeric]"
		oPivot:DisplayFilterList := 2/*exNoItems*/
		oPivot:PivotBarVisible := 268435977/*exPivotBarReadOnly+exPivotBarAutoUpdate+exPivotBarAutoFit+exPivotBarVisible*/
		oPivot:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
75:
Is it possible to edit the conditional-expression at runtime

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:BeginUpdate()
		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oFormatConditionalAppearance := oPivot:FormatConditionalAppearances():Add("custom","custom","")
			oFormatConditionalAppearance:Bold := .T.
			oFormatConditionalAppearance:FontSize := 12
			oFormatConditionalAppearance:Expression := "value > 2000"
			oFormatConditionalAppearance:ContextEditExpression := .T.
		oPivot:PivotRows := "0"
		oPivot:PivotColumns := "sum(5)[custom]/12"
		oPivot:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
74:
How can I highlight values using EBN colors

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:BeginUpdate()
		oPivot:VisualAppearance():Add(1,"c:\exontrol\images\normal.ebn")
		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:FormatConditionalAppearances:Item("positive"):SetProperty("BackColor",0x100ff00)
		oPivot:FormatConditionalAppearances:Item("negative"):SetProperty("BackColor",0x10000ff)
		oPivot:PivotRows := "0"
		oPivot:PivotColumns := "sum(5)[positive,negative]/12"
		oPivot:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
73:
How do I mark not-empty values in the chart

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:BeginUpdate()
		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:PivotRows := "0"
		oFormatConditionalAppearance := oPivot:FormatConditionalAppearances():Add("nempty","not empty","")
			oFormatConditionalAppearance:Expression := "len(value) != 0"
			oFormatConditionalAppearance:SetProperty("BackColor",AutomationTranslateColor( GraMakeRGBColor  ( { 240,240,240 } )  , .F. ))
		oPivot:PivotColumns := "sum(5)[nempty]/12"
		oPivot:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
72:
How can I highlight negative and positive values in the same chart

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:BeginUpdate()
		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:PivotRows := "0"
		oPivot:PivotColumns := "sum(5)[negative,positive]/12"
		oPivot:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
71:
How can I highlight values that starts with a letter

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:BeginUpdate()
		oFormatConditionalAppearance := oPivot:FormatConditionalAppearances():Add("f","starts with f","lower(value) startwith `f`")
			oFormatConditionalAppearance:Expression := "lower(value) startwith `f`"
			oFormatConditionalAppearance:SetProperty("Shadow",AutomationTranslateColor( GraMakeRGBColor  ( { 1,0,0 } )  , .F. ))
			oFormatConditionalAppearance:ShadowOffset := 0
		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:PivotRows := "0[f]"
		oPivot:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
70:
How can I mark values greater than a value, 100 for instance

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:BeginUpdate()
		oFormatConditionalAppearance := oPivot:FormatConditionalAppearances():Add("greater100",">100","value > 100")
			oFormatConditionalAppearance:Expression := "( dbl(value) != 0 ) ? (value > 100) : 0"
			oFormatConditionalAppearance:SetProperty("ForeColor",AutomationTranslateColor( GraMakeRGBColor  ( { 255,0,0 } )  , .F. ))
		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:PivotRows := "0"
		oPivot:PivotColumns := "sum(5)[greater100,content=numeric]"
		oPivot:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
69:
How can I remove the Conditional context-menu

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:BeginUpdate()
		oPivot:PivotBarVisible := 4059/*exPivotBarAllowResizeColumns+exPivotBarAllowUndoRedo+exPivotBarAutoUpdate+exPivotBarAllowFormatContent+exPivotBarAllowFormatAppearance+exPivotBarAllowValues+exPivotBarShowTotals+exPivotBarAutoFit+exPivotBarSizable+exPivotBarVisible*/
		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:PivotRows := "0"
		oPivot:PivotColumns := "sum(5)[content=numeric]"
		oPivot:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
68:
How do change the way the negative/positive numbers show when using conditional-format

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oFormatConditionalAppearance,oFormatConditionalAppearance1
	LOCAL oPivot

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:BeginUpdate()
		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oFormatConditionalAppearance := oPivot:FormatConditionalAppearances:Item("negative")
			oFormatConditionalAppearance:SetProperty("BackColor",AutomationTranslateColor( GraMakeRGBColor  ( { 0,0,0 } )  , .F. ))
			oFormatConditionalAppearance:SetProperty("ForeColor",AutomationTranslateColor( GraMakeRGBColor  ( { 128,128,128 } )  , .F. ))
			oFormatConditionalAppearance:FontSize := 8
		oFormatConditionalAppearance1 := oPivot:FormatConditionalAppearances:Item("positive")
			oFormatConditionalAppearance1:SetProperty("BackColor",AutomationTranslateColor( GraMakeRGBColor  ( { 0,0,0 } )  , .F. ))
			oFormatConditionalAppearance1:SetProperty("ForeColor",AutomationTranslateColor( GraMakeRGBColor  ( { 1,0,0 } )  , .F. ))
			oFormatConditionalAppearance1:FontSize := 11
		oPivot:PivotRows := "0"
		oPivot:PivotColumns := "sum(5)[negative,positive,content=numeric]"
		oPivot:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
67:
How do I highlight the negative values with white color or black

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:BeginUpdate()
		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oFormatConditionalAppearance := oPivot:FormatConditionalAppearances:Item("negative")
			oFormatConditionalAppearance:SetProperty("BackColor",AutomationTranslateColor( GraMakeRGBColor  ( { 1,0,0 } )  , .F. ))
			oFormatConditionalAppearance:SetProperty("ForeColor",AutomationTranslateColor( GraMakeRGBColor  ( { 255,255,255 } )  , .F. ))
		oPivot:PivotRows := "0"
		oPivot:PivotColumns := "sum(5)[negative,content=numeric]"
		oPivot:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
66:
Does your control support conditional-format, so I can highlight certain values

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:BeginUpdate()
		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:PivotRows := "0"
		oPivot:PivotColumns := "sum(5)[negative,content=numeric]"
		oPivot:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
65:
How do I add a computed column/field, like VAT for instance (method 2)

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:BeginUpdate()
		oAggregates := oPivot:Aggregates()
			oAggregates:Add("vat19","sum","VAT 19%","VAT 19%"):FormatValue := "value * 0.19"
			oAggregates:Add("vat24","sum","VAT 24%","VAT 24%"):FormatValue := "value * 0.24"
		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:PivotRows := "0"
		oPivot:PivotColumns := "sum(5)[content=numeric],vat19(5)[bold,content=numeric],vat24(5)[bold,content=numeric]"
		oPivot:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
64:
How do I add a computed column/field, like VAT for instance (method 1)

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oFormatContent,oFormatContent1
	LOCAL oPivot

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:BeginUpdate()
		oFormatContent := oPivot:FormatContents():Add("vat19","VAT 19%")
			oFormatContent:Expression := "len(value) ? ((value * 1.19) format '') : ''"
		oFormatContent1 := oPivot:FormatContents():Add("vat24","VAT 24%")
			oFormatContent1:Expression := "len(value) ? ((value * 1.24) format '') : ''"
		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:PivotRows := "0"
		oPivot:PivotColumns := "sum(5)[content=numeric],sum(5)[bold,content=vat19],sum(5)[bold,content=vat24]"
		oPivot:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
63:
How can I hide some values for instance negative values

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

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oFormatContent,oFormatContent1
	LOCAL oPivot

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:BeginUpdate()
		oFormatContent := oPivot:FormatContents():Add("hiden","hide negative")
			oFormatContent:Expression := "value < 0 ? `` : value"
		oFormatContent1 := oPivot:FormatContents():Add("hidep","hide positive")
			oFormatContent1:Expression := "value > 0 ? `` : value"
		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:PivotRows := "0"
		oPivot:PivotColumns := "sum(5)[bold],sum(5)[content=hiden],sum(5)[content=hidep]"
		oPivot:EndUpdate()

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

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:BeginUpdate()
		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:PivotRows := "0"
		oPivot:PivotColumns := "sum(5)/12"
		oPivot:Layout := "Columns =1;C0.Width = 64"
		oPrint := CreateObject("Exontrol.Print")
			DevOut( oPrint:Decode64TextW(oPivot:Layout()) )
		oPivot:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
61:
How can I specify the sorting type, so the column gets sorted as numeric for instance

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:Import("1,1#11,11#101,101","eor='#' eof=',' hdr=0")
		oColumn := oPivot:DataColumns:Item(0)
			oColumn:Caption := "Numeric"
			oColumn:SortType := 1/*SortNumeric*/
		oPivot:DataColumns:Item(1):Caption := "String (default)"
		oPivot:PivotRows := "0"
		oPivot:Refresh()

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:PivotRows := "0"
		oPivot:PivotBarVisible := 3675/*exPivotBarAllowResizeColumns+exPivotBarAllowUndoRedo+exPivotBarAutoUpdate+exPivotBarAllowValues+exPivotBarShowTotals+exPivotBarAutoFit+exPivotBarSizable+exPivotBarVisible*/

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
59:
How do I get the captions of the columns
#include "AppEvent.ch"
#include "ActiveX.ch"

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		DevOut( Transform(oPivot:DataColumns:Count(),"") )
		DevOut( oPivot:DataColumns:Item(0):PivotCaption() )
		DevOut( oPivot:DataColumns:Item(0):Caption() )
		DevOut( oPivot:DataColumns:Item(1):PivotCaption() )
		DevOut( oPivot:DataColumns:Item(1):Caption() )

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
58:
How can I specify the default-format for a specified column, so it always shows as numeric for instance
#include "AppEvent.ch"
#include "ActiveX.ch"

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oColumn := oPivot:DataColumns:Item("Freight")
			oColumn:DefaultFormatContent := "numeric"
			oColumn:DefaultFormatAppearances := "bold"
			oColumn:SortOrder := 1/*SortAscending*/
			oColumn:SortType := 1/*SortNumeric*/
		oPivot:PivotTotalDefaultFormatContent := "currency"
		oPivot:PivotTotalDefaultFormatAppearances := "strikeout,bold"
		oPivot:PivotRows := "0"
		oPivot:PivotColumns := "sum(5)[bold,content=numeric]"
		oPivot:PivotTotals := "sum[strikeout,bold,content=currency]"
		oPivot:PivotColumnsFloatBarVisible := .T.
		oPivot:Refresh()

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

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:FormatContents():Add("percent","value + `%`")
		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:PivotRows := "5[content=percent]"
		oPivot:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
56:
How do I change the name for months in the drop-down filter window (localization)

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		DevOut( oPivot:Description(17/*exFilterBarDateMonths*/) )
		oPivot:SetProperty("Description",17/*exFilterBarDateMonths*/,"Ianuarie Februarie Martie Aprilie Mai Iunie Iulie August Septembrie Octombrie Noiembrie Decembrie")
		oPivot:SetProperty("Description",0/*exFilterBarAll*/,"(Toate)")
		oPivot:SetProperty("Description",1/*exFilterBarBlanks*/,"(Gol)")
		oPivot:SetProperty("Description",2/*exFilterBarNonBlanks*/,"(Plin)")
		oPivot:SetProperty("Description",3/*exFilterBarFilterForCaption*/,"Filtreaza:")
		oPivot:SetProperty("Description",16/*exFilterBarDateTodayCaption*/,"Azi")
		oPivot:SetProperty("Description",18/*exFilterBarDateWeekDays*/,"D L Ma Mi J V S")
		oPivot:SetProperty("Description",25/*exFilterBarExclude*/,"Exclud")
		oPivot:SetProperty("Description",26/*exColumnsFloatBar*/,"Coloane")
		oPivot:SetProperty("Description",11/*exFilterBarAnd*/,"si")
		oPivot:SetProperty("Description",12/*exFilterBarDate*/,"Data:")
		oPivot:SetProperty("Description",15/*exFilterBarDateTitle*/,"Data")
		oPivot:SetProperty("Description",13/*exFilterBarDateTo*/,"la")
		oPivot:SetProperty("Description",24/*exFilterBarNot*/,"nu")
		oPivot:SetProperty("Description",23/*exFilterBarOr*/,"sau")
		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:DataColumns:Item("OrderDate"):SortType := 2/*SortDate*/
		oPivot:PivotRows := "9"
		oPivot:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
55:
How can I scale and print programmatically the pivot table, to fit on one axis eg FitPageHeight but infinite width etc
#include "AppEvent.ch"
#include "ActiveX.ch"

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:PivotRows := "6"
		oPivot:PivotColumns := "sum(5)/3"
		oPivot:Refresh()
		oPrint := CreateObject("Exontrol.Print")
			oPrint:Options := "FitToPage = x 5"
			oPrint:PrintExts := oPivot
			oPrint:Preview()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
54:
How can I scale and print programmatically the pivot table, to fit on one axis eg FitPageWidth but infinite height etc
#include "AppEvent.ch"
#include "ActiveX.ch"

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:PivotRows := "6"
		oPivot:PivotColumns := "sum(5)/3"
		oPivot:Refresh()
		oPrint := CreateObject("Exontrol.Print")
			oPrint:Options := "FitToPage = 5 x"
			oPrint:PrintExts := oPivot
			oPrint:Preview()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
53:
How can I get the column from the cursor
PROCEDURE OnMouseMove(oPivot,Button,Shift,X,Y)
	DevOut( Transform(oPivot:ColumnFromPoint(-1,-1),"") )
RETURN

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

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

		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
52:
How can I get the value from the cursor
PROCEDURE OnMouseMove(oPivot,Button,Shift,X,Y)
	DevOut( Transform(oPivot:ValueFromPoint(-1,-1),"") )
RETURN

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

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

		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
51:
How can I specify a column to display HTML format

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:Import("Bold <b>1,Bold <b>2#Bold <b>3,Bold <b>4#Bold <b>5,Bold <b>6","eor='#' eof=',' hdr=0")
		oPivot:DataColumns:Item(0):HTML := .T.
		oPivot:DataColumns:Item(1):HTML := .T.
		oPivot:PivotRows := "0"
		oPivot:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
50:
Does your control supports scrolling by touching the screen

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		rs := CreateObject("ADOR.Recordset")
			rs:Open("Data","Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExPivot\Sample\Access2007\sample.accdb",3/*adOpenStatic*/,3/*adLockOptimistic*/)
		oPivot:DataSource := rs
		oPivot:AutoDrag := 4112/*exAutoDragScrollOnShortTouch+exAutoDragScroll*/

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
49:
How can I specify programatically the width of the pivot column ( first column )

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:BeginUpdate()
		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:PivotRows := "0"
		oPivot:PivotColumns := "sum(5)/12"
		oPivot:Layout := "Columns =1;C0.Width = 64"
		oPivot:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
48:
How can I show the total of each row, when columns are shown as expanded

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:BeginUpdate()
		oPivot:IncludeExpandColumn := 1/*exIncludeExpandColumn*/
		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:PivotRows := "0"
		oPivot:PivotColumns := "sum(5)/12"
		oPivot:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
47:
How can I prevent grouping by a specified column
#include "AppEvent.ch"
#include "ActiveX.ch"

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:DataColumns:Item("Freight"):AllowGroupBy := 0/*exGroupByNone*/

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
46:
How can I sort alphabetically the columns to be displayed in the context menu/floating panel

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:PivotBarVisible := 69595/*exPivotBarContextSortAscending+exPivotBarAllowResizeColumns+exPivotBarAllowUndoRedo+exPivotBarAutoUpdate+exPivotBarAllowFormatContent+exPivotBarAllowFormatAppearance+exPivotBarAllowValues+exPivotBarShowTotals+exPivotBarAutoFit+exPivotBarSizable+exPivotBarVisible*/
		oPivot:PivotColumnsSortOrder := 1/*exPivotColumnsAscending*/
		oPivot:PivotColumnsFloatBarVisible := .T.

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:AllowDrop := .F.

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
44:
Is it possible to allow incremental filtering on drop down filter window too, as I can on the control menus

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:PivotRows := "0"
		oPivot:DisplayFilterList := 42272/*exHideFilterPattern+exFilterListDefault*/

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
43:
How can I prevent showing the Filter For field in the drop down filter window

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:PivotRows := "0"
		oPivot:DisplayFilterList := 42272/*exHideFilterPattern+exFilterListDefault*/

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
42:
How can I display the numeric columns only when selecting a new aggregate, like SUM

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:PivotRows := "0[bold]"
		oPivot:PivotColumns := "sum(5)/12,count(5)/12"
		oPivot:DataColumns:Item("Freight"):SortType := 1/*SortNumeric*/

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

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:PivotRows := "0"
		oPivot:PivotColumns := "sum(5)/12"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
40:
I would like to always have the subtotals in the same row of the "father row". Could that be done

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:PivotRows := "0[bold],2"
		oPivot:PivotColumns := "sum(5)/12,count(5)/12"
		oPivot:ShowViewCompact := 35/*exViewCompactAggregates+exViewCompact*/
		oPivot:PivotTotals := "/sum,sum(0)"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
39:
Is there any way, when I change the filter of the column, it broadcast the filter to the other pivot columns that were duplicated

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:PivotRows := "0,2"
		oPivot:ShowBranchRows := 2/*exBranchCompact*/
		oPivot:PivotColumns := "sum(5)/12[filter='gBpNxjNh1MhlBoKNhpOZ0hJVNxpOhlMggKBhMZrMJnMoAgI='],count(5)/12[filter='gBpNxjNh1MhlBoKNhpOZ0hJVNxpOhlMggKBhMZrMJnMoAgI=']"
		oPivot:ShowViewCompact := 19/*exViewCompactKeepSettings+exViewCompact*/

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
38:
How can I summarize more fields in the same cell

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:PivotRows := "0,2"
		oPivot:ShowBranchRows := 2/*exBranchCompact*/
		oPivot:PivotColumns := "sum(5)/12,count(5)/12"
		oPivot:ShowViewCompact := 3/*exViewCompact*/

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
37:
How do I programmatically group by rows, in a compact way, no hierarchy lines

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:PivotRows := "0,2"
		oPivot:ShowBranchRows := 2/*exBranchCompact*/

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
36:
How do I programmatically group by rows

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:PivotRows := "0,1,2"
		oPivot:LinesAtRoot := -1/*exLinesAtRoot*/
		oPivot:HasLines := 1/*exSolidLine*/

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
35:
How do I programmatically group by columns

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:PivotRows := "0"
		oPivot:PivotColumns := "sum(5)/12;6"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
34:
How can I hide the add new button on the pivot bar

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:PivotBarVisible := 8155/*exPivotBarHideAddNew+exPivotBarAllowResizeColumns+exPivotBarAllowUndoRedo+exPivotBarAutoUpdate+exPivotBarAllowFormatContent+exPivotBarAllowFormatAppearance+exPivotBarAllowValues+exPivotBarShowTotals+exPivotBarAutoFit+exPivotBarSizable+exPivotBarVisible*/

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
33:
Is it possible to show the data that generated the result, when double clicking the row

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:BeginUpdate()
		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:PivotRows := "0[italic]"
		oPivot:PivotColumns := "count(0)[underline]"
		oPivot:PivotTotals := "count[bold,strikeout]"
		oPivot:ShowDataOnDblClick := .T.
		oPivot:EndUpdate()

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

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:HeaderHeight := 22
		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:DataColumns:Item("ShipCountry"):Caption := "ShipCountry<font ;7><off 6><sha ;;0>subscript"
		oPivot:DataColumns:Item("ShipRegion"):Caption := "ShipRegion<font ;7><off -6><sha ;;0>superscript"
		oPivot:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
31:
Is it possible to define a different background color for the pivot bar

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:SetProperty("Background",97/*exPivotBarBackColor*/,AutomationTranslateColor( GraMakeRGBColor  ( { 240,240,240 } )  , .F. ))

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
30:
How can I display an icon/image to Content sub-menu

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:Images("gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTqlVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/yNAOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=")
		oPivot:FormatContents():Item("numeric"):Name := "<img>1</img> Numeric"
		oPivot:PivotRows := "5[content=numeric]"

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

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:SetProperty("Background",20/*exSelBackColorFilter*/,AutomationTranslateColor( GraMakeRGBColor  ( { 255,0,0 } )  , .F. ))

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
28:
How can I display the column as date in a long format

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:FormatContents():Add("longdate","longdate(date(value))")
		oPivot:PivotRows := "9[content=longdate]"

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

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:FormatContents():Add("upper","upper(value)")
		oPivot:PivotRows := "0[content=upper]"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
26:
How can I programatically bold a column

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:PivotRows := "0[bold]"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
25:
How can I display the total with a different foreground color

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:FormatAppearances():Add("fore"):SetProperty("ForeColor",AutomationTranslateColor( GraMakeRGBColor  ( { 255,0,0 } )  , .F. ))
		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:PivotRows := "0"
		oPivot:PivotColumns := "sum(5)"
		oPivot:PivotTotals := "sum[fore,bold]"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
24:
How can I display the total with a different background color/ebn

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:VisualAppearance():Add(1,"c:\exontrol\images\normal.ebn")
		oPivot:FormatAppearances():Add("back"):SetProperty("BackColor",0x1000000)
		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:PivotRows := "0"
		oPivot:PivotColumns := "sum(5)"
		oPivot:PivotTotals := "sum[back]"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
23:
How can I display the total with a solid background color

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:FormatAppearances():Add("back"):SetProperty("BackColor",AutomationTranslateColor( GraMakeRGBColor  ( { 240,240,240 } )  , .F. ))
		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:PivotRows := "0"
		oPivot:PivotColumns := "sum(5)"
		oPivot:PivotTotals := "sum[back]"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
22:
Is it possible to change the "bold" caption in the control's context menu

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:FormatAppearances():Item("bold"):Name := "Ingrosat"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
21:
Is it possible to show no Exclude field in the filter window

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:DisplayFilterList := 288/*exShowCheckBox+exSortItemsAsc*/

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
20:
How can I prevent showing the drop down filter button

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:DisplayFilterList := 2/*exNoItems*/

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
19:
How do I get the count of positive values only

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:Aggregates():Add("positive","sum"):FormatValue := "value < 0 ? 0 : 1"
		oPivot:PivotRows := "0"
		oPivot:PivotColumns := "positive(5)"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
18:
How do I get the sum for negative values only

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:Aggregates():Add("negative","sum"):FormatValue := "value < 0 ? value : 0"
		oPivot:PivotRows := "0"
		oPivot:PivotColumns := "negative(5)"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
17:
My data stores the data as strings, is it possible to load the data using Import method

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:Import("'string 1';'string 2'#'string 3';'string 4'","str=`'` eor='#' eof=';' hdr=0")

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
16:
Is it possible to load data using different separators

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:Import("item 1;item 2#item 3;item 4","eor='#' eof=';' hdr=0")

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
15:
Is it possible to align a column

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oColumn := oPivot:DataColumns:Item(0)
			oColumn:Alignment := 2/*RightAlignment*/
			oColumn:HeaderAlignment := 2/*RightAlignment*/
		oPivot:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
14:
How can I change by code the column/rows background color

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:BeginUpdate()
		oPivot:VisualAppearance():Add(1,"c:\exontrol\images\normal.ebn")
		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:FormatAppearances():Add("aka"):SetProperty("BackColor",0x1000000)
		oPivot:PivotRows := "0[aka]"
		oPivot:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
13:
How can I apply by code any appearance to my list

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:BeginUpdate()
		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:PivotRows := "0[italic]"
		oPivot:PivotColumns := "count(0)[underline]"
		oPivot:PivotTotals := "count[bold,strikeout]"
		oPivot:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
12:
How can I display an icon instead SUM/Total field

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:BeginUpdate()
		oPivot:Images("gBJJgBggAAwAAgACEKAD/hz/EMNh8TIRNGwAjEZAEXjAojJAjIgjIBAEijUlk8plUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTqlVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9oEEwGBwWDwmFw2Hw9+xUsxGNx2Px+LyUnyGVy2VyeZAGNjIJjITjIb0OjjGi0ukAAVjILzmayWtAGejCvjLh2u3jG23O4ACx1ew11+zEYGsZZsZUe/wkZ4sYZvD4PCy8kjAzjLFjKd5WDjIz6HRvnTwUZGMZX8ZTPb8XU8Hh9cFjALjKVjK5jIv9/w9t78WdjJIoyWr7sKjIWu+/a8Og2QAEajLaIxAzlwhB0DwQuzoECjJWw1DiMQ3D0OgAQMKwsuj8xOy0SrzFEWMdFUExbGMCRfC8ZRswMaLsiofJVHiOo+kKRs2lL2Jsh8cyQo6Ag=" +;
		"=")
		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oAggregate := oPivot:Aggregates:Item("sum")
			oAggregate:Name := "<img>1</img> Sum"
			oAggregate:Caption := "<img>1</img>"
		oPivot:PivotColumnsFloatBarVisible := .T.
		oPivot:FormatPivotHeader := "iaggregate ? (caggregate + (iaggregate != 5 ? ' ' : '') + caption) : caption"
		oPivot:FormatPivotTotal := "caggregate"
		oPivot:PivotRows := "0"
		oPivot:PivotColumns := "sum(5)"
		oPivot:PivotTotals := "sum,count"
		oPivot:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
11:
How can I change the caption to be displayed when dragging an aggregate function

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:BeginUpdate()
		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:PivotColumnsFloatBarVisible := .T.
		oPivot:FormatPivotHeader := "(iaggregate ? ('<b>' + upper(caggregate) + '</b> of ' + caption) : caption)"
		oPivot:PivotRows := "0"
		oPivot:PivotColumns := "sum(5)"
		oPivot:PivotTotals := "sum,count"
		oPivot:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
10:
I am using Import method, just wondering if I can rename the columns

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oColumn := oPivot:DataColumns:Item(0)
			oColumn:Caption := "New Caption"
			oColumn:PivotCaption := "New Pivot Caption"
		oPivot:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
9:
Does your control support Fit-To-Page Print and Print Preview

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:PivotRows := "0,1,2"
		oPivot:ExpandAll()
		oPrint := CreateObject("Exontrol.Print")
			oPrint:Options := "FitToPage = On"
			oPrint:PrintExts := oPivot
			oPrint:Preview()

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

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:PivotRows := "0,1,2"
		oPivot:ExpandAll()
		oPrint := CreateObject("Exontrol.Print")
			oPrint:PrintExts := oPivot
			oPrint:Preview()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
7:
How can I hide the pivot bar (hide completly)

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:PivotBarVisible := 4058/*exPivotBarAllowResizeColumns+exPivotBarAllowUndoRedo+exPivotBarAutoUpdate+exPivotBarAllowFormatContent+exPivotBarAllowFormatAppearance+exPivotBarAllowValues+exPivotBarShowTotals+exPivotBarAutoFit+exPivotBarSizable*/

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
6:
How can I hide the pivot bar (auto-hide)

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:PivotBarVisible := 4083/*exPivotBarAllowResizeColumns+exPivotBarAllowUndoRedo+exPivotBarAutoUpdate+exPivotBarAllowFormatContent+exPivotBarAllowFormatAppearance+exPivotBarAllowValues+exPivotBarAutoHide+exPivotBarShowTotals+exPivotBarSizable+exPivotBarVisible*/

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
5:
How can I count and get the total of a specified column

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:BeginUpdate()
		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:PivotColumnsFloatBarVisible := .T.
		oPivot:PivotRows := "0"
		oPivot:PivotColumns := "sum(5)"
		oPivot:PivotTotals := "sum,count"
		oPivot:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
4:
How can I add show the columns once I grouped a column

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:PivotRows := "0"
		oPivot:PivotColumnsFloatBarVisible := .T.

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
3:
How can I programatically group the columns

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")
		oPivot:PivotRows := "0:D"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2:
Is it possible to load data from a data source

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		rs := CreateObject("ADOR.Recordset")
			rs:Open("Data","Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExPivot\Sample\Access2007\sample.accdb",3/*adOpenStatic*/,3/*adLockOptimistic*/)
		oPivot:DataSource := rs

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1:
How can I load data

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

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

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

	oPivot := XbpActiveXControl():new( oForm:drawingArea )
	oPivot:CLSID  := "Exontrol.Pivot.1" /*{5C9DF3D3-81B1-42C4-BED6-658F17748686}*/
	oPivot:create(,, {10,60},{610,370} )

		oPivot:Import("C:\Program Files\Exontrol\ExPivot\Sample\data.txt")

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