1223
|
Defines the symbol used to indicate repeated captions, providing a clear visual cue for identical entries (ditto mark)

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oItems
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:BeginUpdate()
oGrid:HeaderAppearance := 4/*Etched*/
oGrid:HeaderHeight := 24
oGrid:DrawGridLines := -2/*exRowLines*/
oGrid:Columns():Add("Country"):ShowIdem := "<fgcolor gray>〃"
oItems := oGrid:Items()
oItems:AddItem("Spain")
oItems:AddItem("Spain")
oItems:AddItem("Spain")
oItems:AddItem("Spain")
oItems:AddItem("Germany")
oItems:AddItem("Germany")
oItems:AddItem("Germany")
oItems:AddItem("Germany")
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1222
|
Defines the symbol used to indicate repeated captions, providing a clear visual cue for identical entries (space)

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oItems
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:BeginUpdate()
oGrid:HeaderAppearance := 4/*Etched*/
oGrid:HeaderHeight := 24
oGrid:DrawGridLines := -2/*exRowLines*/
oGrid:Columns():Add("Country"):ShowIdem := " "
oItems := oGrid:Items()
oItems:AddItem("Spain")
oItems:AddItem("Spain")
oItems:AddItem("Spain")
oItems:AddItem("Spain")
oItems:AddItem("Germany")
oItems:AddItem("Germany")
oItems:AddItem("Germany")
oItems:AddItem("Germany")
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1221
|
Displays a glitch funnel for drop-down filter buttons (empty or active)

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oAppearance
LOCAL oColumn
LOCAL oItems
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:BeginUpdate()
oAppearance := oGrid:VisualAppearance()
oAppearance:RenderType := -1
oAppearance:Add(1,"gBFLBCJwBAEHhEJAAEhABa8IQAAYAQGKIYBkAKBQAGaAoDDUNQxQwAAxwfBMKgBBCLIxhEYobgmGIXRpFMbxCKQahLEiTIhGUYJHgmK4tRiAUgxVDkBxrECZYqjcBZOiwLQ2TxDM7DNKUCBnIoABhGOaYDh+IQNQjUFKwTRFGRxK4EIRKAyTDLQdRyGSMMbjdQpBCbMiMRqhESKRq2UwYRYCFS1NalaztO6BUAvK67YrWez/YBfF+SfwGeqDYReWAPfgWERnQrGMLxbD8KwZAKTRjkGJ4XhuB41TbQMqufL9ByXHKSSDpGjaXjeO5VVjYNAvS69UzXNq3bhtQAOXCMEwCgI=")
oAppearance:Add(2,"CP:1 -2 0 0 0")
oGrid:DrawGridLines := -1/*exAllLines*/
oGrid:GridLineStyle := 512/*exGridLinesGeometric*/
oGrid:ShowFocusRect := .F.
oGrid:SetProperty("Background",0/*exHeaderFilterBarButton*/,0x2000000)
oGrid:SetProperty("Background",41/*exHeaderFilterBarActive*/,0x2000001)
oGrid:HeaderAppearance := 4/*Etched*/
oGrid:SetProperty("BackColorHeader",AutomationTranslateColor( GraMakeRGBColor ( { 255,255,255 } ) , .F. ))
oGrid:HeaderHeight := 24
oGrid:HeaderVisible := .T.
oColumn := oGrid:Columns():Add("1st col")
oColumn:DisplayFilterButton := .T.
oColumn:DisplayFilterPattern := .F.
oColumn:Filter := "Item B"
oColumn:FilterType := 240/*exFilter*/
oGrid:Columns():Add("2nd col")
oItems := oGrid:Items()
oItems:AddItem("Item A")
oItems:AddItem("Item B")
oItems:AddItem("Item C")
oGrid:ApplyFilter()
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1220
|
How can I store any extra data associated with a cell
PROCEDURE OnButtonClick(oGrid,Item,ColIndex,Key)
DevOut( Transform(oGrid:Items:CellData(Item,ColIndex),"") )
RETURN
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oEditor
LOCAL oItems
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:ButtonClick := {|Item,ColIndex,Key| OnButtonClick(oGrid,Item,ColIndex,Key)} /*Occurs when user clicks on the cell's button.*/
oGrid:BeginUpdate()
oGrid:HeaderAppearance := 4/*Etched*/
oEditor := oGrid:Columns():Add("Def"):Editor()
oEditor:EditType := 12/*ButtonType*/
oEditor:Locked := .T.
oItems := oGrid:Items()
oItems:SetProperty("CellData",oItems:AddItem("Cell 1"),0,"your extra data for cell 1")
oItems:SetProperty("CellData",oItems:AddItem("Cell 2"),0,"your extra data for cell 2")
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1219
|
How can I replace or add an icon at runtime

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:BeginUpdate()
oGrid:ReplaceIcon("gAAAABgYACEHgUJFEEAAWhUJCEJEEJggEhMCYEXjUbjkJQECj8gj8hAEjkshYEpk8kf8ClsulsvAExmcvf83js5nU7nkCeEcn8boMaocXosCB9Hn09pkzcEuoL/fE+OkYB0gB9YhIHrddgVcr9aktZADAD8+P8CgIA==")
oGrid:ReplaceIcon("C:\images\favicon.ico",0)
oGrid:Columns():Add("Items"):SetProperty("Def",17/*exCellValueFormat*/,1)
oGrid:Items():AddItem("Item <img>1</img>")
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1218
|
How can I save the changes, such as column's width, order

PROCEDURE OnClick(oGrid)
oGrid:Layout := "Select=" + CHR(34) + "0" + CHR(34) + ";SingleSort=" + CHR(34) + "C0:2" + CHR(34) + ";Columns=1"
RETURN
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oItems
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:Click := {|| OnClick(oGrid)} /*Occurs when the user presses and then releases the left mouse button over the grid control.*/
oGrid:BeginUpdate()
oGrid:Columns():Add("Column")
oItems := oGrid:Items()
oItems:AddItem("Item 1")
oItems:AddItem("Item 2")
oItems:AddItem("Item 3")
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1217
|
How can I add totals to groups without having to go through the AddGroupItem grid function

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oColumn,oColumn1,oColumn2
LOCAL oColumns
LOCAL oConditionalFormat,oConditionalFormat1,oConditionalFormat2
LOCAL oConditionalFormats
LOCAL oItems
LOCAL g1,g2,h,r
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:FreezeEvents(.T.)
oGrid:BeginUpdate()
oGrid:HeaderAppearance := 4/*Etched*/
oGrid:HeaderHeight := 24
oGrid:LinesAtRoot := -1/*exLinesAtRoot*/
oConditionalFormats := oGrid:ConditionalFormats()
oConditionalFormat := oConditionalFormats:Add("%CT1")
oConditionalFormat:SetProperty("ForeColor",AutomationTranslateColor( GraMakeRGBColor ( { 128,128,128 } ) , .F. ))
oConditionalFormat:ApplyTo := 1/*0x1+*/
oConditionalFormat1 := oConditionalFormats:Add("%CT2")
oConditionalFormat1:SetProperty("ForeColor",AutomationTranslateColor( GraMakeRGBColor ( { 128,128,128 } ) , .F. ))
oConditionalFormat1:ApplyTo := 2/*0x2+*/
oConditionalFormat2 := oConditionalFormats:Add("%CT3")
oConditionalFormat2:SetProperty("ForeColor",AutomationTranslateColor( GraMakeRGBColor ( { 128,128,128 } ) , .F. ))
oConditionalFormat2:ApplyTo := 3/*0x3+*/
oColumns := oGrid:Columns()
oColumns:Add("Description")
oColumn := oColumns:Add("Qty")
oColumn:Editor():EditType := 4/*SpinType*/
oColumn:SetProperty("Def",20/*exTotalColumn*/,"sum(current,rec,%1)")
oColumn1 := oColumns:Add("Price")
oColumn1:SetProperty("Def",20/*exTotalColumn*/,"avg(current,rec,%2)")
oColumn1:Editor():EditType := 4/*SpinType*/
oColumn2 := oColumns:Add("Amount")
oColumn2:ComputedField := "%1 * %2"
oColumn2:SetProperty("Def",20/*exTotalColumn*/,"sum(current,rec,%3)")
oItems := oGrid:Items()
r := oItems:AddItem("Root")
g1 := oItems:InsertItem(r,,"Group 1")
h := oItems:InsertItem(g1,,"Item 1")
oItems:SetProperty("CellValue",h,1,1)
oItems:SetProperty("CellValue",h,2,10)
h := oItems:InsertItem(g1,,"Item 2")
oItems:SetProperty("CellValue",h,1,2)
oItems:SetProperty("CellValue",h,2,11)
g2 := oItems:InsertItem(r,,"Group 2")
h := oItems:InsertItem(g2,,"Item 1")
oItems:SetProperty("CellValue",h,1,3)
oItems:SetProperty("CellValue",h,2,12)
h := oItems:InsertItem(g2,,"Item 2")
oItems:SetProperty("CellValue",h,1,4)
oItems:SetProperty("CellValue",h,2,13)
oItems:SetProperty("ExpandItem",0,.T.)
oGrid:EndUpdate()
oGrid:FreezeEvents(.F.)
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1216
|
How can I configure the filters in the text columns to search by content

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oItems
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:BeginUpdate()
oGrid:FilterBarPromptVisible := 1/*exFilterBarPromptVisible*/
oGrid:HeaderAppearance := 0/*None2*/
oGrid:FilterBarPromptType := 1/*exFilterPromptContainsAll*/
oGrid:Columns():Add("Names")
oItems := oGrid:Items()
oItems:AddItem("Mantel")
oItems:AddItem("Mechanik")
oItems:AddItem("Motor")
oItems:AddItem("Murks")
oItems:AddItem("Märchen")
oItems:AddItem("Möhren")
oItems:AddItem("Mühle")
oItems:AddItem("Sérigraphie")
oGrid:FilterBarPromptPattern := "a"
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1215
|
How can I display the control's captions in Spanish

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oColumn
LOCAL oItems
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:BeginUpdate()
oGrid:FilterBarPromptVisible := 1/*exFilterBarPromptVisible*/
oGrid:HeaderAppearance := 0/*None2*/
oGrid:SetProperty("Description",0/*exFilterBarAll*/,"(todo) ")
oGrid:SetProperty("Description",3/*exFilterBarFilterForCaption*/,"filtrar por...")
oGrid:FilterBarPrompt := "<i><fgcolor=808080>iniciar filtro...</fgcolor></i>"
oColumn := oGrid:Columns():Add("Names")
oColumn:DisplayFilterButton := .T.
oColumn:FilterType := 3/*exPattern*/
oItems := oGrid:Items()
oItems:AddItem("Mantel")
oItems:AddItem("Mechanik")
oItems:AddItem("Motor")
oItems:AddItem("Murks")
oItems:AddItem("Märchen")
oItems:AddItem("Möhren")
oItems:AddItem("Mühle")
oItems:AddItem("Sérigraphie")
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1214
|
How can I zoom in the control

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oColumn
LOCAL oItems
LOCAL s1,s2
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:BeginUpdate()
s1 := 16
s2 := oGrid:FormatABC("2 * value",s1)
oGrid:ImageSize := s2
oGrid:DefaultItemHeight := s2
oGrid:HeaderHeight := s2
oGrid:SortBarHeight := s2
oGrid:Indent := s2
oGrid:Font():Size := s1
oGrid:FilterBarFont():Size := s1
oGrid:ToolTipFont():Size := s1
oGrid:FilterBarPromptVisible := 1/*exFilterBarPromptVisible*/
oGrid:HeaderAppearance := 0/*None2*/
oColumn := oGrid:Columns():Add("Names")
oColumn:DisplayFilterButton := .T.
oColumn:FilterType := 3/*exPattern*/
oItems := oGrid:Items()
oItems:AddItem("Mantel")
oItems:AddItem("Mechanik")
oItems:AddItem("Motor")
oItems:AddItem("Murks")
oItems:AddItem("Märchen")
oItems:AddItem("Möhren")
oItems:AddItem("Mühle")
oItems:AddItem("Sérigraphie")
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1213
|
Can I set a filter that automatically adds a * before and after the word, so the user can just search for 'cat' and it becomes '*cat*' automatically

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oColumn
LOCAL oItems
LOCAL h
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:BeginUpdate()
oGrid:HeaderAppearance := 4/*Etched*/
oGrid:HeaderHeight := 24
oGrid:LinesAtRoot := -1/*exLinesAtRoot*/
oColumn := oGrid:Columns():Add("Items")
oColumn:DisplayFilterButton := .T.
oColumn:DisplayFilterPattern := .T.
oColumn:SetProperty("Def",21/*exFilterPatternTemplate*/,"*<%filter%>*")
oColumn:FilterType := 3/*exPattern*/
oColumn:Filter := "1"
oItems := oGrid:Items()
h := oItems:AddItem("Root 1")
oItems:InsertItem(h,,"Child 1")
oItems:InsertItem(h,,"Child 2")
oItems:SetProperty("ExpandItem",h,.T.)
h := oItems:AddItem("Root 2")
oItems:InsertItem(h,,"Child 1")
oItems:InsertItem(h,,"Child 2")
oGrid:ApplyFilter()
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1212
|
The fine dotted lines in the control appear much thicker than the standard ones we've been using. How can we fix this

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:BeginUpdate()
oGrid:HeaderAppearance := 4/*Etched*/
oGrid:HeaderHeight := 24
oGrid:DrawGridLines := -1/*exAllLines*/
oGrid:GridLineStyle := 512/*exGridLinesGeometric*/
oGrid:ColumnAutoResize := .F.
oGrid:Columns():Add("Column 1")
oGrid:Columns():Add("Column 2")
oGrid:Columns():Add("Column 3")
oGrid:Columns():Add("Column 4")
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1211
|
Load data as a tree using a parent-id relationship

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL rs
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:BeginUpdate()
oGrid:ColumnAutoResize := .F.
oGrid:HeaderAppearance := 4/*Etched*/
oGrid:HeaderHeight := 24
oGrid:DrawGridLines := 2/*exVLines*/
oGrid:LinesAtRoot := -1/*exLinesAtRoot*/
rs := CreateObject("ADODB.Recordset")
rs:Open("Select * FROM Employees WHERE 1=0","Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExGrid\Sample\Access\misc.mdb",3/*adOpenStatic*/,3/*adLockOptimistic*/)
oGrid:DataSource := rs
oGrid:Columns:Item(0):Width := 128
rs := CreateObject("ADODB.Recordset")
rs:Open("Employees","Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExGrid\Sample\Access\misc.mdb",3/*adOpenStatic*/,3/*adLockOptimistic*/)
oGrid:PutItems(rs:GetRows(),";0;17")
oGrid:Items():SetProperty("ExpandItem",0,.T.)
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1210
|
Is there a way to change the contents of the drop down editor based on a value in another column

PROCEDURE OnAddItem(oGrid,Item)
oGrid:Items():SetProperty("CellEditorVisible",Item,0,1/*exEditorVisible*/)
oGrid:Items():SetProperty("CellEditorVisible",Item,1,1/*exEditorVisible*/)
RETURN
PROCEDURE OnEditOpen(oGrid)
LOCAL oEditor
LOCAL oItems
LOCAL c,v
oItems := oGrid:Items()
v := oItems:CellValue(oItems:FocusItem(),0)
c := oItems:CellCaption(oItems:FocusItem(),0)
oEditor := oGrid:Columns:Item(1):Editor()
oEditor:ClearItems()
oEditor:AddItem(v,Transform(c,""))
RETURN
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oColumn
LOCAL oEditor
LOCAL oItems
LOCAL h
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:AddItem := {|Item| OnAddItem(oGrid,Item)} /*Occurs after a new Item has been inserted to Items collection.*/
oGrid:EditOpen := {|| OnEditOpen(oGrid)} /*Occurs when the edit operation starts.*/
oGrid:BeginUpdate()
oGrid:HeaderAppearance := 4/*Etched*/
oGrid:HeaderHeight := 24
oGrid:GridLineStyle := 512/*exGridLinesGeometric*/
oColumn := oGrid:Columns():Add("DropDownList")
oEditor := oColumn:Editor()
oEditor:EditType := 3/*DropDownListType*/
oEditor:AddItem(1,"First")
oEditor:AddItem(2,"Second")
oEditor:AddItem(3,"Third")
oGrid:DrawGridLines := -1/*exAllLines*/
oGrid:Columns():Add("DropDownList-Related"):Editor():EditType := 3/*DropDownListType*/
oItems := oGrid:Items()
oItems:SetProperty("CellValue",oItems:AddItem(1),1,-1)
oItems:SetProperty("CellValue",oItems:AddItem(2),1,-1)
oItems:SetProperty("CellValue",oItems:AddItem(3),1,-1)
oItems:SetProperty("LockedItemCount",2/*exBottom*/,1)
h := oItems:LockedItem(2/*exBottom*/,0)
oItems:SetProperty("ItemDivider",h,0)
oItems:SetProperty("ItemDividerLineAlignment",h,2/*DividerTop*/)
oItems:SetProperty("CellEditorVisible",h,0,0/*exEditorHidden*/)
oItems:SetProperty("CellSingleLine",h,0,0/*exCaptionWordWrap*/)
oItems:SetProperty("CellValueFormat",h,0,1/*exHTML*/)
oItems:SetProperty("CellValue",h,0,"The drop down editor in the second column is filled during the <b>EditOpen event</b>, and the values are based on the selection on the first column.")
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1209
|
Highlight the editable fields

PROCEDURE OnChange(oGrid,Item,ColIndex,NewValue)
oGrid:Refresh()
RETURN
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oColumn,oColumn1,oColumn2
LOCAL oColumns
LOCAL oConditionalFormat,oConditionalFormat1,oConditionalFormat2
LOCAL oConditionalFormats
LOCAL oItems
LOCAL g1,g2,h,r
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:Change := {|Item,ColIndex,NewValue| OnChange(oGrid,Item,ColIndex,NewValue)} /*Occurs when the user changes the cell's content.*/
oGrid:FreezeEvents(.T.)
oGrid:BeginUpdate()
oGrid:HeaderAppearance := 4/*Etched*/
oGrid:HeaderHeight := 24
oGrid:LinesAtRoot := -1/*exLinesAtRoot*/
oConditionalFormats := oGrid:ConditionalFormats()
oConditionalFormat := oConditionalFormats:Add("%CE1")
oConditionalFormat:Bold := .T.
oConditionalFormat:SetProperty("BackColor",AutomationTranslateColor( GraMakeRGBColor ( { 245,245,245 } ) , .F. ))
oConditionalFormat:ApplyTo := 1/*0x1+*/
oConditionalFormat1 := oConditionalFormats:Add("%CE2")
oConditionalFormat1:Bold := .T.
oConditionalFormat1:SetProperty("BackColor",AutomationTranslateColor( GraMakeRGBColor ( { 245,245,245 } ) , .F. ))
oConditionalFormat1:ApplyTo := 2/*0x2+*/
oConditionalFormat2 := oConditionalFormats:Add("%CE3")
oConditionalFormat2:Bold := .T.
oConditionalFormat2:SetProperty("BackColor",AutomationTranslateColor( GraMakeRGBColor ( { 245,245,245 } ) , .F. ))
oConditionalFormat2:ApplyTo := 3/*0x3+*/
oColumns := oGrid:Columns()
oColumns:Add("Description")
oColumn := oColumns:Add("Qty")
oColumn:Editor():EditType := 4/*SpinType*/
oColumn:SetProperty("Def",20/*exTotalColumn*/,"sum(current,rec,%1)")
oColumn1 := oColumns:Add("Price")
oColumn1:SetProperty("Def",20/*exTotalColumn*/,"avg(current,rec,%2)")
oColumn1:Editor():EditType := 4/*SpinType*/
oColumn2 := oColumns:Add("Amount")
oColumn2:ComputedField := "%1 * %2"
oColumn2:SetProperty("Def",20/*exTotalColumn*/,"sum(current,rec,%3)")
oItems := oGrid:Items()
r := oItems:AddItem("Root")
g1 := oItems:InsertItem(r,,"Group 1")
h := oItems:InsertItem(g1,,"Item 1")
oItems:SetProperty("CellValue",h,1,1)
oItems:SetProperty("CellValue",h,2,10)
h := oItems:InsertItem(g1,,"Item 2")
oItems:SetProperty("CellValue",h,1,2)
oItems:SetProperty("CellValue",h,2,11)
g2 := oItems:InsertItem(r,,"Group 2")
h := oItems:InsertItem(g2,,"Item 1")
oItems:SetProperty("CellValue",h,1,3)
oItems:SetProperty("CellValue",h,2,12)
h := oItems:InsertItem(g2,,"Item 2")
oItems:SetProperty("CellValue",h,1,4)
oItems:SetProperty("CellValue",h,2,13)
oItems:SetProperty("ExpandItem",0,.T.)
oGrid:EndUpdate()
oGrid:FreezeEvents(.F.)
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1208
|
Highlight the total fields

PROCEDURE OnChange(oGrid,Item,ColIndex,NewValue)
oGrid:Refresh()
RETURN
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oColumn,oColumn1,oColumn2
LOCAL oColumns
LOCAL oConditionalFormat,oConditionalFormat1,oConditionalFormat2
LOCAL oConditionalFormats
LOCAL oItems
LOCAL g1,g2,h,r
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:Change := {|Item,ColIndex,NewValue| OnChange(oGrid,Item,ColIndex,NewValue)} /*Occurs when the user changes the cell's content.*/
oGrid:FreezeEvents(.T.)
oGrid:BeginUpdate()
oGrid:HeaderAppearance := 4/*Etched*/
oGrid:HeaderHeight := 24
oGrid:LinesAtRoot := -1/*exLinesAtRoot*/
oConditionalFormats := oGrid:ConditionalFormats()
oConditionalFormat := oConditionalFormats:Add("%CT1")
oConditionalFormat:SetProperty("ForeColor",AutomationTranslateColor( GraMakeRGBColor ( { 128,128,128 } ) , .F. ))
oConditionalFormat:ApplyTo := 1/*0x1+*/
oConditionalFormat1 := oConditionalFormats:Add("%CT2")
oConditionalFormat1:SetProperty("ForeColor",AutomationTranslateColor( GraMakeRGBColor ( { 128,128,128 } ) , .F. ))
oConditionalFormat1:ApplyTo := 2/*0x2+*/
oConditionalFormat2 := oConditionalFormats:Add("%CT3")
oConditionalFormat2:SetProperty("ForeColor",AutomationTranslateColor( GraMakeRGBColor ( { 128,128,128 } ) , .F. ))
oConditionalFormat2:ApplyTo := 3/*0x3+*/
oColumns := oGrid:Columns()
oColumns:Add("Description")
oColumn := oColumns:Add("Qty")
oColumn:Editor():EditType := 4/*SpinType*/
oColumn:SetProperty("Def",20/*exTotalColumn*/,"sum(current,rec,%1)")
oColumn1 := oColumns:Add("Price")
oColumn1:SetProperty("Def",20/*exTotalColumn*/,"avg(current,rec,%2)")
oColumn1:Editor():EditType := 4/*SpinType*/
oColumn2 := oColumns:Add("Amount")
oColumn2:ComputedField := "%1 * %2"
oColumn2:SetProperty("Def",20/*exTotalColumn*/,"sum(current,rec,%3)")
oItems := oGrid:Items()
r := oItems:AddItem("Root")
g1 := oItems:InsertItem(r,,"Group 1")
h := oItems:InsertItem(g1,,"Item 1")
oItems:SetProperty("CellValue",h,1,1)
oItems:SetProperty("CellValue",h,2,10)
h := oItems:InsertItem(g1,,"Item 2")
oItems:SetProperty("CellValue",h,1,2)
oItems:SetProperty("CellValue",h,2,11)
g2 := oItems:InsertItem(r,,"Group 2")
h := oItems:InsertItem(g2,,"Item 1")
oItems:SetProperty("CellValue",h,1,3)
oItems:SetProperty("CellValue",h,2,12)
h := oItems:InsertItem(g2,,"Item 2")
oItems:SetProperty("CellValue",h,1,4)
oItems:SetProperty("CellValue",h,2,13)
oItems:SetProperty("ExpandItem",0,.T.)
oGrid:EndUpdate()
oGrid:FreezeEvents(.F.)
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1207
|
Highlight the leaf items

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oColumns
LOCAL oItems
LOCAL h,hR
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:BeginUpdate()
oGrid:ConditionalFormats():Add("%CC0=0"):SetProperty("ForeColor",AutomationTranslateColor( GraMakeRGBColor ( { 128,128,128 } ) , .F. ))
oGrid:HeaderAppearance := 4/*Etched*/
oGrid:HeaderHeight := 24
oGrid:LinesAtRoot := -1/*exLinesAtRoot*/
oColumns := oGrid:Columns()
oColumns:Add("Item"):Width := 16
oColumns:Add("Desc")
oItems := oGrid:Items()
hR := oItems:AddItem("Root")
oItems:SetProperty("CellValue",hR,1,"The root directory /")
oItems:SetProperty("ExpandItem",hR,.T.)
h := oItems:InsertItem(hR,,"Home")
oItems:SetProperty("CellValue",h,1,"The home directory with user directories Alice and Bob")
oItems:InsertItem(h,,"Alice")
oItems:InsertItem(h,,"Bob")
oItems:SetProperty("ExpandItem",h,.T.)
h := oItems:InsertItem(hR,,"Etc")
oItems:SetProperty("CellValue",h,1,"The etc directory with one configuration file")
h := oItems:InsertItem(h,,"nginx.conf")
oItems:SetProperty("CellValue",oItems:InsertItem(hR,,"Var"),1,"The var directory")
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1206
|
Highlight the parent items

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oColumns
LOCAL oItems
LOCAL h,hR
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:BeginUpdate()
oGrid:ConditionalFormats():Add("%CC0"):SetProperty("ForeColor",AutomationTranslateColor( GraMakeRGBColor ( { 255,0,0 } ) , .F. ))
oGrid:HeaderAppearance := 4/*Etched*/
oGrid:HeaderHeight := 24
oGrid:LinesAtRoot := -1/*exLinesAtRoot*/
oColumns := oGrid:Columns()
oColumns:Add("Item"):Width := 16
oColumns:Add("Desc")
oItems := oGrid:Items()
hR := oItems:AddItem("Root")
oItems:SetProperty("CellValue",hR,1,"The root directory /")
oItems:SetProperty("ExpandItem",hR,.T.)
h := oItems:InsertItem(hR,,"Home")
oItems:SetProperty("CellValue",h,1,"The home directory with user directories Alice and Bob")
oItems:InsertItem(h,,"Alice")
oItems:InsertItem(h,,"Bob")
oItems:SetProperty("ExpandItem",h,.T.)
h := oItems:InsertItem(hR,,"Etc")
oItems:SetProperty("CellValue",h,1,"The etc directory with one configuration file")
h := oItems:InsertItem(h,,"nginx.conf")
oItems:SetProperty("CellValue",oItems:InsertItem(hR,,"Var"),1,"The var directory")
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1205
|
Highlight the item being expanded or collapsed

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oColumns
LOCAL oItems
LOCAL h,hR
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:BeginUpdate()
oGrid:ConditionalFormats():Add("%CX0"):Bold := .T.
oGrid:HeaderAppearance := 4/*Etched*/
oGrid:HeaderHeight := 24
oGrid:LinesAtRoot := -1/*exLinesAtRoot*/
oColumns := oGrid:Columns()
oColumns:Add("Item"):Width := 16
oColumns:Add("Desc")
oItems := oGrid:Items()
hR := oItems:AddItem("Root")
oItems:SetProperty("CellValue",hR,1,"The root directory /")
oItems:SetProperty("ExpandItem",hR,.T.)
h := oItems:InsertItem(hR,,"Home")
oItems:SetProperty("CellValue",h,1,"The home directory with user directories Alice and Bob")
oItems:InsertItem(h,,"Alice")
oItems:InsertItem(h,,"Bob")
oItems:SetProperty("ExpandItem",h,.T.)
h := oItems:InsertItem(hR,,"Etc")
oItems:SetProperty("CellValue",h,1,"The etc directory with one configuration file")
h := oItems:InsertItem(h,,"nginx.conf")
oItems:SetProperty("CellValue",oItems:InsertItem(hR,,"Var"),1,"The var directory")
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1204
|
I am using exTotalColumn. Is there an option to exclude specific cells to display the total

PROCEDURE OnChange(oGrid,Item,ColIndex,NewValue)
oGrid:Refresh()
RETURN
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oColumn,oColumn1,oColumn2
LOCAL oColumns
LOCAL oItems
LOCAL g1,g2,h,r
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:Change := {|Item,ColIndex,NewValue| OnChange(oGrid,Item,ColIndex,NewValue)} /*Occurs when the user changes the cell's content.*/
oGrid:FreezeEvents(.T.)
oGrid:BeginUpdate()
oGrid:HeaderAppearance := 4/*Etched*/
oGrid:HeaderHeight := 24
oGrid:LinesAtRoot := -1/*exLinesAtRoot*/
oColumns := oGrid:Columns()
oColumns:Add("Description")
oColumn := oColumns:Add("Qty")
oColumn:Editor():EditType := 4/*SpinType*/
oColumn:SetProperty("Def",20/*exTotalColumn*/,"sum(current,rec,%1)")
oColumn1 := oColumns:Add("Price")
oColumn1:SetProperty("Def",20/*exTotalColumn*/,"avg(current,rec,%2)")
oColumn1:Editor():EditType := 4/*SpinType*/
oColumn2 := oColumns:Add("Amount")
oColumn2:ComputedField := "%1 * %2"
oColumn2:SetProperty("Def",20/*exTotalColumn*/,"sum(current,rec,%3)")
oItems := oGrid:Items()
r := oItems:AddItem("Root")
g1 := oItems:InsertItem(r,,"Group 1")
oItems:SetProperty("FormatCell",g1,2,"`<average missing>`")
oItems:SetProperty("CellEditorVisible",g1,2,0/*exEditorHidden*/)
oItems:SetProperty("CellBold",g1,2,.T.)
oItems:SetProperty("CellForeColor",g1,2,AutomationTranslateColor( GraMakeRGBColor ( { 255,0,0 } ) , .F. ))
h := oItems:InsertItem(g1,,"Item 1")
oItems:SetProperty("CellValue",h,1,1)
oItems:SetProperty("CellValue",h,2,10)
h := oItems:InsertItem(g1,,"Item 2")
oItems:SetProperty("CellValue",h,1,2)
oItems:SetProperty("CellValue",h,2,11)
g2 := oItems:InsertItem(r,,"Group 2")
h := oItems:InsertItem(g2,,"Item 1")
oItems:SetProperty("CellValue",h,1,3)
oItems:SetProperty("CellValue",h,2,12)
h := oItems:InsertItem(g2,,"Item 2")
oItems:SetProperty("CellValue",h,1,4)
oItems:SetProperty("CellValue",h,2,13)
oItems:SetProperty("ExpandItem",0,.T.)
oGrid:EndUpdate()
oGrid:FreezeEvents(.F.)
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1203
|
How can I add a total column

PROCEDURE OnChange(oGrid,Item,ColIndex,NewValue)
oGrid:Refresh()
RETURN
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oColumn,oColumn1,oColumn2
LOCAL oColumns
LOCAL oItems
LOCAL g1,g2,h,r
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:Change := {|Item,ColIndex,NewValue| OnChange(oGrid,Item,ColIndex,NewValue)} /*Occurs when the user changes the cell's content.*/
oGrid:FreezeEvents(.T.)
oGrid:BeginUpdate()
oGrid:HeaderAppearance := 4/*Etched*/
oGrid:HeaderHeight := 24
oGrid:LinesAtRoot := -1/*exLinesAtRoot*/
oColumns := oGrid:Columns()
oColumns:Add("Description")
oColumn := oColumns:Add("Qty")
oColumn:Editor():EditType := 4/*SpinType*/
oColumn:SetProperty("Def",20/*exTotalColumn*/,"sum(current,rec,%1)")
oColumn1 := oColumns:Add("Price")
oColumn1:SetProperty("Def",20/*exTotalColumn*/,"avg(current,rec,%2)")
oColumn1:Editor():EditType := 4/*SpinType*/
oColumn2 := oColumns:Add("Amount")
oColumn2:ComputedField := "%1 * %2"
oColumn2:SetProperty("Def",20/*exTotalColumn*/,"sum(current,rec,%3)")
oItems := oGrid:Items()
r := oItems:AddItem("Root")
g1 := oItems:InsertItem(r,,"Group 1")
h := oItems:InsertItem(g1,,"Item 1")
oItems:SetProperty("CellValue",h,1,1)
oItems:SetProperty("CellValue",h,2,10)
h := oItems:InsertItem(g1,,"Item 2")
oItems:SetProperty("CellValue",h,1,2)
oItems:SetProperty("CellValue",h,2,11)
g2 := oItems:InsertItem(r,,"Group 2")
h := oItems:InsertItem(g2,,"Item 1")
oItems:SetProperty("CellValue",h,1,3)
oItems:SetProperty("CellValue",h,2,12)
h := oItems:InsertItem(g2,,"Item 2")
oItems:SetProperty("CellValue",h,1,4)
oItems:SetProperty("CellValue",h,2,13)
oItems:SetProperty("ExpandItem",0,.T.)
oGrid:EndUpdate()
oGrid:FreezeEvents(.F.)
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1202
|
Is it possible to disable sizing(size) the column
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oColumn
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:BeginUpdate()
oGrid:HeaderAppearance := 4/*Etched*/
oGrid:DrawGridLines := 2/*exVLines*/
oColumn := oGrid:Columns():Add("32px")
oColumn:Width := 32
oColumn:AllowSizing := .F.
oGrid:Columns():Add("Rest")
oGrid:ColumnAutoResize := .T.
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1201
|
How can I add two columns of 25% and the third of 50%

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:BeginUpdate()
oGrid:HeaderAppearance := 4/*Etched*/
oGrid:DrawGridLines := 2/*exVLines*/
oGrid:Columns():Add("25%"):Width := 25
oGrid:Columns():Add("25%"):Width := 25
oGrid:Columns():Add("50%"):Width := 50
oGrid:ColumnAutoResize := .T.
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1200
|
I add two columns but I see a third column

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:BeginUpdate()
oGrid:HeaderAppearance := 4/*Etched*/
oGrid:DrawGridLines := 2/*exVLines*/
oGrid:Columns():Add("C1")
oGrid:Columns():Add("C2")
oGrid:ColumnAutoResize := .T.
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1199
|
I lose the hierarchy, all items are on the same 1st level, while I use PutItems

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oItems
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:BeginUpdate()
oGrid:LinesAtRoot := -1/*exLinesAtRoot*/
oGrid:Columns():Add("C1")
oGrid:Columns():Add("C2")
oItems := oGrid:Items()
oItems:SetProperty("CellValue",oItems:AddItem("Emily"),1,"William")
oItems:SetProperty("CellValue",oItems:AddItem("Sophia"),1,"Alexander")
oGrid:PutItems(oGrid:GetItems(""),oGrid:Items:ItemByIndex(0))
oGrid:PutItems(oGrid:GetItems(""),oGrid:Items:ItemByIndex(1))
oGrid:PutItems(oGrid:GetItems(""),oGrid:Items:ItemByIndex(6))
oGrid:Items():SetProperty("ExpandItem",0,.T.)
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1198
|
Column width set by code is ignored or it seems that does not work

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:BeginUpdate()
oGrid:ColumnAutoResize := .F.
oGrid:HeaderAppearance := 4/*Etched*/
oGrid:DrawGridLines := 2/*exVLines*/
oGrid:Columns():Add("C1"):Width := 32
oGrid:Columns():Add("C2"):Width := 132
oGrid:Columns():Add("C3"):Width := 264
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1197
|
I want to display this computed value in a TextBox outside the grid and get it updated with any change of its value. How can this be done
PROCEDURE OnChange(oGrid,Item,ColIndex,NewValue)
LOCAL oItems
oGrid:Refresh()
oItems := oGrid:Items()
DevOut( "Total: " )
DevOut( oItems:CellCaption(oItems:LockedItem(0/*exTop*/,0),0) )
RETURN
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oColumn
LOCAL oEditor
LOCAL oItems,oItems1
LOCAL h
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:Change := {|Item,ColIndex,NewValue| OnChange(oGrid,Item,ColIndex,NewValue)} /*Occurs when the user changes the cell's content.*/
oGrid:BeginUpdate()
oColumn := oGrid:Columns():Add("Numbers")
oEditor := oColumn:Editor()
oEditor:Numeric := -1/*exInteger*/
oEditor:EditType := 4/*SpinType*/
oColumn:SortType := 1/*SortNumeric*/
oItems := oGrid:Items()
oItems:SetProperty("LockedItemCount",0/*exTop*/,1)
h := oItems:LockedItem(0/*exTop*/,0)
oItems:SetProperty("ItemBackColor",h,AutomationTranslateColor( GraMakeRGBColor ( { 240,240,240 } ) , .F. ))
oItems:SetProperty("CellValue",h,0,"sum(all,dir,dbl(%0))")
oItems:SetProperty("CellValueFormat",h,0,4/*exTotalField*/)
oItems:SetProperty("CellHAlignment",h,0,2/*RightAlignment*/)
oItems:SetProperty("FormatCell",h,0,"'Total: '+value")
oItems1 := oGrid:Items()
oItems1:AddItem(10)
oItems1:AddItem(25)
oItems1:AddItem(31)
oItems1:AddItem(48)
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1196
|
Disable temporarily the column's sort, resize and drag and drop

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:BeginUpdate()
oGrid:SortBarVisible := .T.
oGrid:SortBarCaption := "<fgcolor 808080><c>the header and the sort-bar are disabled (no drag and drop is allowed)"
oGrid:AllowGroupBy := .T.
oGrid:HeaderEnabled := .F.
oGrid:HeaderAppearance := 4/*Etched*/
oGrid:Columns():Add("Index"):FormatColumn := "1 index ``"
oGrid:Columns():Add("Pos"):FormatColumn := "1 apos ``"
oGrid:Columns():Add("Edit"):Editor():EditType := 1/*EditType*/
oGrid:GridLineStyle := 512/*exGridLinesGeometric*/
oGrid:DrawGridLines := 2/*exVLines*/
oGrid:SetProperty("GridLineColor",AutomationTranslateColor( GraMakeRGBColor ( { 224,224,224 } ) , .F. ))
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1195
|
I wonder if it’s possible to highlight/select a column like Excel
PROCEDURE OnColumnClick(oGrid,Column)
/*Column.Selected = True*/
/*FocusColumnIndex = Column.Index*/
oGrid:Columns:Item(0):Selected := .F.
oGrid:Columns:Item(1):Selected := .F.
oGrid:Columns:Item(2):Selected := .F.
oGrid:Items():SelectAll()
RETURN
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oItems
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:ColumnClick := {|Column| OnColumnClick(oGrid,Column)} /*Fired after the user clicks on column's header.*/
oGrid:BeginUpdate()
oGrid:SetProperty("Background",32/*exCursorHoverColumn*/,-1)
oGrid:HeaderAppearance := 4/*Etched*/
oGrid:MarkSearchColumn := .F.
oGrid:SingleSel := .F.
oGrid:FullRowSelect := 1/*exRectSel*/
oGrid:SortOnClick := 0/*exNoSort*/
oGrid:Columns():Add("Column1")
oGrid:Columns():Add("Column2")
oGrid:Columns():Add("Column3")
oItems := oGrid:Items()
oItems:DefaultItem := oItems:AddItem(0)
oItems:SetProperty("CellValue",0,1,1)
oItems:SetProperty("CellValue",0,2,2)
oItems:DefaultItem := oItems:AddItem(3)
oItems:SetProperty("CellValue",0,1,4)
oItems:SetProperty("CellValue",0,2,5)
oItems:DefaultItem := oItems:AddItem(6)
oItems:SetProperty("CellValue",0,1,7)
oItems:SetProperty("CellValue",0,2,8)
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1194
|
Is it possible to change the color of the border

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oItems
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:BeginUpdate()
oGrid:VisualAppearance():Add(1,"gBFLBCJwBAEHhEJAAEhABc8IQAAYAQGKIcBiAKBQAGaAoDDMMwyQwAAxDMK8EwsACEIrjKCRShyCYZRhGcTALBIBQSHAZZKgOJIRDENg2SANACRfIUaw1DqBZwkGZoWhGKgAShIEDwSKkQBlECeJpnKaqIomJYnDLQUw0NL9HQ3JaaKqnWLBVCWEQyVzEIyjBT0EzHMqtKrjaA6NpaP4oT7LEIydKFCRJNi0bSnGqaOj6UJSURRVq3TTFcTyAC3ahuOo4cpXB4SWrOd41fYNOTQACzbCsSIcPxCe6GXjiNwjPKMWhnIq+M5wXIrJyKCYUaTcejzfgdU5XWqeMoyewMXxmZqbXw/fBYRrEL5vTqNXTzSA4BEB")
oGrid:Appearance := 16842496/*0x100ff00+*/
oGrid:ColumnAutoResize := .T.
oGrid:HeaderAppearance := 4/*Etched*/
oGrid:TreeColumnIndex := -1
oGrid:DrawGridLines := -1/*exAllLines*/
oGrid:GridLineStyle := 512/*exGridLinesGeometric*/
oGrid:Columns():Add("Default")
oItems := oGrid:Items()
oItems:AddItem("before item")
oItems:AddItem("item")
oItems:AddItem("after item")
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1193
|
Expandable-caption

PROCEDURE OnAnchorClick(oGrid,AnchorID,Options)
DevOut( Transform(AnchorID,"") )
RETURN
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oItems
LOCAL h
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:AnchorClick := {|AnchorID,Options| OnAnchorClick(oGrid,AnchorID,Options)} /*Occurs when an anchor element is clicked.*/
oGrid:BeginUpdate()
oGrid:ColumnAutoResize := .T.
oGrid:TreeColumnIndex := -1
oGrid:DrawGridLines := -1/*exAllLines*/
oGrid:GridLineStyle := 512/*exGridLinesGeometric*/
oGrid:SetProperty("BackColorAlternate",AutomationTranslateColor( GraMakeRGBColor ( { 240,240,240 } ) , .F. ))
oGrid:ShowFocusRect := .F.
oGrid:Columns():Add("Default")
oItems := oGrid:Items()
oItems:AddItem("before item")
h := oItems:AddItem("<solidline> <c><b>Bank Account</b></solidline><br>+ owner: String <r><a 1;e64=gA8ABzABvABsABpABkg8JABuABlAA+AAgAECMcTi4AMwAM4AjMGhEGOUVAA4AAwk8plcqihwAElg0wiUlOkOiUEgQvgcFhsKhkIhUQiUUnccj0gn0jmMagUlowAMNOpEfkMNkkmlEqrctjQmAAjAA5AA2sssHcbnkdq1Ln1QtVSjQAAEBA==>▲</a><br><solidline>+ balance: Currency = 0</solidline><br>+ deposit(amount: Currency)<r><a 2;e64=gA8ABjAA+AECMwAM8DABvABshoAOQAEAAHAAGEWjEajMGNoAMoAOgANERMgAOcHAAvAEJhcEh0Qh0Tg0CmkqMMFlUuhkxiMTisXjNCjk6EwAEYAHIAG1MjY7lUsnkwh8/nUClk5gwAAEBA==> " +;
"650;</a><br>+ withdraw(amount: Currency)")
oItems:SetProperty("CellValueFormat",h,0,1/*exHTML*/)
oItems:SetProperty("CellSingleLine",h,0,0/*exCaptionWordWrap*/)
oItems:AddItem("after item")
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1192
|
Expandable-caption

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oItems
LOCAL h
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:BeginUpdate()
oGrid:ColumnAutoResize := .T.
oGrid:TreeColumnIndex := -1
oGrid:DrawGridLines := -1/*exAllLines*/
oGrid:GridLineStyle := 512/*exGridLinesGeometric*/
oGrid:SetProperty("BackColorAlternate",AutomationTranslateColor( GraMakeRGBColor ( { 240,240,240 } ) , .F. ))
oGrid:ShowFocusRect := .F.
oGrid:Columns():Add("Default")
oItems := oGrid:Items()
oItems:AddItem("before item")
h := oItems:AddItem("<solidline><b>Header</b></solidline><br>Line1<r><a ;exp=show lines>+</a><br>Line2<br>Line3")
oItems:SetProperty("CellValueFormat",h,0,1/*exHTML*/)
oItems:SetProperty("CellSingleLine",h,0,0/*exCaptionWordWrap*/)
oItems:AddItem("after item")
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1191
|
Force hover-all feature
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:SetProperty("Background",500/*exScrollHoverAll*/,-1)
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1190
|
Disable hover-all feature (Windows 11 or greater)
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:SetProperty("Background",500/*exScrollHoverAll*/,AutomationTranslateColor( GraMakeRGBColor ( { 1,0,0 } ) , .F. ))
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1189
|
Display a custom tooltip
PROCEDURE OnMouseMove(oGrid,Button,Shift,X,Y)
oGrid:ShowToolTip("new content","",,"+8","+8")
RETURN
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:MouseMove := {|Button,Shift,X,Y| OnMouseMove(oGrid,Button,Shift,X,Y)} /*Occurs when the user moves the mouse.*/
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1188
|
Shows the tooltip of the object moved relative to its default position
PROCEDURE OnMouseMove(oGrid,Button,Shift,X,Y)
oGrid:ShowToolTip("<null>","<null>",,"+8","+8")
RETURN
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:MouseMove := {|Button,Shift,X,Y| OnMouseMove(oGrid,Button,Shift,X,Y)} /*Occurs when the user moves the mouse.*/
oGrid:ColumnAutoResize := .F.
oGrid:Columns():Add("tootip"):ToolTip := "this is a tooltip assigned to a column"
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1187
|
Delete all records
PROCEDURE OnButtonClick(oGrid,Item,ColIndex,Key)
LOCAL cmd
cmd := CreateObject("ADODB.Command")
cmd:ActiveConnection := oGrid:DataSource():ActiveConnection()
cmd:CommandText := "Delete * from ORDERS"
cmd:CommandType := 1/*adCmdText*/
cmd:Execute()
oGrid:DataSource():Requery()
RETURN
PROCEDURE OnError(oGrid,Error,Description)
DevOut( Transform(Description,"") )
RETURN
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oItems
LOCAL h
LOCAL rs
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:ButtonClick := {|Item,ColIndex,Key| OnButtonClick(oGrid,Item,ColIndex,Key)} /*Occurs when user clicks on the cell's button.*/
oGrid:Error := {|Error,Description| OnError(oGrid,Error,Description)} /*Fired when an internal error occurs.*/
oGrid:BeginUpdate()
oGrid:HeaderAppearance := 4/*Etched*/
oGrid:ColumnAutoResize := .F.
rs := CreateObject("ADODB.Recordset")
rs:Open("Select * From Orders","Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExGrid\Sample\Access\misc.accdb",1/*adOpenKeyset*/,3/*adLockOptimistic*/)
oGrid:DataSource := rs
oGrid:ConditionalFormats():Add("%1=12345"):SetProperty("BackColor",AutomationTranslateColor( GraMakeRGBColor ( { 240,240,240 } ) , .F. ))
oItems := oGrid:Items()
oItems:SetProperty("LockedItemCount",0/*exTop*/,1)
h := oItems:LockedItem(0/*exTop*/,0)
oItems:SetProperty("ItemDivider",h,0)
oItems:SetProperty("CellHasButton",h,0,.T.)
oItems:SetProperty("CellValue",h,0,"Requery (delete all records, using ADODB.Command)")
oItems:SetProperty("CellHAlignment",h,0,1/*CenterAlignment*/)
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1186
|
How can I get a cell that shows the sum of a column of minutes in hours + minutes format

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oColumn
LOCAL oEditor
LOCAL oItems
LOCAL h
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:BeginUpdate()
oGrid:HeaderAppearance := 4/*Etched*/
oColumn := oGrid:Columns():Add("Minutes")
oColumn:SortType := 1/*SortNumeric*/
oEditor := oColumn:Editor()
oEditor:EditType := 1/*EditType*/
oEditor:Numeric := -1/*exInteger*/
oItems := oGrid:Items()
oItems:AddItem(10)
oItems:AddItem(20)
oItems:AddItem(30)
oItems:AddItem(40)
oItems:AddItem(50)
h := oItems:AddItem("sum(all,dir,dbl(%0))")
oItems:SetProperty("SelectableItem",h,.F.)
oItems:SetProperty("SortableItem",h,.F.)
oItems:SetProperty("CellValueFormat",h,0,5/*exTotalField+exHTML*/)
oItems:SetProperty("CellHAlignment",h,0,2/*RightAlignment*/)
oItems:SetProperty("FormatCell",h,0,"'<b>HH:NN</b>: '+ (int(value/60) lpad '00') + ':' + ((value mod 60) lpad '00')")
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1185
|
Highlight the match once the filter is applied

PROCEDURE OnFilterChange(oGrid)
LOCAL format
format := oGrid:FormatABC("`lower(value) replace lower('` + value + `') with '<bgcolor 000000><fgcolor FFFFFF>` + value + `</fgcolor></bgcolor>'`",oGrid:FilterBarPromptPattern())
oGrid:Columns:Item(0):FormatColumn := Transform(format,"")
oGrid:Columns:Item(1):FormatColumn := Transform(format,"")
oGrid:Columns:Item(2):FormatColumn := Transform(format,"")
RETURN
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oColumn,oColumn1,oColumn2
LOCAL oColumns
LOCAL oItems
LOCAL h0
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:FilterChange := {|| OnFilterChange(oGrid)} /*Occurs when filter was changed.*/
oGrid:BeginUpdate()
oGrid:SetProperty("SelBackColor",oGrid:BackColor())
oGrid:SetProperty("SelForeColor",oGrid:ForeColor())
oGrid:ColumnAutoResize := .T.
oGrid:ContinueColumnScroll := .F.
oGrid:MarkSearchColumn := .F.
oGrid:SearchColumnIndex := 1
oGrid:HeaderAppearance := 4/*Etched*/
oGrid:HeaderHeight := 23
oGrid:SetProperty("BackColorLevelHeader",oGrid:BackColor())
oGrid:FilterBarCaption := "`<b>` + value + `</b><r><fgcolor=808080>` + ( matchitemcount < 0 ? abs(matchitemcount + 1) + ` result(s)` : ``)"
oGrid:FilterBarPromptVisible := 2055/*exFilterBarCompact+exFilterBarCaptionVisible+exFilterBarVisible+exFilterBarPromptVisible*/
oGrid:SetProperty("FilterBarBackColor",oGrid:BackColor())
oGrid:FilterBarPromptPattern := "and"
oColumns := oGrid:Columns()
oColumn := oColumns:Add("Name")
oColumn:SetProperty("Def",17/*exCellValueFormat*/,1)
oColumn:FormatColumn := "lower(value)"
oColumn1 := oColumns:Add("Title")
oColumn1:SetProperty("Def",17/*exCellValueFormat*/,1)
oColumn1:FormatColumn := "lower(value)"
oColumn2 := oColumns:Add("City")
oColumn2:SetProperty("Def",17/*exCellValueFormat*/,1)
oColumn2:FormatColumn := "lower(value)"
oItems := oGrid:Items()
h0 := oItems:AddItem("Nancy Davolio")
oItems:SetProperty("CellValue",h0,1,"Sales Representative")
oItems:SetProperty("CellValue",h0,2,"Seattle")
h0 := oItems:AddItem("Andrew Fuller")
oItems:SetProperty("CellValue",h0,1,"Vice President, Sales")
oItems:SetProperty("CellValue",h0,2,"Tacoma")
oItems:SetProperty("SelectItem",h0,.T.)
h0 := oItems:AddItem("Janet Leverling")
oItems:SetProperty("CellValue",h0,1,"Sales Representative")
oItems:SetProperty("CellValue",h0,2,"Kirkland")
h0 := oItems:AddItem("Margaret Peacock")
oItems:SetProperty("CellValue",h0,1,"Sales Representative")
oItems:SetProperty("CellValue",h0,2,"Redmond")
h0 := oItems:AddItem("Steven Buchanan")
oItems:SetProperty("CellValue",h0,1,"Sales Manager")
oItems:SetProperty("CellValue",h0,2,"London")
h0 := oItems:AddItem("Michael Suyama")
oItems:SetProperty("CellValue",h0,1,"Sales Representative")
oItems:SetProperty("CellValue",h0,2,"London")
h0 := oItems:AddItem("Robert King")
oItems:SetProperty("CellValue",h0,1,"Sales Representative")
oItems:SetProperty("CellValue",h0,2,"London")
h0 := oItems:AddItem("Laura Callahan")
oItems:SetProperty("CellValue",h0,1,"Inside Sales Coordinator")
oItems:SetProperty("CellValue",h0,2,"Seattle")
h0 := oItems:AddItem("Anne Dodsworth")
oItems:SetProperty("CellValue",h0,1,"Sales Representative")
oItems:SetProperty("CellValue",h0,2,"London")
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1184
|
The count of filtered items includes the group-parents. How can I exclude them from count

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oItems
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:BeginUpdate()
oGrid:DrawGridLines := 2/*exVLines*/
oGrid:HeaderAppearance := 1/*Flat*/
oGrid:HeaderHeight := 24
oGrid:SortBarHeight := 28
oGrid:SortBarVisible := .T.
oGrid:AllowGroupBy := .T.
oGrid:Columns():Add("Col 1")
oGrid:Columns():Add("Col 2")
oItems := oGrid:Items()
oItems:SetProperty("CellValue",oItems:AddItem("219 Smith"),1,"Ignacio 1234")
oItems:SetProperty("CellValue",oItems:AddItem("1666 County Road 309A"),1,"897 Manassa")
oItems:SetProperty("CellValue",oItems:AddItem("38 Lone Pine"),1,"Durango 11")
oItems:SetProperty("CellValue",oItems:AddItem("612 Jachim Street"),1,"Lamar 222")
oGrid:Layout := "MultipleSort=" + CHR(34) + "C1:1" + CHR(34) + ""
oGrid:FilterBarCaption := "`<b>` + value + `</b><r><fgcolor=808080>` + ( matchitemcount < 0 ? leafitemcount + ` result(s)` : ``)"
oGrid:FilterBarPromptVisible := 2055/*exFilterBarCompact+exFilterBarCaptionVisible+exFilterBarVisible+exFilterBarPromptVisible*/
oGrid:FilterBarPromptType := 257/*exFilterPromptCaseSensitive+exFilterPromptContainsAll*/
oGrid:FilterBarPromptPattern := "12"
oGrid:SetProperty("FilterBarBackColor",oGrid:BackColor())
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1183
|
Is it possible to display the count of filtered items

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oItems
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:BeginUpdate()
oGrid:DrawGridLines := 2/*exVLines*/
oGrid:HeaderAppearance := 4/*Etched*/
oGrid:HeaderHeight := 24
oGrid:Columns():Add("Col 1")
oGrid:Columns():Add("Col 2")
oItems := oGrid:Items()
oItems:SetProperty("CellValue",oItems:AddItem("219 Smith"),1,"Ignacio 1234")
oItems:SetProperty("CellValue",oItems:AddItem("1666 County Road 309A"),1,"897 Manassa")
oItems:SetProperty("CellValue",oItems:AddItem("38 Lone Pine"),1,"Durango 11")
oItems:SetProperty("CellValue",oItems:AddItem("612 Jachim Street"),1,"Lamar 222")
oGrid:FilterBarCaption := "`<b>` + value + `</b><r><fgcolor=808080>` + ( matchitemcount < 0 ? abs(matchitemcount + 1) + ` result(s)` : ``)"
oGrid:FilterBarPromptVisible := 2055/*exFilterBarCompact+exFilterBarCaptionVisible+exFilterBarVisible+exFilterBarPromptVisible*/
oGrid:FilterBarPromptType := 257/*exFilterPromptCaseSensitive+exFilterPromptContainsAll*/
oGrid:FilterBarPromptPattern := "12"
oGrid:SetProperty("FilterBarBackColor",oGrid:BackColor())
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1182
|
GroupBy code

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL rs
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:BeginUpdate()
oGrid:ColumnAutoResize := .F.
oGrid:ContinueColumnScroll := .F.
oGrid:CountLockedColumns := 1
oGrid:SetProperty("BackColorLock",AutomationTranslateColor( GraMakeRGBColor ( { 248,248,248 } ) , .F. ))
oGrid:HasLines := 1/*exSolidLine*/
oGrid:LinesAtRoot := 5/*exGroupLinesOutside*/
rs := CreateObject("ADOR.Recordset")
rs:Open("Orders","Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExGrid\Sample\Access\misc.accdb",3/*adOpenStatic*/,3/*adLockOptimistic*/)
oGrid:DataSource := rs
oGrid:SortBarVisible := .T.
oGrid:SingleSort := .F.
oGrid:AllowGroupBy := .T.
oGrid:Columns:Item(0):Width := 128
oGrid:Layout := "MultipleSort = " + CHR(34) + "C12:1 C1:2" + CHR(34) + ""
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1181
|
ADOR, MDB (JET)
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL rs
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:BeginUpdate()
oGrid:ColumnAutoResize := .F.
rs := CreateObject("ADOR.Recordset")
rs:Open("Orders","Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Program Files\Exontrol\ExGrid\Sample\Access\misc.mdb",3/*adOpenStatic*/,3/*adLockOptimistic*/)
oGrid:DataSource := rs
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1180
|
Editors (ImageSize = 32)

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oAppearance
LOCAL oComboBox
LOCAL oEditor,oEditor1,oEditor10,oEditor11,oEditor12,oEditor2,oEditor3,oEditor4,oEditor5,oEditor6,oEditor7,oEditor8,oEditor9
LOCAL oItems
LOCAL h
LOCAL rs
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:BeginUpdate()
oGrid:ImageSize := 32
oGrid:DefaultItemHeight := 36
oGrid:HeaderHeight := oGrid:DefaultItemHeight()
oGrid:SortBarHeight := oGrid:DefaultItemHeight()
oGrid:Font():Size := 16
oGrid:FilterBarFont():Size := oGrid:Font():Size()
oGrid:ToolTipFont():Size := oGrid:Font():Size()
oGrid:Indent := 26
oGrid:Images("gBJJgBAIDAAEg4AEEKAD/hz/EMNh8TIRNGwAjEZAEXjAojKAjMLjABhkaABAk0plUrlktl0vmExmUzmk1m03nE5nU7nk9miAoE+oVDolFo1HpFJpU5h8Sf9OqFNqUOqNUqdPq9VrFWrlbr1QpdhAFAkFis1ntFptVrtkrpszrNvmVxqk3uVtm1kmF3sdBvF/wGBmV+j9BYGHwWJulfxdax2NyFdx2JlV6l9Nw7AAGZymdz2Cy2GxErvWcz9ivlwyV21cuxugwktzGIzmvwtl0+53U5y0a0Wazmmyu/3dCyOMyXHx/J5nIr9q3uyqnBxFN3G46ma4vb7mD2Ng4nZze00fDkHC7t7us2rOX5tguetpHRlmz4HVqnXk1PjHO+CMPo9MBMC+j2vC8j7wS8cFNI4kBo05UIvfCT/NsnsApU+0Fqg/T+oy/kPxC0sEQfErKQK96+w28UWRI8UGvO8sTLS9r2PWmsMJTDTask3CsIbIEQRA3shOXEEAO/GclJ9" +;
"FEKrrA8FRbKMXRIlb0JxCkjS1LMswhCcvuel0cv26cSMa8Ufx+2sQwhEUoSXOCjSbLcnxjKc7sdKUVyq28NtVI71P9P7JxtQEapjQ6fzfM8zPfNE2PhIsLL63E40slk5y7N89LcyU9SvMb3SdUc6VJLj5VLVLfO/PS9KzNFHUa/0XyBD0dxlS9cxhMlTRSoNXypPErWDPyfNS+MwprRNO0FD8wVVZ1AI08URwVRjtJ1WCn21QkkUrXVLVPQS/XIkFgTxT9iONZ9xVTdq+L1eKg3kkF6Upe68XtfV51/MtrVjBlwYFL1ev8y1/P6/lyzzYl02wntj0RVFmS1Qa+M5as93QxEUW9e993rfmQ2+vy65M/mL1lhl/2bj2ByVduMtNhCJT9hdz41nN14Ld12Z9UjfI/oUAaGseiw6+uFLLhcVabJOS5RqOE0BHlZ5VnEr5fOMs3st+aa/bbRzrJGV51Y0b0DbqaWXZD90hIsPbjWu52+6Wyadpe66hhO+P/Xi" +;
"oW5rD8ZbrUZuVg6n1dsE/cXmewu1m9PVwnd35/nueXho/NaJzmjc61W76esuT77eG8pTquy9TwWH8LEzG8RDfFalx3Gcfvna9rvG/cptGLd9tuI6TZOP5Fiqi99vea+X4VRcBq/JZZtVQ9cwSs5lsXE372+a9z7PbfB3VVqHyvMctLto8uob6eV0m/cD6MN2v+T33t6sBut42vdv2bJ8a997x2maFJfK+qArbGJPEKE+1qTflMsIdW/GCJX17KcT6/czr/X+u1g29B7j/4BQfWkkx4zIHisjhPCmE0K4SwtXM+d4BvHRwNZOoBph9IJvPek9d40FoMJxf691jj2ywQQcHEWET4XJwkTszlVqm2GokewxtBT1DpQjRxDN0rUVDNKdC3lb6tzNOwh6upMSSYfv4YBCl/bsn9PxiFCEo7SI6Obc9HeOrnY8x4jtHtdpN4GRbaorhsbu18Pph5CiHymI0RpSXGJ/z2oUOxYxG858AyiI+bfJtuTcG5yelBJy" +;
"T8okhqFd4a5yxL0rvulYtKCsZiWxWkc1s1cRoxxwhA31DLE0mR9l9HqX8fJgTDmFMVH0MIsRzVYnwnMi1dyzmhLt2kS2pxIiU62Wj5ptQGlSYFakLonTUJNLKaM5WzlffEkuFkk5wTrhVO2eE7G6lJhxFFYUZ55zmn0WuBCD4pzhirFCKkbomsOoIYmZx5p90LoYWGPdD5g0QmJRKYxbZ6zYoVQ2jVGylSak7KSkFH6RSjpHKFuU+YMyNo5SulkC6I0vonTCitMXPoEpVS2H5FQfEqp2R1opIgAEkJISYARTCukOhmPNI5Ex/wzGHUsicMwA1LHgQ90Y/KpoQHAD+pB/R4NzIaMAB9Xaw1gqaAOsh/A/ptIkWUfhGK1kZH8RgH5GqvgArqRmt4AAPrTroRofBGADkqr6Rmu4D7CEaHARiwpJrEEZsXXwlVjyMWRsaRqwdkLGNBABZmytmyMnaINZqyVpLR2ftKAAAdd6h2osbaskdiq4EZtgSmyNcbVW" +;
"RJNXe3AA7REar3b0stlAAXBtoRmvJGLjEYAHUWsFcwCD/rnaop9aEICMAPdK5hT6xpeuzdOtAgKuJeGfdq6ggEbkTvAP+p9UCHXrvKkcgIA==")
oAppearance := oGrid:VisualAppearance()
oAppearance:Add(1,"gBFLBCJwBAEHhEJAAEhABfICg6AADACAxRDgMQBQKAAzQFAYbhkGCGAAGMZxRgmFgAQhFcZQSKUOQTDKMIziaQAGgkNQwCSLIwjNIsBxPFKVQChEYxSjKA40SJNUgyj6CCY+QLIE5PfQgAL9I6eJABCCSQKkYx0HScRiwPBIbAZAYhCZqaKhWgkKI/WBQIABRDVLx5ESiLRtKy7Mq2bpvXBcNxXHalaztO68LxvKyqHb5fJ/PpgL4YHgmC4NQ7EMRwF6rfbyfZ7Xg/ORPTijZ4sdzMHTzJyscx3HqfaBoOaZU5eMLceTUMofHIndxCcasPbsOatVqjG5sYjcGC3La9cz3Pq/bpuDCbMxuaK1TrYXr1TTrcofBDldAxXRKDxRDWVhLnYOw9i6XxzjuXprCaOoKB6EwbiCZZCGOdZYlcT4xHmbhMnwNxtn+G5bmqdZ7n4Pw/i+X5zm+dQ9g4CAFjsfAJheOI8HsDoWDWTB/lwSAQkmA5PEgRYoDyDwYFY" +;
"FoFmGCBmBqBphDgRJ0gOTIYBGRB/lyRh0iSCZbjYWJzgWDwIjYLoLmMCJGDKDJjBgWgqG6YhyhGHRzA2aJ1mCABOAiOJvhCZBJBYRoRmSCQmEqEQimkAZgg8TZnDCV4UkmCUmBKZYJGYWoWCUUhiFMNZckNUh2GENoaGaGZmgmJhqhqZpGGIEx2GYIxSGGGJdggWJth2Z4JmYeoemeSZ2H6H4hGmQhihyTRHGYLg7CiCgmgqIpokoNoOiOaJ4jqAochqaZGgaCxpAoZoaiaaJqEmWIcGgShcnCJwqEqFoR3YOoFlgchflqNouiuawHmWSYqGkWZQhcatzmaOoumuSp2j6L5bBaKo0GQKRnGGCxqiyCwmkqMpsksNpOGUGI7A0ew1G0Rxlg0PptgsZuDG2Sx2l6N5tnYNZZjUDRXDCVo5l2FoymqOpukuNpujubwLjmWY5k0ZwxkaFxYlWdp6j6b5Lnafo/nABQdg2FxcUsY5BkmXAkmeQpckwNRrkKTh" +;
"8CSHZBk4NwyC4KxxgMDwakOMZDn8GgwnGAo2C4cwthMcwmCcMoHBMHRehwTIghySYNksZwcH4HBMEsHx5hyPItiweYxnwSZEH4Mozn0fR+DMAo7EYJ50gkdZelKdNql2UgJn0GIukwH4HicQRai2GI4mSVpNl0dZGledgNgcYpYDWUx3FsOQi5YV5anaTY3G6W53A2RxylydxFjiaxEFCCgBBAQ==")
oAppearance:Add(2,"gBFLBCJwBAEHhEJAAEhABcoFg6AADACAxRDgMQBQKAAzQFAYbhkGCGAAGMZxRgmFgAQhFcZQSKUOQTDKMIziaQAGgkNQwCSLIwjNIsBxPFKVQChEYxSjKA40SJNUgyj6CCY+QLIE5PfQgAL9I6eJABCCSQKkYx0HScRiwPBIbAZAYhCZqaKhWgkKI/WBQIABRDVLx5ESiLRtKy7Mq2bpvXBcNxXHalaztO68LxvKyqHb5fJ/PpgL4YHgmC4NQ7EMRwF6rfbyfZ7Xg/ORPTijZ4sdzMHTzJyscx3HqfaBoOaZU5eMLceTUMofHIndxCcasPbsLpOS5LNKsaxmWLYdhFdTxQi6LpvfA8BwXC6JY7heRYRbFbYxRjGNi1TS7G4nGKd5WGuL4UHwI4VkaYxii8V4pgQMgVBQdQ5iCTYGi8T4vlWbJ3nuPg+l+H5AlSCg6ByPBoE8Ap3jqYxhBido5g0OgOGOGI4CsSpCCAcgcAuEokiEN5NCKfJ9DyTRjnS" +;
"cg1CEYxOBmBpPCgagdgcIZoHoGIFA4AxQkCAxKAgKBwgGSpIBCZhjF2E5UnQPQMiMCJBCIBwxkSQgsgo+JtDKT4ziiQw+k6EwAnsOgLnkHI+yCQ4iEuE4klkPhShEJBpAoPgymOMoaDgHBjFMBgyD0HYTiCZSZhIIIGC4ChiHSew5kwM5omILZPiOBI0hwZw5kodIdA+M4Uj4PxOmMSJ9DuTQzmyZgviceZagaHVfj4awwmaAh2GUIYmCOEZZDaDRDFGdwcg4EwyHMN4LBOaJbCoaZqgKH8qkMfIyD8DozDyfA7A0Coui0OpMmOZJdCsahKg6NooioChwmEMxLEoXJbDUTRXGSUgykyMgQG0GpPHMdI3D4TRCgSeQ0kmaw+lGNAtCOZJVCiT5DhyRQwAqMg0EoDBBGEGAsASC5yiSCw+k4Mp6lWNQuksTpRjMTxDGzJwGmGMpDDKXYTECSAxl6Q5olkK4PgMMIVkASRMBMBgzEkaZEjsNALhIZA6AeQB" +;
"gk0ZJEgAAJ0CIAgODMNIsD6DRih9uYwFyAwfCUb5ijmbI+gwdxkk8MZMGeMpPCkDxzBiC5MHMPJLDSSROFMLIoBEQogEMFJPnENYQGgE4DCOaJfC7tYkhGTQ0kyWwykuXpMiyRpKjKR4wngM4JmOWJACCdYtHMWw+Eych4nINYLAEYA8AgdAEEsQZajaQoog4GxPiMVIolcdxNG8XZVkmNoRwWRVBlFeFEeAZQJgnFiHgHwcAhjhHgGMSI5xki2CyA4EQsA3i0HkBsLwKRFgAHcPkHopBJBcBeDUYI7xyDOHqKkWo2hLCsDIBIY4qQ5A8DoMMYwOAqCSBGKgU4yB2iDBwIgB4hxQgAAWNgBoAgsBdEcBUQ4sQ9A/HqD0JI8RpBzH2OYVgahLBHFiJQJweQiDhDUE4SAARQAzFsG0EQwA6AOWSBkFgVAIBCHeGERQFQiCQHeFkC4vkiB8DyB4F4QxVDvGMNEOQexMjlBeOAKQiQLgfDA7QEAaRiBdEkH8" +;
"TI7AZiFBAGYBIABWjYBiGACioQ4C1A+AMMgWhfgxHgPsT4URIB0COKgPgjRwiAB8AYUArxBgCF6J4GY5hrAOCAPAAoGRRCsCIMEXATXfgAF8BMJwURuEQDgD4Q4OBoAeHGFgLIwQrC2D0JoSQ+QvhrHoSgQI8AbDFGID8C4Ah6BQAQAASACwgCYCMAUMARAvCKAiAMCAokeCKBEOAKgCBoDaHuMsEAqwJDiACDURg8R6gPCyDofYWAhgoDIJ4ZAuhoiGAYGgRoQw/A0GMMga4GwxiEDeIYYInATCDBQAoBAwAoDlA0KMBoVRGiDGwDQUYIRsgaGGDgM4LAwDWB8EcIA1APhjEgGQVwgRIgjFIIQHokgZA+CSEkLIKQSjHAwMsCwDAsAEB2ABTIwRwD6A8CMToSxkAxE4HYIw+BsgbBEDAHYBwojCBoIYFgXSjABE4MsHIbQWhlGILQS4UhvBdAUKEEwHgxDAAABQQQUAhgKHiDwE4JS4A7BGLQZwCR4g" +;
"aBEMUYAqgKApHgGwVAIRNgvBMMQXImwZDtE4I8UIyAZCDCAE8AwrhgAdEEBACQLRCg4FEB4AYtA7CdEiPQMoJAMDNCkOMCAXAFDhH0D0Q4EgfAaGSK4NYzRUj9BuCgAgswOBjB4Fqpw8B2ADAwE4A4Qx2DAE6JIaQPQGhAGKBcIQ5B5gHByKIFARwADbAyKUfgdBKBBGyEcVIAB/ijHoIoSA0gdBNl+OATYERZgBGSDYWIWAUCEGKA4FAhR7CIBtYQGYZg4CMAiKEcAOwkBjHWE8Z4lQgA+DkBoTohwwCeAaMEEgBQCCABgHMRwQRhhMEWFQd4HwZgwDqFESItAbAGEANCpINAzANCCJkK4ah+heFYBURwsQrS2CsMYMoWGBhYDWI0EInQgiApXaOVI1QFDsC8MUNoMBMA1HMJga4eh+BeAWOgNNowGjYzCGAAwax+iJBeBVT4gxoBIAGFsJFBxgBiGKFkKQ7g5DFFQEcAo4AzDDACKEQQLgCiJDYB0M" +;
"gRBCCQAgQEA==")
oAppearance:Add(3,"gBFLBCJwBAEHhEJAAEhABQ4Fg6AADACAxRDgMQBQKAAzQFAYbhkGCGAAGMZxRgmFgAQhFcZQSKUOQTDKMIziaQAGgkNQwCSLIwjNIsBxPFKVQChEYxSjKA40SJNUgyj6CCY+QLIE5PfQgAL9I6eJABCCSQKkYx0HScRiwPBIbAZAYhCZqaKhWgkKI/WBQIABRDVLx5ESiLRtKy7Mq2bpvXBcNxXHalaztO68LxvKyqHb5fJ/PpgL4YHgmC4NQ7EMRwF6rfbyfZ7Xg/ORPTijZ4sdzMHTzJyscx3HqfaBoOaZU5eMLceTUMofHIndxCcasPbsLpOS5LNKsaxmWLYdhFdTxQi6LpvfA8BwXC6JY7heRYRbFbYxRjGNi1TS7G4nGKd5WGuL4UHwI4VkaYxii8V4pgQMgVBQdQ5iCTYGi8T4vlWbJ3nuPg+l+H5AlSCg6ByPBoE8Ap3jqYxhBido5g0OgOGOGI4CsSpCCAcgcAuEosiYN5NHMOJ+D4TpTnS" +;
"eQ7CEY4uBmBpPhgagdgcIZoHibIEyUBJZDQIJShoCgcCAcoyAQOYYlcZJ1D0DxDCiQgwEiAZMHEMJLFKPJ9D2DoDnidQ4k+Y5QmKEROBkIhKD0JIZDIS4TGUCQuEeEJjnOIg8CuY4RkYNgwGMM5RllGpThDRYIGKZIpCkJFUH0PINyWcQ3CaaZCG+HBnEOTJhD8Tx4GoeQ/GcaZSHOH5nCmQhshoZhihYYwhiYA4RlkNoNEMUZ3ByDjwEsPxOnMaJ9DuDR6F6GYmCmKh0nANtMioP4Gg8aoSiIO5NhodociqaY6GaFYkEyOg8lsNRNTaUgykyMgQG0GpPiONJbD8DpDEyfA6k0KwOkWMQsGsAJU0SagwkoJQJDIPISCQCJTGSUwyGaM4KkmMgtksHpFjAZ4TGCBAbgaSpcksdhNAMIJHHsD5TjSWWMAMOpwjyLwbk6cAz0KRJiDkDYzESCwiggcgcgYIQwCIEINCMCITj6TVxkMXp2j0cQLlCTo7E2F4" +;
"ymkMZdhMPJHDGHpLAyVg+k4UwrCCSIyByDJ8DuDY8CiWY0kiXAXC6QJwFKGIjCeJpjgyezjlyDw6klHx5myRoMGwZwbkcToTEiew4kwbQfEmUgPkOKJUD4DpTHSHQmgkXI/ASTA1g0XIEDMTBimyfI7jSLYHEiUoPk0Fw/kadAsHGao8A0A5smEMJ2mNyg5gzJZwDgCpChyIZVyIZwFCMJEPASRkBqE+IcHInRcDxA2H4bIsx0AtDsIBpwZwYicD6BscwDwUBgHCIYaIfgtiVH2O4WgUwJjEFeAEQA7y4hMCiBMS4aRdB9A4CYE4LxljyBMHcDItBxinDCLcTYmgejBFQ9UTg9gFBOEmAQTI7A4iZGMGkQAWQ7jYA2HIL8BRAjDG4HcCwARbjZHiNoDw1nLDnGyNINQ+wjCpBMEgcovQUgICQJEcgWRuBvAyJ4d4ugpCUAINcHogxIgnDiM4N4axzD3F2JMTY/hRqYF6FsWIxhYAGGoAALQYgYirBwBE" +;
"BwpAjBEAAIEIYsA2gOHCMAGgXAACIDmMITAUgFABH0D0I4WwvhNFGMAOIvxRD2GKNcMA8gjAPDCPwBogRPAxA8PgRwZRICYDED8RAXQEghEAN8DIgwIBdB4JYWwMgtiQHoFQKAiRFguFKGwGQhglDsEOVwEQQRkCKBwOIHgSREDRBYHEXQcQdD7GIGARQHRxipBrMobgewDCUCADsEYWAzgMHKHQDQxxsDzA6EMfAeQHB4GQDkUYPA0iECiKoGgRhcDdA2GMQA8AOCjDSPgHI4QnApAKBICwHg1A+BcAwcYsgbjGGQNkCIgRsA6EcBEWANADjsB0B8YYzQQDIGSBcEYZBCCPEkFIHQSgkgZAwG4IwBAbAYGGAgL4Ch4g8BOCQAA2KKC0GcAke4AAXAFCoHkDw4xbBFEcJkE4JRSiEFeJYKQVRMgJHODwX4xAgC/AsIIZAeAHDRG0HYI40RKCLEGDUI4jAghwBWIceA+whCpHMFYZYOQxglDMHMBQGxYj" +;
"VHiAoBIPgfgHGwPsHYJRSB6A0IERQLhCjJHMA4OQoAoCOACLYGYSx8DpBQIMWQdRnDRH+DsE4fB3CeAmM67kAAXBFEIDYDI7wLBtEoEIfYNwjiUGGJQYQMAjCHEAO0C4zxW29CoCgfIxR9AKA6J8BgUAIhDGMIoJ40hqgwCgKETgnBhhqCGI0AIqgZhGDANQDIlBDCRGkCoJISR0g1BSKQOgfAzBRG0DYHARh4DeDAOwANuw8ApCKKkYg/RPhjBsH0J4yg5hPGWN0GwFBHQBFaDoQIURljFAoB4GgzRVzbBECQFQRQoguHGHANwDRdCKy8CgSIGwhhoDYJYYI1giBICSAEgI=")
oAppearance:Add(4,"gBFLBCJwBAEHhEJAAEhABUYCg6AADACAxRDgMQBQKAAzQFAYbhkGCGAAGMZxRgmFgAQhFcZQSKUOQTDKMIziYBYfgkMIgSbJUgDGAkRRdDSOYDmGQYDiCIoRShOMIjHLUXxtDaIZwhEAoJb+RgAUY/cTzaAEUwHHiTKInaCQShsFYJUJAdRURQ9EwvCIZBpEWwLChENQwWLCNj2TScBwjCyqbale45ViqdoDU5EUiXJJ8ZxnECfYyrGjaMpCeKBUrGYTVRBIMxLLSia5oeJqMrnBpNVrIUgXCAGFwHK6BcauXIIDp6XoWWRbAAWDpVVzNNC3YzkCIceADHKiXxmVz4JLdGZ1QTGID2XaYaxWK4oZjsVSc4KDHbETbHFi9Fo3NaaxGisew+GYc4HlCR5NAAAIIEkQJSGMOgdE4RhYDwJJsAaAYQgmPpolCWgSCiBJzjcEIAkQXIBm8d5UhOQgCDUIBDDJDhgggJgKgKYJIDSVoDk8KBFF4OohEMZgWDs" +;
"YYDj4GoGmGSB2B6B5iAiBgYDsYRjGSbIJo4RgqDuIpIAoLoLmMCJGDKDJjJiLA7xqUAAgGTwYnYPoPmQCQGEKEJkEkFg9gGY44BoRoSmSSQ2EKEggHgRhShSZRJFYVoVmWCRmFKFAgGOTheheZgJgYYoYmYSYWGaF4lkMMJ0hqZpJjYbobmcCZGHKHJmjmJh0h2Z4JmYcIaE8WZ2H6H5oAoBoCiCaBKBYfdjGoJoKiKaJKDaDojmkChGgmIgpCoVoWiWaJZiSd4mmmSh2h6J5qAqBoiiiaY5iSeIpmqComiqKpqkqNouiuah6hqMIsmsSpWiuGhP1kOoumuSp2j6L5sAsBo54gKwWkaMZsgsJpKjKbJLDaRYxYWRpSjSbIZiSe41m2CxmlqNptksdpejebR5iSfI4m4S4W16boLiaao6m5fJ9jubwLkaco8m8S5WnaPZunuOp4j6b5Lnac4SA0PAGlgP4wEwFwGkGcIMCcCpCnCCxiA8NYAAmMJfkSbh" +;
"FCcFpFnGDBnBqRpUhuEwTDeZ5lHCfw6HIQxLCaAxygyJwqgGcATE4FA6hWY4tjEAAQBAgIA==")
oGrid:SetProperty("BackColorHeader",0x4c6c6c6)
oGrid:SetProperty("SelBackColor",0x4000000)
oGrid:SetProperty("SelForeColor",AutomationTranslateColor( GraMakeRGBColor ( { 0,0,1 } ) , .F. ))
oGrid:ShowFocusRect := .F.
oGrid:SetProperty("CheckImage",0/*Unchecked*/,16777216)
oGrid:SetProperty("CheckImage",1/*Checked*/,33554432)
oGrid:SetProperty("CheckImage",2/*PartialChecked*/,50331648)
oGrid:Columns():Add("Editors"):SetProperty("Def",17/*exCellValueFormat*/,1)
oItems := oGrid:Items()
oItems:CellEditor(oItems:AddItem("(ReadOnly)"),0):EditType := 0/*ReadOnly*/
oItems:CellEditor(oItems:AddItem("(EditType)"),0):EditType := 1/*EditType*/
h := oItems:AddItem("Value 1")
oEditor := oItems:CellEditor(h,0)
oEditor:EditType := 2/*DropDownType*/
oEditor:AddItem(1,"Value 1",1)
oEditor:AddItem(2,"Value 2",2)
oEditor:AddItem(3,"Value 3",3)
oItems:SetProperty("FormatCell",h,0,"value + ' (DropDownType)'")
h := oItems:AddItem(1)
oEditor1 := oItems:CellEditor(h,0)
oEditor1:EditType := 3/*DropDownListType*/
oEditor1:DropDownAutoWidth := 0/*exDropDownEditorWidth*/
oEditor1:AddItem(1,"Nancy Davolio",1)
oEditor1:AddItem(2,"Andrew Fuller",2)
oEditor1:AddItem(3,"Janet Leverling",3)
oEditor1:AddItem(4,"Peacock Margaret",3)
oEditor1:AddItem(5,"Steven Buchanan",2)
oEditor1:AddItem(6,"Michael Suyama",1)
oEditor1:AddItem(7,"Robert King",2)
oEditor1:AddItem(8,"Laura Callahan",3)
oEditor1:AddItem(9,"Anne Dodsworth",2)
oItems:SetProperty("FormatCell",h,0,"value + ' (DropDownList - single column list)'")
h := oItems:AddItem(1)
oEditor2 := oItems:CellEditor(h,0)
oEditor2:EditType := 3/*DropDownListType*/
oEditor2:DropDownAutoWidth := 0/*exDropDownEditorWidth*/
oEditor2:AddItem(1,"Nancy Davolio",1)
oEditor2:AddItem(2,"Andrew Fuller",2)
oEditor2:InsertItem(3,"Janet Leverling",3,2)
oEditor2:InsertItem(4,"Peacock Margaret",3,2)
oEditor2:InsertItem(5,"Steven Buchanan",2,2)
oEditor2:InsertItem(6,"Michael Suyama",1,5)
oEditor2:InsertItem(7,"Robert King",2,2)
oEditor2:InsertItem(8,"Laura Callahan",3,2)
oEditor2:InsertItem(9,"Anne Dodsworth",2,5)
oEditor2:ExpandAll()
oItems:SetProperty("FormatCell",h,0,"value + ' (DropDownList - single column tree)'")
h := oItems:AddItem(1)
oEditor3 := oItems:CellEditor(h,0)
oEditor3:EditType := 3/*DropDownListType*/
oEditor3:DropDownAutoWidth := 0/*exDropDownEditorWidth*/
oEditor3:SetProperty("Option",57/*exDropDownColumnCaption*/,"Name¦Title¦City¦Phone")
oEditor3:SetProperty("Option",58/*exDropDownColumnWidth*/,"312¦¦¦96")
oEditor3:AddItem(1,"Nancy Davolio¦Sales Representative¦Seattle¦(206) 555-9857",1)
oEditor3:AddItem(2,"Andrew Fuller¦<b>Vice President</b>, Sales¦Tacoma¦(206) 555-9482",2)
oEditor3:AddItem(3,"Janet Leverling¦Sales Representative¦Kirkland¦(206) 555-3412",3)
oEditor3:AddItem(4,"Peacock Margaret¦Sales Representative¦Redmond¦(206) 555-8122",3)
oEditor3:AddItem(5,"Steven Buchanan¦Sales Manager¦London¦(71) 555-4848",2)
oEditor3:AddItem(6,"Michael Suyama¦Sales Representative¦London¦(71) 555-7773",1)
oEditor3:AddItem(7,"Robert King¦Sales Representative¦Kirkland¦(71) 555-5598",2)
oEditor3:AddItem(8,"Laura Callahan¦Inside Sales Coordinator¦Seattle¦(206) 555-1189",3)
oEditor3:AddItem(9,"Anne Dodsworth¦Sales Representative¦London¦(71) 555-4444",2)
oItems:SetProperty("FormatCell",h,0,"value + ' (DropDownList - multiple columns list)'")
h := oItems:AddItem(1)
oEditor4 := oItems:CellEditor(h,0)
oEditor4:EditType := 3/*DropDownListType*/
oEditor4:DropDownAutoWidth := 0/*exDropDownEditorWidth*/
oEditor4:SetProperty("Option",57/*exDropDownColumnCaption*/,"Name¦Title¦City¦Phone")
oEditor4:SetProperty("Option",58/*exDropDownColumnWidth*/,"312¦¦¦96")
oEditor4:AddItem(1,"Nancy Davolio¦Sales Representative¦Seattle¦(206) 555-9857",1)
oEditor4:AddItem(2,"Andrew Fuller¦<b>Vice President</b>, Sales¦Tacoma¦(206) 555-9482",2)
oEditor4:InsertItem(3,"Janet Leverling¦Sales Representative¦Kirkland¦(206) 555-3412",3,2)
oEditor4:InsertItem(4,"Peacock Margaret¦Sales Representative¦Redmond¦(206) 555-8122",3,2)
oEditor4:InsertItem(5,"Steven Buchanan¦Sales Manager¦London¦(71) 555-4848",2,2)
oEditor4:InsertItem(6,"Michael Suyama¦Sales Representative¦London¦(71) 555-7773",1,5)
oEditor4:InsertItem(7,"Robert King¦Sales Representative¦Kirkland¦(71) 555-5598",2,2)
oEditor4:InsertItem(8,"Laura Callahan¦Inside Sales Coordinator¦Seattle¦(206) 555-1189",3,2)
oEditor4:InsertItem(9,"Anne Dodsworth¦Sales Representative¦London¦(71) 555-4444",2,5)
oEditor4:ExpandAll()
oItems:SetProperty("FormatCell",h,0,"value + ' (DropDownList - multiple columns tree)'")
h := oItems:AddItem(100)
oItems:CellEditor(h,0):EditType := 4/*SpinType*/
oItems:SetProperty("FormatCell",h,0,"value + ' (SpinType)'")
oItems:CellEditor(oItems:AddItem("(MemoType)"),0):EditType := 5/*MemoType*/
h := oItems:AddItem(3)
oEditor5 := oItems:CellEditor(h,0)
oEditor5:EditType := 6/*CheckListType*/
oEditor5:AddItem(1,"Border",1)
oEditor5:AddItem(2,"Single",2)
oEditor5:AddItem(4,"Frame",3)
oItems:SetProperty("FormatCell",h,0,"value + ' (CheckListType)'")
h := oItems:AddItem("193.226.40.161")
oEditor6 := oItems:CellEditor(h,0)
oEditor6:Mask := "{0,255}.{0,255}.{0,255}.{0,255}"
oEditor6:EditType := 8/*MaskType*/
oItems:SetProperty("FormatCell",h,0,"value + ' (MaskType)'")
h := oItems:AddItem(65280)
oEditor7 := oItems:CellEditor(h,0)
oEditor7:EditType := 9/*ColorType*/
oEditor7:Mask := "`RGB(`{0,255}\,{0,255}\,{0,255}`)`;;0"
oItems:SetProperty("FormatCell",h,0,"value + ' (ColorType)'")
h := oItems:AddItem("Tahoma")
oItems:CellEditor(h,0):EditType := 10/*FontType*/
oItems:SetProperty("FormatCell",h,0,"value + ' (FontType)'")
h := oItems:AddItem("gBHJJGHA5MIwAEIe4AAAFhwbiAliQwig7ixFjBQjRbjhljxwkB7kSFkiQkyblCllSwli7lzFmDQmTbmjlmzwnD7nQBnk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTqlVq1XrFZrVbrldr1YhgAEL5AgBhj/AAssMJthABFof4JDhIWCgYKDBATFT8M6hUIFAQAEQCCDwYF/QoWDZCRBgOKgIYHCQXMisKBAEQAAgOBZaSgQhjERANKQiZhIWamYyIBQ6FzcNKxQLJT4ADA4RjwObAAidBYdHwABQgUxMQYZEI0cD4OgnYKaKyzIRFNQx2YCKoFHScYD0ADXQwUAgwLoLQDqaCWBJoNQ9NBxFJTVQORgiarqSABbamGwtDAwBUWhQmqYALnOFQvGYPA4m6AwKhkZxKj2PBWC0SZCgmVY6CwIJgieBAniubRKHgaYgiwQwGiCfxGDWbBRmGZYIi2VwGnAexxGUSwUFiaR+hQPbBgOCoLCIHh4DAARCmQ" +;
"G4AlgNxuhwWgpFAEQUhuOxOk0NrhAaQoBmgPYdFSIZPjYGYbn+HhgEoAA7HMBIOjUM51AoPojHkEwVlET5slgWZtAEUBdjeSoeF6X5/rQRRSi+QB6GychsEAfZshKYABGQZorlAOgMBqEgAjYHB2jqSoigmYBLk+QZnBqGhggAEwImgbojgoIwSE+MxUHiS4REQCQWluD48B+JJoL+YQikuaI9AALgLmsJQfnSdAvDkCJEhIIIBgOegLEiPBqCyCAAjcCwgAAIJBhQBQkHGL4gDaNBokkZQMiwUAuioJQiCAQYsHMcwwEIeoigAYIogsGIwFKIYICIWguEoPgQhsawBASGgwCuJwLH8K4LigAIaDwbxMAOKxbisPwfASQATFASoagIEYwgcSoKGiAA/mEdIuiGPxCmObIlhMIJNHONxFH8EpPCGeB+noEpBBSSRjCsPZEiyKhgjAH5whSdLEjwDxjC8TxVEMFRzFWJJZBUSI0gQEQLBOM4VHkIg1D0CA" +;
"JDQNg/p4AAdoC")
oItems:CellEditor(h,0):EditType := 11/*PictureType*/
oItems:SetProperty("FormatCell",h,0,"value + ' (PictureType)'")
oItems:CellEditor(oItems:AddItem("(ButtonType)"),0):EditType := 12/*ButtonType*/
h := oItems:AddItem(25)
oItems:CellEditor(h,0):EditType := 13/*ProgressBarType*/
oItems:SetProperty("FormatCell",h,0,"value + ' (ProgressBarType)'")
h := oItems:AddItem("Value 1")
oEditor8 := oItems:CellEditor(h,0)
oEditor8:EditType := 14/*PickEditType*/
oEditor8:AddItem(1,"Value 1",1)
oEditor8:AddItem(2,"Value 2",2)
oEditor8:AddItem(3,"Value 3",3)
oItems:SetProperty("FormatCell",h,0,"value + ' (PickEditType)'")
oItems:CellEditor(oItems:AddItem("(LinkEditType)"),0):EditType := 15/*LinkEditType*/
oEditor9 := oItems:CellEditor(oItems:AddItem("(UserEditorType)"),0)
oEditor9:EditType := 16/*UserEditorType*/
oEditor9:UserEditor("Exontrol.ComboBox","")
oComboBox := oEditor9:UserEditorObject()
oComboBox:BeginUpdate()
oComboBox:LabelHeight := oGrid:DefaultItemHeight()
oComboBox:Style := 2/*DropDownList*/
oComboBox:ColumnAutoResize := .F.
rs := CreateObject("ADOR.Recordset")
rs:Open("Orders","Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExGrid\Sample\Access\misc.accdb",3/*adOpenStatic*/,3/*adLockOptimistic*/)
oComboBox:DataSource := rs
oComboBox:MinHeightList := 128
oComboBox:SearchColumnIndex := 0
oComboBox:UseTabKey := .F.
oComboBox:EndUpdate()
h := oItems:AddItem(255)
oEditor10 := oItems:CellEditor(h,0)
oEditor10:EditType := 17/*ColorListType*/
oEditor10:SetProperty("Option",4/*exColorListShowName*/,.T.)
oItems:SetProperty("FormatCell",h,0,"value + ' (ColorListType)'")
oItems:CellEditor(oItems:AddItem(65280),0):EditType := 17/*ColorListType*/
oItems:CellEditor(oItems:AddItem("(MemoDropDownType)"),0):EditType := 18/*MemoDropDownType*/
oEditor11 := oItems:CellEditor(oItems:AddItem(-1),0)
oEditor11:EditType := 19/*CheckValueType*/
oEditor11:SetProperty("Option",17/*exCheckValue2*/,1)
h := oItems:AddItem(50)
oEditor12 := oItems:CellEditor(h,0)
oEditor12:EditType := 20/*SliderType*/
oEditor12:SetProperty("Option",41/*exSliderWidth*/,-60)
oEditor12:SetProperty("Option",53/*exSliderTickFrequency*/,10)
oEditor12:SetProperty("Option",63/*exSliderTickStyle*/,2)
oItems:SetProperty("FormatCell",h,0,"value + ' (SliderType)'")
h := oItems:AddItem(100)
oItems:CellEditor(h,0):EditType := 21/*CalculatorType*/
oItems:SetProperty("FormatCell",h,0,"value + ' (CalculatorType)'")
oItems:EnsureVisibleItem(h)
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1179
|
Editors (ImageSize = 16, default)

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oAppearance
LOCAL oComboBox
LOCAL oEditor,oEditor1,oEditor10,oEditor11,oEditor12,oEditor2,oEditor3,oEditor4,oEditor5,oEditor6,oEditor7,oEditor8,oEditor9
LOCAL oItems
LOCAL h
LOCAL rs
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:BeginUpdate()
oGrid:ImageSize := 16
oGrid:Images("gBJJgBAIDAAEg4ACEKAD/hz/EMNh8TIRNGwAjEZAEXjAojJAjMLjABAAgjUYkUnlUrlktl0vmExmUzmk1m03nE5nU7nkrQCAntBoVDolFo1HoM/ADAplLptImdMYFOqdSqlXq1QrVbrlGpVWsFNrNdnNjsk7pQAtNroFnt0sh8Yr9iulTuNxs1Eu8OiT/vsnsNVutXlk/oGGtVKxGLxWNtsZtN8iUYuNvy0Zvd+xNYwdwvl4p870GCqc8vOeuVttmp1knyOayWVy+WzN/ze1wOElenm+12WUz/Bv2/3UyyWrzeutux2GSyGP2dQ33C1ur3GD3M4zUNzHdlWjq/E3nGzVpjWv4HA7fRy/Tv2IrN8rPW6nZ3ve7mUlfu20Z8acvQyb+vY9jasYoDwMm+LytVBDqKG3z8O3Cb8P+mkAuY9cCQ2uL4KaxDKvkp8RNLEjqugnrwQo/UWPzFyeQw5sNLZFENrI4kOqU66pw8uzmOKvTqNqjULJvGL1JO48GtT" +;
"GsbLdEL3scxLlyiw8dQeoUVxdLTtyKmUjwGlslRPJsnK1HbAKbKCrsQo8uQk/CeP44iaR/ATnTNPLvyxPU+z9P9AUDQVBowiofJXQ6Oo+kKMpIkjztE4TKn4P6JowfgPnwD5/nAjB8AOeAPo0eAA1IAFH07UhAIMpYAVIYFHqBUhwVjV1S1EtQAHxW65V0AZwAeuQAnwB5gAPYViEDVhwAHTQBkCjB4gOhwDmCyhH0sACAg==")
oAppearance := oGrid:VisualAppearance()
oAppearance:Add(4,"gBFLBCJwBAEHhEJAAEhABUYCg6AADACAxRDgMQBQKAAzQFAYbhkGCGAAGMZxRgmFgAQhFcZQSKUOQTDKMIziYBYfgkMIgSbJUgDGAkRRdDSOYDmGQYDiCIoRShOMIjHLUXxtDaIZwhEAoJb+RgAUY/cTzaAEUwHHiTKInaCQShsFYJUJAdRURQ9EwvCIZBpEWwLChENQwWLCNj2TScBwjCyqbale45ViqdoDU5EUiXJJ8ZxnECfYyrGjaMpCeKBUrGYTVRBIMxLLSia5oeJqMrnBpNVrIUgXCAGFwHK6BcauXIIDp6XoWWRbAAWDpVVzNNC3YzkCIceADHKiXxmVz4JLdGZ1QTGID2XaYaxWK4oZjsVSc4KDHbETbHFi9Fo3NaaxGisew+GYc4HlCR5NAAAIIEkQJSGMOgdE4RhYDwJJsAaAYQgmPpolCWgSCiBJzjcEIAkQXIBm8d5UhOQgCDUIBDDJDhgggJgKgKYJIDSVoDk8KBFF4OohEMZgWDs" +;
"YYDj4GoGmGSB2B6B5iAiBgYDsYRjGSbIJo4RgqDuIpIAoLoLmMCJGDKDJjJiLA7xqUAAgGTwYnYPoPmQCQGEKEJkEkFg9gGY44BoRoSmSSQ2EKEggHgRhShSZRJFYVoVmWCRmFKFAgGOTheheZgJgYYoYmYSYWGaF4lkMMJ0hqZpJjYbobmcCZGHKHJmjmJh0h2Z4JmYcIaE8WZ2H6H5oAoBoCiCaBKBYfdjGoJoKiKaJKDaDojmkChGgmIgpCoVoWiWaJZiSd4mmmSh2h6J5qAqBoiiiaY5iSeIpmqComiqKpqkqNouiuah6hqMIsmsSpWiuGhP1kOoumuSp2j6L5sAsBo54gKwWkaMZsgsJpKjKbJLDaRYxYWRpSjSbIZiSe41m2CxmlqNptksdpejebR5iSfI4m4S4W16boLiaao6m5fJ9jubwLkaco8m8S5WnaPZunuOp4j6b5Lnac4SA0PAGlgP4wEwFwGkGcIMCcCpCnCCxiA8NYAAmMJfkSbh" +;
"FCcFpFnGDBnBqRpUhuEwTDeZ5lHCfw6HIQxLCaAxygyJwqgGcATE4FA6hWY4tjEAAQBAgIA==")
oGrid:Columns():Add("Editors"):SetProperty("Def",17/*exCellValueFormat*/,1)
oGrid:SetProperty("BackColorHeader",0x4c6c6c6)
oItems := oGrid:Items()
oItems:CellEditor(oItems:AddItem("(ReadOnly)"),0):EditType := 0/*ReadOnly*/
oItems:CellEditor(oItems:AddItem("(EditType)"),0):EditType := 1/*EditType*/
h := oItems:AddItem("Value 1")
oEditor := oItems:CellEditor(h,0)
oEditor:EditType := 2/*DropDownType*/
oEditor:AddItem(1,"Value 1",1)
oEditor:AddItem(2,"Value 2",2)
oEditor:AddItem(3,"Value 3",3)
oItems:SetProperty("FormatCell",h,0,"value + ' (DropDownType)'")
h := oItems:AddItem(1)
oEditor1 := oItems:CellEditor(h,0)
oEditor1:EditType := 3/*DropDownListType*/
oEditor1:DropDownAutoWidth := 0/*exDropDownEditorWidth*/
oEditor1:AddItem(1,"Nancy Davolio",1)
oEditor1:AddItem(2,"Andrew Fuller",2)
oEditor1:AddItem(3,"Janet Leverling",3)
oEditor1:AddItem(4,"Peacock Margaret",3)
oEditor1:AddItem(5,"Steven Buchanan",2)
oEditor1:AddItem(6,"Michael Suyama",1)
oEditor1:AddItem(7,"Robert King",2)
oEditor1:AddItem(8,"Laura Callahan",3)
oEditor1:AddItem(9,"Anne Dodsworth",2)
oItems:SetProperty("FormatCell",h,0,"value + ' (DropDownList - single column list)'")
h := oItems:AddItem(1)
oEditor2 := oItems:CellEditor(h,0)
oEditor2:EditType := 3/*DropDownListType*/
oEditor2:DropDownAutoWidth := 0/*exDropDownEditorWidth*/
oEditor2:AddItem(1,"Nancy Davolio",1)
oEditor2:AddItem(2,"Andrew Fuller",2)
oEditor2:InsertItem(3,"Janet Leverling",3,2)
oEditor2:InsertItem(4,"Peacock Margaret",3,2)
oEditor2:InsertItem(5,"Steven Buchanan",2,2)
oEditor2:InsertItem(6,"Michael Suyama",1,5)
oEditor2:InsertItem(7,"Robert King",2,2)
oEditor2:InsertItem(8,"Laura Callahan",3,2)
oEditor2:InsertItem(9,"Anne Dodsworth",2,5)
oEditor2:ExpandAll()
oItems:SetProperty("FormatCell",h,0,"value + ' (DropDownList - single column tree)'")
h := oItems:AddItem(1)
oEditor3 := oItems:CellEditor(h,0)
oEditor3:EditType := 3/*DropDownListType*/
oEditor3:DropDownAutoWidth := 0/*exDropDownEditorWidth*/
oEditor3:SetProperty("Option",57/*exDropDownColumnCaption*/,"Name¦Title¦City¦Phone")
oEditor3:SetProperty("Option",58/*exDropDownColumnWidth*/,"312¦¦¦96")
oEditor3:AddItem(1,"Nancy Davolio¦Sales Representative¦Seattle¦(206) 555-9857",1)
oEditor3:AddItem(2,"Andrew Fuller¦<b>Vice President</b>, Sales¦Tacoma¦(206) 555-9482",2)
oEditor3:AddItem(3,"Janet Leverling¦Sales Representative¦Kirkland¦(206) 555-3412",3)
oEditor3:AddItem(4,"Peacock Margaret¦Sales Representative¦Redmond¦(206) 555-8122",3)
oEditor3:AddItem(5,"Steven Buchanan¦Sales Manager¦London¦(71) 555-4848",2)
oEditor3:AddItem(6,"Michael Suyama¦Sales Representative¦London¦(71) 555-7773",1)
oEditor3:AddItem(7,"Robert King¦Sales Representative¦Kirkland¦(71) 555-5598",2)
oEditor3:AddItem(8,"Laura Callahan¦Inside Sales Coordinator¦Seattle¦(206) 555-1189",3)
oEditor3:AddItem(9,"Anne Dodsworth¦Sales Representative¦London¦(71) 555-4444",2)
oItems:SetProperty("FormatCell",h,0,"value + ' (DropDownList - multiple columns list)'")
h := oItems:AddItem(1)
oEditor4 := oItems:CellEditor(h,0)
oEditor4:EditType := 3/*DropDownListType*/
oEditor4:DropDownAutoWidth := 0/*exDropDownEditorWidth*/
oEditor4:SetProperty("Option",57/*exDropDownColumnCaption*/,"Name¦Title¦City¦Phone")
oEditor4:SetProperty("Option",58/*exDropDownColumnWidth*/,"312¦¦¦96")
oEditor4:AddItem(1,"Nancy Davolio¦Sales Representative¦Seattle¦(206) 555-9857",1)
oEditor4:AddItem(2,"Andrew Fuller¦<b>Vice President</b>, Sales¦Tacoma¦(206) 555-9482",2)
oEditor4:InsertItem(3,"Janet Leverling¦Sales Representative¦Kirkland¦(206) 555-3412",3,2)
oEditor4:InsertItem(4,"Peacock Margaret¦Sales Representative¦Redmond¦(206) 555-8122",3,2)
oEditor4:InsertItem(5,"Steven Buchanan¦Sales Manager¦London¦(71) 555-4848",2,2)
oEditor4:InsertItem(6,"Michael Suyama¦Sales Representative¦London¦(71) 555-7773",1,5)
oEditor4:InsertItem(7,"Robert King¦Sales Representative¦Kirkland¦(71) 555-5598",2,2)
oEditor4:InsertItem(8,"Laura Callahan¦Inside Sales Coordinator¦Seattle¦(206) 555-1189",3,2)
oEditor4:InsertItem(9,"Anne Dodsworth¦Sales Representative¦London¦(71) 555-4444",2,5)
oEditor4:ExpandAll()
oItems:SetProperty("FormatCell",h,0,"value + ' (DropDownList - multiple columns tree)'")
h := oItems:AddItem(100)
oItems:CellEditor(h,0):EditType := 4/*SpinType*/
oItems:SetProperty("FormatCell",h,0,"value + ' (SpinType)'")
oItems:CellEditor(oItems:AddItem("(MemoType)"),0):EditType := 5/*MemoType*/
h := oItems:AddItem(3)
oEditor5 := oItems:CellEditor(h,0)
oEditor5:EditType := 6/*CheckListType*/
oEditor5:AddItem(1,"Border",1)
oEditor5:AddItem(2,"Single",2)
oEditor5:AddItem(4,"Frame",3)
oItems:SetProperty("FormatCell",h,0,"value + ' (CheckListType)'")
h := oItems:AddItem("193.226.40.161")
oEditor6 := oItems:CellEditor(h,0)
oEditor6:Mask := "{0,255}.{0,255}.{0,255}.{0,255}"
oEditor6:EditType := 8/*MaskType*/
oItems:SetProperty("FormatCell",h,0,"value + ' (MaskType)'")
h := oItems:AddItem(65280)
oEditor7 := oItems:CellEditor(h,0)
oEditor7:EditType := 9/*ColorType*/
oEditor7:Mask := "`RGB(`{0,255}\,{0,255}\,{0,255}`)`;;0"
oItems:SetProperty("FormatCell",h,0,"value + ' (ColorType)'")
h := oItems:AddItem("Tahoma")
oItems:CellEditor(h,0):EditType := 10/*FontType*/
oItems:SetProperty("FormatCell",h,0,"value + ' (FontType)'")
h := oItems:AddItem("gBHJJGHA5MIwAEIe4AAAFhwbiAliQwig7ixFjBQjRbjhljxwkB7kSFkiQkyblCllSwli7lzFmDQmTbmjlmzwnD7nQBnk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTqlVq1XrFZrVbrldr1YhgAEL5AgBhj/AAssMJthABFof4JDhIWCgYKDBATFT8M6hUIFAQAEQCCDwYF/QoWDZCRBgOKgIYHCQXMisKBAEQAAgOBZaSgQhjERANKQiZhIWamYyIBQ6FzcNKxQLJT4ADA4RjwObAAidBYdHwABQgUxMQYZEI0cD4OgnYKaKyzIRFNQx2YCKoFHScYD0ADXQwUAgwLoLQDqaCWBJoNQ9NBxFJTVQORgiarqSABbamGwtDAwBUWhQmqYALnOFQvGYPA4m6AwKhkZxKj2PBWC0SZCgmVY6CwIJgieBAniubRKHgaYgiwQwGiCfxGDWbBRmGZYIi2VwGnAexxGUSwUFiaR+hQPbBgOCoLCIHh4DAARCmQ" +;
"G4AlgNxuhwWgpFAEQUhuOxOk0NrhAaQoBmgPYdFSIZPjYGYbn+HhgEoAA7HMBIOjUM51AoPojHkEwVlET5slgWZtAEUBdjeSoeF6X5/rQRRSi+QB6GychsEAfZshKYABGQZorlAOgMBqEgAjYHB2jqSoigmYBLk+QZnBqGhggAEwImgbojgoIwSE+MxUHiS4REQCQWluD48B+JJoL+YQikuaI9AALgLmsJQfnSdAvDkCJEhIIIBgOegLEiPBqCyCAAjcCwgAAIJBhQBQkHGL4gDaNBokkZQMiwUAuioJQiCAQYsHMcwwEIeoigAYIogsGIwFKIYICIWguEoPgQhsawBASGgwCuJwLH8K4LigAIaDwbxMAOKxbisPwfASQATFASoagIEYwgcSoKGiAA/mEdIuiGPxCmObIlhMIJNHONxFH8EpPCGeB+noEpBBSSRjCsPZEiyKhgjAH5whSdLEjwDxjC8TxVEMFRzFWJJZBUSI0gQEQLBOM4VHkIg1D0CA" +;
"JDQNg/p4AAdoC")
oItems:CellEditor(h,0):EditType := 11/*PictureType*/
oItems:SetProperty("FormatCell",h,0,"value + ' (PictureType)'")
oItems:CellEditor(oItems:AddItem("(ButtonType)"),0):EditType := 12/*ButtonType*/
h := oItems:AddItem(25)
oItems:CellEditor(h,0):EditType := 13/*ProgressBarType*/
oItems:SetProperty("FormatCell",h,0,"value + ' (ProgressBarType)'")
h := oItems:AddItem("Value 1")
oEditor8 := oItems:CellEditor(h,0)
oEditor8:EditType := 14/*PickEditType*/
oEditor8:AddItem(1,"Value 1",1)
oEditor8:AddItem(2,"Value 2",2)
oEditor8:AddItem(3,"Value 3",3)
oItems:SetProperty("FormatCell",h,0,"value + ' (PickEditType)'")
oItems:CellEditor(oItems:AddItem("(LinkEditType)"),0):EditType := 15/*LinkEditType*/
oEditor9 := oItems:CellEditor(oItems:AddItem("(UserEditorType)"),0)
oEditor9:EditType := 16/*UserEditorType*/
oEditor9:UserEditor("Exontrol.ComboBox","")
oComboBox := oEditor9:UserEditorObject()
oComboBox:BeginUpdate()
oComboBox:LabelHeight := oGrid:DefaultItemHeight()
oComboBox:Style := 2/*DropDownList*/
oComboBox:ColumnAutoResize := .F.
rs := CreateObject("ADOR.Recordset")
rs:Open("Orders","Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExGrid\Sample\Access\misc.accdb",3/*adOpenStatic*/,3/*adLockOptimistic*/)
oComboBox:DataSource := rs
oComboBox:MinHeightList := 128
oComboBox:SearchColumnIndex := 0
oComboBox:UseTabKey := .F.
oComboBox:EndUpdate()
h := oItems:AddItem(255)
oEditor10 := oItems:CellEditor(h,0)
oEditor10:EditType := 17/*ColorListType*/
oEditor10:SetProperty("Option",4/*exColorListShowName*/,.T.)
oItems:SetProperty("FormatCell",h,0,"value + ' (ColorListType)'")
oItems:CellEditor(oItems:AddItem(65280),0):EditType := 17/*ColorListType*/
oItems:CellEditor(oItems:AddItem("(MemoDropDownType)"),0):EditType := 18/*MemoDropDownType*/
oEditor11 := oItems:CellEditor(oItems:AddItem(-1),0)
oEditor11:EditType := 19/*CheckValueType*/
oEditor11:SetProperty("Option",17/*exCheckValue2*/,1)
h := oItems:AddItem(50)
oEditor12 := oItems:CellEditor(h,0)
oEditor12:EditType := 20/*SliderType*/
oEditor12:SetProperty("Option",41/*exSliderWidth*/,-60)
oEditor12:SetProperty("Option",53/*exSliderTickFrequency*/,10)
oEditor12:SetProperty("Option",63/*exSliderTickStyle*/,2)
oItems:SetProperty("FormatCell",h,0,"value + ' (SliderType)'")
h := oItems:AddItem(100)
oItems:CellEditor(h,0):EditType := 21/*CalculatorType*/
oItems:SetProperty("FormatCell",h,0,"value + ' (CalculatorType)'")
oItems:EnsureVisibleItem(h)
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1178
|
Re-order the cell's caption, icons and images/pictures

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oColumn,oColumn1
LOCAL oItems
LOCAL h
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:BeginUpdate()
oGrid:Images("gBJJgBAICAADAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEahkZAIAEEbjMjlErlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTqlVq1XrFZrVbrlTiFdib/sNjr9gs1nldlrlqtFtt0stlguNvulyh91ud1vVVvNuvt7wFHr9/vl3luEwOJouIq+Dw2KyGRyWTymVy2XzGZzUuiw+lmej0gkUaksljaAnmDcD/cEbf7w1+ufD/fEbeB028bYAO3enB6AB++4EoA4A4sb4vHjXJ4nG5vKAHA4ca6XBjTAD/Y2x/eB/jcB")
oColumn := oGrid:Columns():Add("ToLeft")
oColumn:SetProperty("Def",0/*exCellHasCheckBox*/,.T.)
oColumn1 := oGrid:Columns():Add("ToRight")
oColumn1:SetProperty("Def",0/*exCellHasCheckBox*/,.T.)
oColumn1:SetProperty("Def",34/*exCellDrawPartsOrder*/,"caption,picture,icons,icon,check")
oGrid:DefaultItemHeight := 32
oGrid:DrawGridLines := 2/*exVLines*/
oGrid:HeaderAppearance := 4/*Etched*/
oItems := oGrid:Items()
h := oItems:AddItem("Caption")
oItems:SetProperty("CellImage",h,0,2)
oItems:SetProperty("CellImages",h,0,"1,2")
oItems:SetProperty("CellPicture",h,0,oGrid:ExecuteTemplate("loadpicture(`gCJKBOI4NBQaBQAhQNJJIIhShQAEEREAIA0ROZ6PT0hQKYZpIZDKBJkIgKByN5mNJsMsKPABVqXBI4KjrD7HL6GWKPJKiCIhMiySidKxbOzZZJWMLsGL2FqyLjZMonNa2CyiZDOUqsQqUEq0ZCNISFXDIFxzZ4hUrbdrefZ/fz3ZgzZ75Tz3XjvHZnZznPieb55AKgAqmRyOOzEhR7XirWaWQQMTa+QIhDbZOZAAoYUCPDAQG7FXI4JRrNCoIRdPyyFr0AYifDUKZ+PCufK4RReALLUbtdBHSrGTCCNKqT4MbRqUxxQx+CAAEQ2VCBbxqGaLYDZNgzFbCbLDarRCrqMYMM6cWqpHKUDqhZjnVijEoLcp0FCjVg2OYhTjN/QWk4bo4iseBsAcABIDoPA5g2HgADIkQfDCNxwkEQYnFmAIAB4OJHGcKAPioGRKFKdh2g6UB8iiZ5QkYQp3gKWhDlsWYmAARBcgCIAUniVpmiSA5AF3A4" +;
"wG8P41nGWwDDAW4MAAIpSG+bRzBoGx3AeCJhh6C4ljCUJGnSRBUFKAIQA6EgIHMWBoHqYgAngHJDCALBmhCCAfHOARAScUBvAmc5zHYXxoguXQ8DEMIAH8dI8HmP4/AyQJAEAYAoHqRByEQGJiECBAzAkKIpBYNIcikAp8kcZhDn4EBChmUoMgqHIqhiWoIgaDImgyVQImaRw/F0EZGCcSw3DaM4Kn6GBBhwYYZDGZo3C+RgOAmNQnhYeYqgsTZenEVgSFYLo2CydhGg4OROF2HJjlydR7i+cJjDGFo8BgHgVl4Po+DufJRgcbQOlkCxyKuCJNAsdwIhSC4mgieYKkeHJWD0Ih8BQaYYkkMYppwTg0EsFhJC0SxEkgeodDSFpTheV5SDgLBIieRIigyVo5CeOpymoWhtEQfRACMR4zE2KxRnsV5dF2ehFCeC50G+GBkBiZgaCUGYnBySY+BsdIuEkJJJDSSRsjGeYqEWOhliYVYOHWDYbFuNhFmcS5si" +;
"qbZrnGLYOh0DpPhyXo7D8d4ZHGXR1CcdRAnsMh7GELwIHiSx7CiXY0HYNZ1nOcoPg0SB+CWLwwGqUpbFAQJwEeEImlCVQwk4cJxAiFRIhMS4ulGYRRlmMQVDEHZxG8YxXhIaQSniLhIiaGwnDiJZGicZYnjeZw8D6OoSkWEIthwI4emudwtGwepNhuLQ3F8Zojm4bQrhALo0D0HZwCcJwoimeI0ASWR6CAJkJQORfAiFcLIXgahaiGCgMsKIpw8DPH8H4Pj2BhjrBMGQGYfxFjuEGIsB4rxbg+DSFsPAxBtChHoAQaYmRojVG0D0e6JALjVD2K0F4qxfjjGyPIRY/QXi1AOAILwFQGgOF8KYDwOgdBsHmCYcobRtjIHoGgZAmBgi7HgPcWoHxTAmCQCcVwTgDB+FYJgfQMAOj0F2PoZgkRMjeKQLkWATwdDzEkPMF4FxzAXDGJYfAlgPAuB+FkeIWxuizC0LkUwvQbD9ByHIDouxvBCBgCMCAvh4CXCM" +;
"EgSA0BJDEH+AsfwMgfjhDeL0Ro/xkgvH4JMXA7RYjyAONgPAWhfjyCuBEcAFRSAWE4BIOwEAUgTCaIYfA4wSBUAcAsDowQOBFA4J0Hg9h2B4EmCQTYVBdB0FwIwU4rByjJGmHIRQ8gJAKB4IoZgShaDKAQOUIolQkjVBuGoSw6hugaFaJoeoWgajaDKDoO4dB5j0FcJ0Zw1Ang3CQDEdgNQnA6EmHgGw4QuCiCSAKFIXBgilEwGcLAZAtDmC0N0WgLhaApFiK0HgfxniuGKP4GIvhrhhGgHEZgaRtB5GSBUcIhg5BnHkOAeQFB5A6DiEEao2xoDHH0KIQ4bxYBfFEP8RogB5BfA8AQHwvwqAZBIBURgCgwgPAqAkKYCgfgTHCBwDIegcgjFUDQXQPQzA4DsCkDwnRABNAwE8OgTw5C6AkJEPgPRSg+DqCANoMRBjuHUKEJglQWDrHYOATg3BuDGDWEMa4CQbj3HMB0Z4Pw5jLFuCAWYsB/D2DgBEUQmB" +;
"1iuDEMkfI0hUCyEkPIfwihKgqGsGobIGhNhfFGGoZY6gDDuGWDceANA1A2DyDUM4txaA/EwG0bo0wTDXEcH8Sg/BcD2GSHQC4pgtiuGOOkNIRg3hbG+MIGYjhzgaBeHwL4FgHAMAYFIfgJh4nJBQGkfAwRNiFAiO4KIlhoiKFiOoO4EwPiYGONUE4RATg6BOMcUwEApgZGmP4X4lxnjYGaLIZg7RNirH6FQG47xZCAC6OQLK5B1BYF8LgOQZAqh0FqGcBo/xMhpE6HsXomQwBKCwIcfA6w/DxA+IURAIxwgmBSCMKoJgOhFD0JMeIkQdhREwFAEQKRFioAYKkJIqQlhpBYFEPYUQui0GCGgFI9BlCOAUDoS4nRhA7HOOkFYdguhgEgGYUgZB2DeE6IIYIMQEgyAiPYHgYgnBlFiNsPYghKiODqISfddhPgVEOCQE4hg5iWHWPEfwfB3BgFYPkAIWQPAOC8BIb1MwrD+QsNEQ43ACAMAKGUQgsBhBoHCG" +;
"USNrxBBoEqNgGo8QMAJF+MMOwRxGCOFUBwHYdhODvDwMEBILgk21AKKkOI6RrgyD6LIDoJxNjkDUOQF4yAXgoC4FMXgqhKCiE4KACQow9D5CoJgLQiA9CwEMLUYwOxmhAFaEAdoSwdBBF0CEPQEWWDrGOBoEgGhTAaDyBsPoNgXA4CmHIWw+guCDCSJsNIjxsgADcNQPg2hxC2FKLACo2hNDFEMMcKw/BeCcE6LYXoGRvDJGCN8GIxgUjYAyOUbg6BpDrB0OYWw5AgjtGSOoEofAgjRG2NgY4+RRCfBeKUN4qQvi7H+HAYAchwCOCWAcQQZBBFiG4EIUYww3CFFuEQSgRAlBdDMIwCQiRrCMGCMcIwxhuiKDeE0PAlxCC8GFZQS4YhIgaEkJYS43hLAxE8EkTodQUBbBWMcHoNxy0lHqOETYyAeDeD4I0AQlRhD0G2E0O4PgKCjHeEoSgmBKCGEsBUS4vxUA8C6M0K4ox7irD+O0VouhfD7FUA33I+gm" +;
"iXE0IsLY1gtipG0CQbQLQPjFDuDQHw2RtjFGsK0bw4x9j0CcO8N4/RtBnhSgvAcBehmAOh0ANgiAhAnhih8gwh1gbhugRhSBRhDhjh2Bvgyhfh3gPhThOBIBOA6B9gsAYAah+BdhlBWBtAuBoBThtB8gnhFheAlhcByh6BKhvAahNBnh5B1gJB1g+hCAsgAAbB1gOguAJhIAoAmhFBvqzACABh0BlgFggA6CaBvBQA7BDEHAaA0AABoAcgGBEACg5AAgYgZgLAIBKgFBBhWh9AggCAIBoBNgAANA9AJhwABBxBwAKAYAAALCJu9ADAYAFBLExBEAiBEgmBEgxBEANBENbhmgJh5gJBNgJgzgJBfgRAvAhpKhnAQg5AIpkARASA/ASKGAPBJhZBIAdBJAbARh7n4BIhshkAnAZDVgkBZAUg5AWh5AVB5AEgFAbBFA4BFACglA5hlAfAVAChVAtBVAig1AQh1ABBNB+gaAcgUA7AqAbAWgTg2gfB2gSB9A" +;
"IBdA1BDh2BHAnBdAZg6Apgdh+h0g7lCBoAXh3BJBugahkBwBihkBkAsBYgtg/h7gNATBNgkhIgUhBg0gzI6BZgJRJglhvAvARgrAtBrALBbBFh2BxB2BZh9hFAcgOAcAdAcgCgcBzhcAVB7h9g5BlgxhohsArgDh5A8heA8BKh8hMB8gzB8APgPBmAdByAShQAVgUAWMMAaAThuATgpAWhNASgLARB3ASAwg+AsEwhiAoimBTBxhUAJhEAJhVhJBPhSBTBSBjgyhvBPlWAbgUgfhRhYBUAkAoBTAoBQgrgygfyhgTBShXBSgwhUh0hWgKhTguhQBphRAdhWAjhoBvg1gQA0g0A1AKACAehLgegzgrgmhcAmBahmB+A4AihzAhhLA6ArAFBrAfAbAyhbAPh2hYB7BzB8AOBDgwhTg+hnALAXB8hXBph3AxAPA/BPA2gLg7A8hxg+AlAXANB9ARB+A6B+h5gBgEBAg9BLhFBBAUghAWAhANhhhsgRgBARB" +;
"vgjAUgiALhjBpBig8hjhHgSA1ASBqgvA4gkhzAmgkglhRgnB7hlh8BKA0hNgxhMBtg7guh5gjAzhPAtB/BJgBBmhhBvAdhDAighg7g2glAzBlg+AVhUAVAphVAHhqURAGhvh7g0AgAahvA2FigMg2BhhaBrg6AMAegTA6AVi5B6BlgehNgMgoA9gigMAZA/hBgMgGg+hfgbAvAegSgbApgegXhZhqBagzBYgogfgwB/Cwg7hgh/hDA/gTg5B+gNh/gXh6B8hbh8B/hEhfASg2h/BHh6BfhZBbhuAjB/g9h7BbBth0h/gbh2Ayh/hAh+h/gnh/Ajh3AwgnA/gigPBzBPBVBegigfA1h8BPhshr1HgNhvAxB/hoBdgGgBhZh3sUhMh0gmh1hLg9hIgchQB7BthugQh5hbgugth6BTgLi/ALBkocoPgCA/BQBfhmh+hXhzA/hzh+g7B1hbgch/heh4gvhEg3hsBfBOgbA2B9ArhrANhPTSKXAMg7A+Bhh4A" +;
"fgZh/AVhdg/hzB7BTBsgfh5B+gdhZh/g7oQBogSh/BMrPhUhYBshvheBfA9AThph7ANhvhNgog/hZBNg/hdhvgIAxhjB2hHBhhOBtg1gPBCg3hZBDAmhDg0gfhNhAg8xMhgBiBvkig7BGgKBHBDBfBJhDBWhPg6BPxKAvBOBUhPB5hMhLhAh0mXBXAFhhB/A3hXBIhwB9AAgUBKg4AHA8AMgdgDhuB8hGghhcACgUAAgOA4AAA8AQABh2BQAegHA2BOB9BYhxhrBAA/hfg7hah4BCBrAxgABkAdAcK4BtgsAshdhZCSAVglgFgbASgeB3AQAPhNhIFJ2TBnhahchDBBh9gQBogABSAlhhBUgbBLANBvA+hbh+gAgWBzB5BXBWhFh/knAAADgLAkgiAggqAsAEhigrA1g2AKAqgKBfAZgdh9g2BbhugjhUgCgtgBALAtAYy+AWhEgmgAhFgSAaT4gAASgaATAahIgxACB9ghhGgfgmBoAEB4gIg/ANBag" +;
"xAkhGBRA0gs3yBaBjTNAFBCBFBghCACAJAlhFh+AAAEgCAQgQg+h2g7Bbhdgdgdhdhxh7gGvUhbBHhah/B5ATAzh3BOtAWchuh3hOA9h3XvAfgbh0hfh8Brg6hegDB9BtnWDQByA4gkAGJIAZAEgcgFh8gvBJBSAdh0BLhqBLACAABHBtgwB2x8yngsg+gAByA2gAB8hxhvh6Byg+AFBp4nBShMgmBzANgAB8ACBZADARBLPVhQh7uKBOg/B7hqBUgphbA+AfALAygQYohXBZi2AThYhcAeBPhAuwhdgIBEgiB7B9YzhDA0AvAthIBAg8AeBfApAohKA/B2BRA+BYm/gGBCguAG5JhAhjZLAgAvgvhPg1gYgehmAbgLZQhDAjAjgjgOh5heAxzgABhx5Wgig0AfgQA/B13iBgBchVgrhXgVXFhbh9gKBdgugUAbXDgygsg+A/B+B8AqA6g6hahbBsANBmA/hCgmhegeSVgeADBwB+BKg+BnA0hwBxBih" +;
"Fh7BxBxAxAIgGACAiAYAMAKA/BPgnguAMgPBbBngak8B+hsgqAVBag2hnBOAoBWAJhYgsA2AchvAHhIEMAmgmAmAkAjhHgPB6hUBkhSAqApgpjehsBcgZhAhuAYBOBdAuAXAwgpgPBMBwAOB5AjB+AeAYBwANACghgnBTgph3h0B0BMB4h91BgMAJhxAmgSByhshbajBaWPgTgCAYA4ACWGg3g/AyBfgzhnhPBxA1hrhXBshehChChRBQBQAgAeAFBNAtg7h3hHB7h7B7A9BOgHBDgggfhrBEBHA+h9gRB+68hPAfg3huAoAzbAAiAGBZA7B2htAqB7hYgxgwhVgehOVIFFBRgchLhhgAA7BfBthdB9hkhkgkg0hyBlAKhBg3ABAgAZBEg4AcBWAGYIhzgXAEgDA6gmhphwAtgRBYBmBwBwBQAThBA3gvBXn3hrBDBuBcA/BugnANgEBLhKhCgzhwYzhAAiARAohGgHgggJgMg9gMBrA4g+A6BoAUhch" +;
"ug3BBgAhZAIBPBNApAFAFAFh6hZBZAZAWhMgkAkBEgyApb1BOAqBGBIBmATAShAhsgOgHBuhxh4gsBOhph2ArAfBmBLCWgigxgOhZhshtAMBrghhDgHgjgfrIB5ABBCBQAcAgV4gPhcgIBWhVhXgnhBApA4hVBXhngFhTLMgcgOhRgtAMh+hFh2h2gohnAsgshCg+rTAGgNhcgjgvwhAsA0BOA8gV4dBN8qBJh68rgUgoB2BdA6h5hTABhMgWAxhTg9A2guguhJBDB0g4B5hzBmsvhwgwgzgog4g4gDAmAygPBUhWAqANgbg3AmBAI2AOBzhDA8hmBKgxBIAFgAAJhbCuhGgKl7BwhwAmgcAKAigDh2gZAJArABANgDBegx5WgZADgwBGBEAkBegAg2AYg9gwKABtBmhPABBoBZAPgFhHBMAPhmB/B6bdhZhdhdhth1hh8lBGgIBEAUgOhEgKgVgrA0AngaAaBiBIgyB5A3gLgXBcAEhlJjAJgEAsAJA" +;
"kgqqlhththThrhrhrBVBTAWhZhDhPhThIBWARg+Bn7Sg7A3gDhZAvAphEgegGgehuhpAJAyAJBZQ9gBggAAgAgwBDg3BCAAhkgTh0hkAAhLhthWhTgqAqhJBIAhhmAEgqgqgCgbBiB6h9BD8zhxhmABrOhfAqhMg7ghwiA4BSJNhMgqg4BEhkY8AjBphNATBaA6AtAwBYgEACBBiEBABIAggbg7gmh1AlglAlgahXBmhmB1BgBPBEAmAnwZgogyhVgmgABcgxsNBUAWAAB2B4AHBvA5h3B3ggAQBIAwg+hPhSgqBQCEA/gQBQA2htKUgfAJhFgkhkAYBtAIAMHpgbAasHg0gVAsBhhIgbBVAxAi/MgFBnAZBDBpB2ABgwADBWh3gchuBwBxhrhkB1BbhWAFAP5mBCghgTgnA8AgBV+OgqhSg2g1g3AnBOAcg+hNAYgbhHBRg8g6BjhjhjA2ADgdAdhTg/Aeg/hvA6h1h7A2gChLhKfjAdAxhahigYgMA" +;
"GAshzg5AAaYh/AGAjh2AChABwBOgwXnBFh/ApAzgT2GBZBGvTBHAjBGhAF0wAgsDi1w4Nza2UkyBUYiA+maxm6g1K32ad3s2Qg8AKlRaBlKD1wKE+rCCjSObAK8iGsFOrC0vR0lTeDV8IUatHu6GO2jkAHgAwgfgC5TYrVsKk2Y3MBRcpBQkgmOUuznY2FqKy0WSymXeX0ASwel0olHI5AwJ1mx0gL1mTXU6XS8Vpdj4hyg8BemDYZHqMFOUyYZTWP1WJ1CN1MTR6gH4cmysjKr2mlCqn3GuR+jDoJHGWlKkU+ajXpgg1yq2FQDFigSEBROwkCKnQwGwjliIU45x2HGyIB4dnM0UmUC+PhaLxefwOdia5zMT3+8wwYCQmEwdi4vQKqHKvigKHoKnc9Rs7GMDUOhhGOnAYjWkzKKRGyxsDUA01QCw0QCOF0uh0OkfRUMMbyRNwTBiCYZwKMIYyZAUkSlBYkxsCYAAHG4qwCBwMQfBYlxsNgsDhLEgwHA8" +;
"PiPNg1ygP4uywIgMSwK4zSQG46BnFAATDJcL3IHM6DQBsPR3O83j/AsJyGH8w4ZJY5TsN8EAdFojTwJ0AAoA4MgATIMDqAcrQPMEwTDBgVy0LYtiuK8qyrFs6QtCocnLCs8wAGAChOGM+CZJ0HAaoQHQYocBiaHtJT3LEfgCLYIgQNYgw4IQiSaBcAABBEAB/DAXS4HgPAgLUSCzGkPjkIATyXPQoCeNYfR6Do7QGI8Zj+CAHiyCY2SkIQTSSCIyDQCkpDBJQJinMMuAUPgOxGOcpA/AkoTzJwyiYFMiDwJEsShFAURFCwJRVFceQXKQIS8P8STlBgLggAcrAQCQATjIgZA0JgVSxL0OAmKI6CpEc4SuOkeBeOwMRnLQuQhOApDJAImYmD44BPIgAzFMYiR3LcQw4JwqhQAknAMFAxwEEwJwUO4ljCHgmxzNwNQ3EU3ScLYEAACocDePwZgCLI+yFN8jg7FEQTtKMcwrAAOhgHw6SQI4OCmJgjDmNAjj" +;
"5Gw+wbHkkTpEw7gpFgIAA2sABJEUThEK4QhgIJAQ==`)"))
oItems:SetProperty("CellValue",h,1,oItems:CellValue(h,0))
oItems:SetProperty("CellHAlignment",h,1,2/*RightAlignment*/)
oItems:SetProperty("CellImage",h,1,oItems:CellImage(h,0))
oItems:SetProperty("CellImages",h,1,"2,1")
oItems:SetProperty("CellPicture",h,1,oItems:CellPicture(h,0))
h := oItems:AddItem("<b>HTML</b> <off 4>Caption")
oItems:SetProperty("CellValueFormat",h,0,1/*exHTML*/)
oItems:SetProperty("CellImage",h,0,2)
oItems:SetProperty("CellImages",h,0,"1,2")
oItems:SetProperty("CellPicture",h,0,oGrid:ExecuteTemplate("loadpicture(`gCJKBOI4NBQaBQAhQNJJIIhShQAEEREAIA0ROZ6PT0hQKYZpIZDKBJkIgKByN5mNJsMsKPABVqXBI4KjrD7HL6GWKPJKiCIhMiySidKxbOzZZJWMLsGL2FqyLjZMonNa2CyiZDOUqsQqUEq0ZCNISFXDIFxzZ4hUrbdrefZ/fz3ZgzZ75Tz3XjvHZnZznPieb55AKgAqmRyOOzEhR7XirWaWQQMTa+QIhDbZOZAAoYUCPDAQG7FXI4JRrNCoIRdPyyFr0AYifDUKZ+PCufK4RReALLUbtdBHSrGTCCNKqT4MbRqUxxQx+CAAEQ2VCBbxqGaLYDZNgzFbCbLDarRCrqMYMM6cWqpHKUDqhZjnVijEoLcp0FCjVg2OYhTjN/QWk4bo4iseBsAcABIDoPA5g2HgADIkQfDCNxwkEQYnFmAIAB4OJHGcKAPioGRKFKdh2g6UB8iiZ5QkYQp3gKWhDlsWYmAARBcgCIAUniVpmiSA5AF3A4" +;
"wG8P41nGWwDDAW4MAAIpSG+bRzBoGx3AeCJhh6C4ljCUJGnSRBUFKAIQA6EgIHMWBoHqYgAngHJDCALBmhCCAfHOARAScUBvAmc5zHYXxoguXQ8DEMIAH8dI8HmP4/AyQJAEAYAoHqRByEQGJiECBAzAkKIpBYNIcikAp8kcZhDn4EBChmUoMgqHIqhiWoIgaDImgyVQImaRw/F0EZGCcSw3DaM4Kn6GBBhwYYZDGZo3C+RgOAmNQnhYeYqgsTZenEVgSFYLo2CydhGg4OROF2HJjlydR7i+cJjDGFo8BgHgVl4Po+DufJRgcbQOlkCxyKuCJNAsdwIhSC4mgieYKkeHJWD0Ih8BQaYYkkMYppwTg0EsFhJC0SxEkgeodDSFpTheV5SDgLBIieRIigyVo5CeOpymoWhtEQfRACMR4zE2KxRnsV5dF2ehFCeC50G+GBkBiZgaCUGYnBySY+BsdIuEkJJJDSSRsjGeYqEWOhliYVYOHWDYbFuNhFmcS5si" +;
"qbZrnGLYOh0DpPhyXo7D8d4ZHGXR1CcdRAnsMh7GELwIHiSx7CiXY0HYNZ1nOcoPg0SB+CWLwwGqUpbFAQJwEeEImlCVQwk4cJxAiFRIhMS4ulGYRRlmMQVDEHZxG8YxXhIaQSniLhIiaGwnDiJZGicZYnjeZw8D6OoSkWEIthwI4emudwtGwepNhuLQ3F8Zojm4bQrhALo0D0HZwCcJwoimeI0ASWR6CAJkJQORfAiFcLIXgahaiGCgMsKIpw8DPH8H4Pj2BhjrBMGQGYfxFjuEGIsB4rxbg+DSFsPAxBtChHoAQaYmRojVG0D0e6JALjVD2K0F4qxfjjGyPIRY/QXi1AOAILwFQGgOF8KYDwOgdBsHmCYcobRtjIHoGgZAmBgi7HgPcWoHxTAmCQCcVwTgDB+FYJgfQMAOj0F2PoZgkRMjeKQLkWATwdDzEkPMF4FxzAXDGJYfAlgPAuB+FkeIWxuizC0LkUwvQbD9ByHIDouxvBCBgCMCAvh4CXCM" +;
"EgSA0BJDEH+AsfwMgfjhDeL0Ro/xkgvH4JMXA7RYjyAONgPAWhfjyCuBEcAFRSAWE4BIOwEAUgTCaIYfA4wSBUAcAsDowQOBFA4J0Hg9h2B4EmCQTYVBdB0FwIwU4rByjJGmHIRQ8gJAKB4IoZgShaDKAQOUIolQkjVBuGoSw6hugaFaJoeoWgajaDKDoO4dB5j0FcJ0Zw1Ang3CQDEdgNQnA6EmHgGw4QuCiCSAKFIXBgilEwGcLAZAtDmC0N0WgLhaApFiK0HgfxniuGKP4GIvhrhhGgHEZgaRtB5GSBUcIhg5BnHkOAeQFB5A6DiEEao2xoDHH0KIQ4bxYBfFEP8RogB5BfA8AQHwvwqAZBIBURgCgwgPAqAkKYCgfgTHCBwDIegcgjFUDQXQPQzA4DsCkDwnRABNAwE8OgTw5C6AkJEPgPRSg+DqCANoMRBjuHUKEJglQWDrHYOATg3BuDGDWEMa4CQbj3HMB0Z4Pw5jLFuCAWYsB/D2DgBEUQmB" +;
"1iuDEMkfI0hUCyEkPIfwihKgqGsGobIGhNhfFGGoZY6gDDuGWDceANA1A2DyDUM4txaA/EwG0bo0wTDXEcH8Sg/BcD2GSHQC4pgtiuGOOkNIRg3hbG+MIGYjhzgaBeHwL4FgHAMAYFIfgJh4nJBQGkfAwRNiFAiO4KIlhoiKFiOoO4EwPiYGONUE4RATg6BOMcUwEApgZGmP4X4lxnjYGaLIZg7RNirH6FQG47xZCAC6OQLK5B1BYF8LgOQZAqh0FqGcBo/xMhpE6HsXomQwBKCwIcfA6w/DxA+IURAIxwgmBSCMKoJgOhFD0JMeIkQdhREwFAEQKRFioAYKkJIqQlhpBYFEPYUQui0GCGgFI9BlCOAUDoS4nRhA7HOOkFYdguhgEgGYUgZB2DeE6IIYIMQEgyAiPYHgYgnBlFiNsPYghKiODqISfddhPgVEOCQE4hg5iWHWPEfwfB3BgFYPkAIWQPAOC8BIb1MwrD+QsNEQ43ACAMAKGUQgsBhBoHCG" +;
"USNrxBBoEqNgGo8QMAJF+MMOwRxGCOFUBwHYdhODvDwMEBILgk21AKKkOI6RrgyD6LIDoJxNjkDUOQF4yAXgoC4FMXgqhKCiE4KACQow9D5CoJgLQiA9CwEMLUYwOxmhAFaEAdoSwdBBF0CEPQEWWDrGOBoEgGhTAaDyBsPoNgXA4CmHIWw+guCDCSJsNIjxsgADcNQPg2hxC2FKLACo2hNDFEMMcKw/BeCcE6LYXoGRvDJGCN8GIxgUjYAyOUbg6BpDrB0OYWw5AgjtGSOoEofAgjRG2NgY4+RRCfBeKUN4qQvi7H+HAYAchwCOCWAcQQZBBFiG4EIUYww3CFFuEQSgRAlBdDMIwCQiRrCMGCMcIwxhuiKDeE0PAlxCC8GFZQS4YhIgaEkJYS43hLAxE8EkTodQUBbBWMcHoNxy0lHqOETYyAeDeD4I0AQlRhD0G2E0O4PgKCjHeEoSgmBKCGEsBUS4vxUA8C6M0K4ox7irD+O0VouhfD7FUA33I+gm" +;
"iXE0IsLY1gtipG0CQbQLQPjFDuDQHw2RtjFGsK0bw4x9j0CcO8N4/RtBnhSgvAcBehmAOh0ANgiAhAnhih8gwh1gbhugRhSBRhDhjh2Bvgyhfh3gPhThOBIBOA6B9gsAYAah+BdhlBWBtAuBoBThtB8gnhFheAlhcByh6BKhvAahNBnh5B1gJB1g+hCAsgAAbB1gOguAJhIAoAmhFBvqzACABh0BlgFggA6CaBvBQA7BDEHAaA0AABoAcgGBEACg5AAgYgZgLAIBKgFBBhWh9AggCAIBoBNgAANA9AJhwABBxBwAKAYAAALCJu9ADAYAFBLExBEAiBEgmBEgxBEANBENbhmgJh5gJBNgJgzgJBfgRAvAhpKhnAQg5AIpkARASA/ASKGAPBJhZBIAdBJAbARh7n4BIhshkAnAZDVgkBZAUg5AWh5AVB5AEgFAbBFA4BFACglA5hlAfAVAChVAtBVAig1AQh1ABBNB+gaAcgUA7AqAbAWgTg2gfB2gSB9A" +;
"IBdA1BDh2BHAnBdAZg6Apgdh+h0g7lCBoAXh3BJBugahkBwBihkBkAsBYgtg/h7gNATBNgkhIgUhBg0gzI6BZgJRJglhvAvARgrAtBrALBbBFh2BxB2BZh9hFAcgOAcAdAcgCgcBzhcAVB7h9g5BlgxhohsArgDh5A8heA8BKh8hMB8gzB8APgPBmAdByAShQAVgUAWMMAaAThuATgpAWhNASgLARB3ASAwg+AsEwhiAoimBTBxhUAJhEAJhVhJBPhSBTBSBjgyhvBPlWAbgUgfhRhYBUAkAoBTAoBQgrgygfyhgTBShXBSgwhUh0hWgKhTguhQBphRAdhWAjhoBvg1gQA0g0A1AKACAehLgegzgrgmhcAmBahmB+A4AihzAhhLA6ArAFBrAfAbAyhbAPh2hYB7BzB8AOBDgwhTg+hnALAXB8hXBph3AxAPA/BPA2gLg7A8hxg+AlAXANB9ARB+A6B+h5gBgEBAg9BLhFBBAUghAWAhANhhhsgRgBARB" +;
"vgjAUgiALhjBpBig8hjhHgSA1ASBqgvA4gkhzAmgkglhRgnB7hlh8BKA0hNgxhMBtg7guh5gjAzhPAtB/BJgBBmhhBvAdhDAighg7g2glAzBlg+AVhUAVAphVAHhqURAGhvh7g0AgAahvA2FigMg2BhhaBrg6AMAegTA6AVi5B6BlgehNgMgoA9gigMAZA/hBgMgGg+hfgbAvAegSgbApgegXhZhqBagzBYgogfgwB/Cwg7hgh/hDA/gTg5B+gNh/gXh6B8hbh8B/hEhfASg2h/BHh6BfhZBbhuAjB/g9h7BbBth0h/gbh2Ayh/hAh+h/gnh/Ajh3AwgnA/gigPBzBPBVBegigfA1h8BPhshr1HgNhvAxB/hoBdgGgBhZh3sUhMh0gmh1hLg9hIgchQB7BthugQh5hbgugth6BTgLi/ALBkocoPgCA/BQBfhmh+hXhzA/hzh+g7B1hbgch/heh4gvhEg3hsBfBOgbA2B9ArhrANhPTSKXAMg7A+Bhh4A" +;
"fgZh/AVhdg/hzB7BTBsgfh5B+gdhZh/g7oQBogSh/BMrPhUhYBshvheBfA9AThph7ANhvhNgog/hZBNg/hdhvgIAxhjB2hHBhhOBtg1gPBCg3hZBDAmhDg0gfhNhAg8xMhgBiBvkig7BGgKBHBDBfBJhDBWhPg6BPxKAvBOBUhPB5hMhLhAh0mXBXAFhhB/A3hXBIhwB9AAgUBKg4AHA8AMgdgDhuB8hGghhcACgUAAgOA4AAA8AQABh2BQAegHA2BOB9BYhxhrBAA/hfg7hah4BCBrAxgABkAdAcK4BtgsAshdhZCSAVglgFgbASgeB3AQAPhNhIFJ2TBnhahchDBBh9gQBogABSAlhhBUgbBLANBvA+hbh+gAgWBzB5BXBWhFh/knAAADgLAkgiAggqAsAEhigrA1g2AKAqgKBfAZgdh9g2BbhugjhUgCgtgBALAtAYy+AWhEgmgAhFgSAaT4gAASgaATAahIgxACB9ghhGgfgmBoAEB4gIg/ANBag" +;
"xAkhGBRA0gs3yBaBjTNAFBCBFBghCACAJAlhFh+AAAEgCAQgQg+h2g7Bbhdgdgdhdhxh7gGvUhbBHhah/B5ATAzh3BOtAWchuh3hOA9h3XvAfgbh0hfh8Brg6hegDB9BtnWDQByA4gkAGJIAZAEgcgFh8gvBJBSAdh0BLhqBLACAABHBtgwB2x8yngsg+gAByA2gAB8hxhvh6Byg+AFBp4nBShMgmBzANgAB8ACBZADARBLPVhQh7uKBOg/B7hqBUgphbA+AfALAygQYohXBZi2AThYhcAeBPhAuwhdgIBEgiB7B9YzhDA0AvAthIBAg8AeBfApAohKA/B2BRA+BYm/gGBCguAG5JhAhjZLAgAvgvhPg1gYgehmAbgLZQhDAjAjgjgOh5heAxzgABhx5Wgig0AfgQA/B13iBgBchVgrhXgVXFhbh9gKBdgugUAbXDgygsg+A/B+B8AqA6g6hahbBsANBmA/hCgmhegeSVgeADBwB+BKg+BnA0hwBxBih" +;
"Fh7BxBxAxAIgGACAiAYAMAKA/BPgnguAMgPBbBngak8B+hsgqAVBag2hnBOAoBWAJhYgsA2AchvAHhIEMAmgmAmAkAjhHgPB6hUBkhSAqApgpjehsBcgZhAhuAYBOBdAuAXAwgpgPBMBwAOB5AjB+AeAYBwANACghgnBTgph3h0B0BMB4h91BgMAJhxAmgSByhshbajBaWPgTgCAYA4ACWGg3g/AyBfgzhnhPBxA1hrhXBshehChChRBQBQAgAeAFBNAtg7h3hHB7h7B7A9BOgHBDgggfhrBEBHA+h9gRB+68hPAfg3huAoAzbAAiAGBZA7B2htAqB7hYgxgwhVgehOVIFFBRgchLhhgAA7BfBthdB9hkhkgkg0hyBlAKhBg3ABAgAZBEg4AcBWAGYIhzgXAEgDA6gmhphwAtgRBYBmBwBwBQAThBA3gvBXn3hrBDBuBcA/BugnANgEBLhKhCgzhwYzhAAiARAohGgHgggJgMg9gMBrA4g+A6BoAUhch" +;
"ug3BBgAhZAIBPBNApAFAFAFh6hZBZAZAWhMgkAkBEgyApb1BOAqBGBIBmATAShAhsgOgHBuhxh4gsBOhph2ArAfBmBLCWgigxgOhZhshtAMBrghhDgHgjgfrIB5ABBCBQAcAgV4gPhcgIBWhVhXgnhBApA4hVBXhngFhTLMgcgOhRgtAMh+hFh2h2gohnAsgshCg+rTAGgNhcgjgvwhAsA0BOA8gV4dBN8qBJh68rgUgoB2BdA6h5hTABhMgWAxhTg9A2guguhJBDB0g4B5hzBmsvhwgwgzgog4g4gDAmAygPBUhWAqANgbg3AmBAI2AOBzhDA8hmBKgxBIAFgAAJhbCuhGgKl7BwhwAmgcAKAigDh2gZAJArABANgDBegx5WgZADgwBGBEAkBegAg2AYg9gwKABtBmhPABBoBZAPgFhHBMAPhmB/B6bdhZhdhdhth1hh8lBGgIBEAUgOhEgKgVgrA0AngaAaBiBIgyB5A3gLgXBcAEhlJjAJgEAsAJA" +;
"kgqqlhththThrhrhrBVBTAWhZhDhPhThIBWARg+Bn7Sg7A3gDhZAvAphEgegGgehuhpAJAyAJBZQ9gBggAAgAgwBDg3BCAAhkgTh0hkAAhLhthWhTgqAqhJBIAhhmAEgqgqgCgbBiB6h9BD8zhxhmABrOhfAqhMg7ghwiA4BSJNhMgqg4BEhkY8AjBphNATBaA6AtAwBYgEACBBiEBABIAggbg7gmh1AlglAlgahXBmhmB1BgBPBEAmAnwZgogyhVgmgABcgxsNBUAWAAB2B4AHBvA5h3B3ggAQBIAwg+hPhSgqBQCEA/gQBQA2htKUgfAJhFgkhkAYBtAIAMHpgbAasHg0gVAsBhhIgbBVAxAi/MgFBnAZBDBpB2ABgwADBWh3gchuBwBxhrhkB1BbhWAFAP5mBCghgTgnA8AgBV+OgqhSg2g1g3AnBOAcg+hNAYgbhHBRg8g6BjhjhjA2ADgdAdhTg/Aeg/hvA6h1h7A2gChLhKfjAdAxhahigYgMA" +;
"GAshzg5AAaYh/AGAjh2AChABwBOgwXnBFh/ApAzgT2GBZBGvTBHAjBGhAF0wAgsDi1w4Nza2UkyBUYiA+maxm6g1K32ad3s2Qg8AKlRaBlKD1wKE+rCCjSObAK8iGsFOrC0vR0lTeDV8IUatHu6GO2jkAHgAwgfgC5TYrVsKk2Y3MBRcpBQkgmOUuznY2FqKy0WSymXeX0ASwel0olHI5AwJ1mx0gL1mTXU6XS8Vpdj4hyg8BemDYZHqMFOUyYZTWP1WJ1CN1MTR6gH4cmysjKr2mlCqn3GuR+jDoJHGWlKkU+ajXpgg1yq2FQDFigSEBROwkCKnQwGwjliIU45x2HGyIB4dnM0UmUC+PhaLxefwOdia5zMT3+8wwYCQmEwdi4vQKqHKvigKHoKnc9Rs7GMDUOhhGOnAYjWkzKKRGyxsDUA01QCw0QCOF0uh0OkfRUMMbyRNwTBiCYZwKMIYyZAUkSlBYkxsCYAAHG4qwCBwMQfBYlxsNgsDhLEgwHA8" +;
"PiPNg1ygP4uywIgMSwK4zSQG46BnFAATDJcL3IHM6DQBsPR3O83j/AsJyGH8w4ZJY5TsN8EAdFojTwJ0AAoA4MgATIMDqAcrQPMEwTDBgVy0LYtiuK8qyrFs6QtCocnLCs8wAGAChOGM+CZJ0HAaoQHQYocBiaHtJT3LEfgCLYIgQNYgw4IQiSaBcAABBEAB/DAXS4HgPAgLUSCzGkPjkIATyXPQoCeNYfR6Do7QGI8Zj+CAHiyCY2SkIQTSSCIyDQCkpDBJQJinMMuAUPgOxGOcpA/AkoTzJwyiYFMiDwJEsShFAURFCwJRVFceQXKQIS8P8STlBgLggAcrAQCQATjIgZA0JgVSxL0OAmKI6CpEc4SuOkeBeOwMRnLQuQhOApDJAImYmD44BPIgAzFMYiR3LcQw4JwqhQAknAMFAxwEEwJwUO4ljCHgmxzNwNQ3EU3ScLYEAACocDePwZgCLI+yFN8jg7FEQTtKMcwrAAOhgHw6SQI4OCmJgjDmNAjj" +;
"5Gw+wbHkkTpEw7gpFgIAA2sABJEUThEK4QhgIJAQ==`)"))
oItems:SetProperty("CellValue",h,1,oItems:CellValue(h,0))
oItems:SetProperty("CellValueFormat",h,1,1/*exHTML*/)
oItems:SetProperty("CellHAlignment",h,1,2/*RightAlignment*/)
oItems:SetProperty("CellImage",h,1,oItems:CellImage(h,0))
oItems:SetProperty("CellImages",h,1,"2,1")
oItems:SetProperty("CellPicture",h,1,oItems:CellPicture(h,0))
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1177
|
ImageSize property on 32 (specifies the size of control' icons/images/check-boxes/radio-buttons)

PROCEDURE OnAddColumn(oGrid,Column)
/*Column.Def(48) = 2*/
/*Column.Def(49) = 2*/
RETURN
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oAppearance
LOCAL oColumn,oColumn1,oColumn2,oColumn3
LOCAL oItems
LOCAL h,hR
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:AddColumn := {|Column| OnAddColumn(oGrid,Column)} /*Fired after a new column has been added.*/
oGrid:BeginUpdate()
oGrid:ImageSize := 32
oGrid:DefaultItemHeight := 36
oGrid:HeaderHeight := oGrid:DefaultItemHeight()
oGrid:SortBarHeight := oGrid:DefaultItemHeight()
oGrid:Font():Size := 16
oGrid:FilterBarFont():Size := oGrid:Font():Size()
oGrid:ToolTipFont():Size := oGrid:Font():Size()
oGrid:Indent := 26
oGrid:Images("gBJJgBAIDAAEg4AEEKAD/hz/EMNh8TIRNGwAjEZAEXjAojKAjMLjABhkaABAk0plUrlktl0vmExmUzmk1m03nE5nU7nk9miAoE+oVDolFo1HpFJpU5h8Sf9OqFNqUOqNUqdPq9VrFWrlbr1QpdhAFAkFis1ntFptVrtkrpszrNvmVxqk3uVtm1kmF3sdBvF/wGBmV+j9BYGHwWJulfxdax2NyFdx2JlV6l9Nw7AAGZymdz2Cy2GxErvWcz9ivlwyV21cuxugwktzGIzmvwtl0+53U5y0a0Wazmmyu/3dCyOMyXHx/J5nIr9q3uyqnBxFN3G46ma4vb7mD2Ng4nZze00fDkHC7t7us2rOX5tguetpHRlmz4HVqnXk1PjHO+CMPo9MBMC+j2vC8j7wS8cFNI4kBo05UIvfCT/NsnsApU+0Fqg/T+oy/kPxC0sEQfErKQK96+w28UWRI8UGvO8sTLS9r2PWmsMJTDTask3CsIbIEQRA3shOXEEAO/GclJ9" +;
"FEKrrA8FRbKMXRIlb0JxCkjS1LMswhCcvuel0cv26cSMa8Ufx+2sQwhEUoSXOCjSbLcnxjKc7sdKUVyq28NtVI71P9P7JxtQEapjQ6fzfM8zPfNE2PhIsLL63E40slk5y7N89LcyU9SvMb3SdUc6VJLj5VLVLfO/PS9KzNFHUa/0XyBD0dxlS9cxhMlTRSoNXypPErWDPyfNS+MwprRNO0FD8wVVZ1AI08URwVRjtJ1WCn21QkkUrXVLVPQS/XIkFgTxT9iONZ9xVTdq+L1eKg3kkF6Upe68XtfV51/MtrVjBlwYFL1ev8y1/P6/lyzzYl02wntj0RVFmS1Qa+M5as93QxEUW9e993rfmQ2+vy65M/mL1lhl/2bj2ByVduMtNhCJT9hdz41nN14Ld12Z9UjfI/oUAaGseiw6+uFLLhcVabJOS5RqOE0BHlZ5VnEr5fOMs3st+aa/bbRzrJGV51Y0b0DbqaWXZD90hIsPbjWu52+6Wyadpe66hhO+P/Xi" +;
"oW5rD8ZbrUZuVg6n1dsE/cXmewu1m9PVwnd35/nueXho/NaJzmjc61W76esuT77eG8pTquy9TwWH8LEzG8RDfFalx3Gcfvna9rvG/cptGLd9tuI6TZOP5Fiqi99vea+X4VRcBq/JZZtVQ9cwSs5lsXE372+a9z7PbfB3VVqHyvMctLto8uob6eV0m/cD6MN2v+T33t6sBut42vdv2bJ8a997x2maFJfK+qArbGJPEKE+1qTflMsIdW/GCJX17KcT6/czr/X+u1g29B7j/4BQfWkkx4zIHisjhPCmE0K4SwtXM+d4BvHRwNZOoBph9IJvPek9d40FoMJxf691jj2ywQQcHEWET4XJwkTszlVqm2GokewxtBT1DpQjRxDN0rUVDNKdC3lb6tzNOwh6upMSSYfv4YBCl/bsn9PxiFCEo7SI6Obc9HeOrnY8x4jtHtdpN4GRbaorhsbu18Pph5CiHymI0RpSXGJ/z2oUOxYxG858AyiI+bfJtuTcG5yelBJy" +;
"T8okhqFd4a5yxL0rvulYtKCsZiWxWkc1s1cRoxxwhA31DLE0mR9l9HqX8fJgTDmFMVH0MIsRzVYnwnMi1dyzmhLt2kS2pxIiU62Wj5ptQGlSYFakLonTUJNLKaM5WzlffEkuFkk5wTrhVO2eE7G6lJhxFFYUZ55zmn0WuBCD4pzhirFCKkbomsOoIYmZx5p90LoYWGPdD5g0QmJRKYxbZ6zYoVQ2jVGylSak7KSkFH6RSjpHKFuU+YMyNo5SulkC6I0vonTCitMXPoEpVS2H5FQfEqp2R1opIgAEkJISYARTCukOhmPNI5Ex/wzGHUsicMwA1LHgQ90Y/KpoQHAD+pB/R4NzIaMAB9Xaw1gqaAOsh/A/ptIkWUfhGK1kZH8RgH5GqvgArqRmt4AAPrTroRofBGADkqr6Rmu4D7CEaHARiwpJrEEZsXXwlVjyMWRsaRqwdkLGNBABZmytmyMnaINZqyVpLR2ftKAAAdd6h2osbaskdiq4EZtgSmyNcbVW" +;
"RJNXe3AA7REar3b0stlAAXBtoRmvJGLjEYAHUWsFcwCD/rnaop9aEICMAPdK5hT6xpeuzdOtAgKuJeGfdq6ggEbkTvAP+p9UCHXrvKkcgIA==")
oAppearance := oGrid:VisualAppearance()
oAppearance:Add(1,"gBFLBCJwBAEHhEJAAEhABfICg6AADACAxRDgMQBQKAAzQFAYbhkGCGAAGMZxRgmFgAQhFcZQSKUOQTDKMIziaQAGgkNQwCSLIwjNIsBxPFKVQChEYxSjKA40SJNUgyj6CCY+QLIE5PfQgAL9I6eJABCCSQKkYx0HScRiwPBIbAZAYhCZqaKhWgkKI/WBQIABRDVLx5ESiLRtKy7Mq2bpvXBcNxXHalaztO68LxvKyqHb5fJ/PpgL4YHgmC4NQ7EMRwF6rfbyfZ7Xg/ORPTijZ4sdzMHTzJyscx3HqfaBoOaZU5eMLceTUMofHIndxCcasPbsOatVqjG5sYjcGC3La9cz3Pq/bpuDCbMxuaK1TrYXr1TTrcofBDldAxXRKDxRDWVhLnYOw9i6XxzjuXprCaOoKB6EwbiCZZCGOdZYlcT4xHmbhMnwNxtn+G5bmqdZ7n4Pw/i+X5zm+dQ9g4CAFjsfAJheOI8HsDoWDWTB/lwSAQkmA5PEgRYoDyDwYFY" +;
"FoFmGCBmBqBphDgRJ0gOTIYBGRB/lyRh0iSCZbjYWJzgWDwIjYLoLmMCJGDKDJjBgWgqG6YhyhGHRzA2aJ1mCABOAiOJvhCZBJBYRoRmSCQmEqEQimkAZgg8TZnDCV4UkmCUmBKZYJGYWoWCUUhiFMNZckNUh2GENoaGaGZmgmJhqhqZpGGIEx2GYIxSGGGJdggWJth2Z4JmYeoemeSZ2H6H4hGmQhihyTRHGYLg7CiCgmgqIpokoNoOiOaJ4jqAochqaZGgaCxpAoZoaiaaJqEmWIcGgShcnCJwqEqFoR3YOoFlgchflqNouiuawHmWSYqGkWZQhcatzmaOoumuSp2j6L5bBaKo0GQKRnGGCxqiyCwmkqMpsksNpOGUGI7A0ew1G0Rxlg0PptgsZuDG2Sx2l6N5tnYNZZjUDRXDCVo5l2FoymqOpukuNpujubwLjmWY5k0ZwxkaFxYlWdp6j6b5Lnafo/nABQdg2FxcUsY5BkmXAkmeQpckwNRrkKTh" +;
"8CSHZBk4NwyC4KxxgMDwakOMZDn8GgwnGAo2C4cwthMcwmCcMoHBMHRehwTIghySYNksZwcH4HBMEsHx5hyPItiweYxnwSZEH4Mozn0fR+DMAo7EYJ50gkdZelKdNql2UgJn0GIukwH4HicQRai2GI4mSVpNl0dZGledgNgcYpYDWUx3FsOQi5YV5anaTY3G6W53A2RxylydxFjiaxEFCCgBBAQ==")
oAppearance:Add(2,"gBFLBCJwBAEHhEJAAEhABcoFg6AADACAxRDgMQBQKAAzQFAYbhkGCGAAGMZxRgmFgAQhFcZQSKUOQTDKMIziaQAGgkNQwCSLIwjNIsBxPFKVQChEYxSjKA40SJNUgyj6CCY+QLIE5PfQgAL9I6eJABCCSQKkYx0HScRiwPBIbAZAYhCZqaKhWgkKI/WBQIABRDVLx5ESiLRtKy7Mq2bpvXBcNxXHalaztO68LxvKyqHb5fJ/PpgL4YHgmC4NQ7EMRwF6rfbyfZ7Xg/ORPTijZ4sdzMHTzJyscx3HqfaBoOaZU5eMLceTUMofHIndxCcasPbsLpOS5LNKsaxmWLYdhFdTxQi6LpvfA8BwXC6JY7heRYRbFbYxRjGNi1TS7G4nGKd5WGuL4UHwI4VkaYxii8V4pgQMgVBQdQ5iCTYGi8T4vlWbJ3nuPg+l+H5AlSCg6ByPBoE8Ap3jqYxhBido5g0OgOGOGI4CsSpCCAcgcAuEokiEN5NCKfJ9DyTRjnS" +;
"cg1CEYxOBmBpPCgagdgcIZoHoGIFA4AxQkCAxKAgKBwgGSpIBCZhjF2E5UnQPQMiMCJBCIBwxkSQgsgo+JtDKT4ziiQw+k6EwAnsOgLnkHI+yCQ4iEuE4klkPhShEJBpAoPgymOMoaDgHBjFMBgyD0HYTiCZSZhIIIGC4ChiHSew5kwM5omILZPiOBI0hwZw5kodIdA+M4Uj4PxOmMSJ9DuTQzmyZgviceZagaHVfj4awwmaAh2GUIYmCOEZZDaDRDFGdwcg4EwyHMN4LBOaJbCoaZqgKH8qkMfIyD8DozDyfA7A0Coui0OpMmOZJdCsahKg6NooioChwmEMxLEoXJbDUTRXGSUgykyMgQG0GpPHMdI3D4TRCgSeQ0kmaw+lGNAtCOZJVCiT5DhyRQwAqMg0EoDBBGEGAsASC5yiSCw+k4Mp6lWNQuksTpRjMTxDGzJwGmGMpDDKXYTECSAxl6Q5olkK4PgMMIVkASRMBMBgzEkaZEjsNALhIZA6AeQB" +;
"gk0ZJEgAAJ0CIAgODMNIsD6DRih9uYwFyAwfCUb5ijmbI+gwdxkk8MZMGeMpPCkDxzBiC5MHMPJLDSSROFMLIoBEQogEMFJPnENYQGgE4DCOaJfC7tYkhGTQ0kyWwykuXpMiyRpKjKR4wngM4JmOWJACCdYtHMWw+Eych4nINYLAEYA8AgdAEEsQZajaQoog4GxPiMVIolcdxNG8XZVkmNoRwWRVBlFeFEeAZQJgnFiHgHwcAhjhHgGMSI5xki2CyA4EQsA3i0HkBsLwKRFgAHcPkHopBJBcBeDUYI7xyDOHqKkWo2hLCsDIBIY4qQ5A8DoMMYwOAqCSBGKgU4yB2iDBwIgB4hxQgAAWNgBoAgsBdEcBUQ4sQ9A/HqD0JI8RpBzH2OYVgahLBHFiJQJweQiDhDUE4SAARQAzFsG0EQwA6AOWSBkFgVAIBCHeGERQFQiCQHeFkC4vkiB8DyB4F4QxVDvGMNEOQexMjlBeOAKQiQLgfDA7QEAaRiBdEkH8" +;
"TI7AZiFBAGYBIABWjYBiGACioQ4C1A+AMMgWhfgxHgPsT4URIB0COKgPgjRwiAB8AYUArxBgCF6J4GY5hrAOCAPAAoGRRCsCIMEXATXfgAF8BMJwURuEQDgD4Q4OBoAeHGFgLIwQrC2D0JoSQ+QvhrHoSgQI8AbDFGID8C4Ah6BQAQAASACwgCYCMAUMARAvCKAiAMCAokeCKBEOAKgCBoDaHuMsEAqwJDiACDURg8R6gPCyDofYWAhgoDIJ4ZAuhoiGAYGgRoQw/A0GMMga4GwxiEDeIYYInATCDBQAoBAwAoDlA0KMBoVRGiDGwDQUYIRsgaGGDgM4LAwDWB8EcIA1APhjEgGQVwgRIgjFIIQHokgZA+CSEkLIKQSjHAwMsCwDAsAEB2ABTIwRwD6A8CMToSxkAxE4HYIw+BsgbBEDAHYBwojCBoIYFgXSjABE4MsHIbQWhlGILQS4UhvBdAUKEEwHgxDAAABQQQUAhgKHiDwE4JS4A7BGLQZwCR4g" +;
"aBEMUYAqgKApHgGwVAIRNgvBMMQXImwZDtE4I8UIyAZCDCAE8AwrhgAdEEBACQLRCg4FEB4AYtA7CdEiPQMoJAMDNCkOMCAXAFDhH0D0Q4EgfAaGSK4NYzRUj9BuCgAgswOBjB4Fqpw8B2ADAwE4A4Qx2DAE6JIaQPQGhAGKBcIQ5B5gHByKIFARwADbAyKUfgdBKBBGyEcVIAB/ijHoIoSA0gdBNl+OATYERZgBGSDYWIWAUCEGKA4FAhR7CIBtYQGYZg4CMAiKEcAOwkBjHWE8Z4lQgA+DkBoTohwwCeAaMEEgBQCCABgHMRwQRhhMEWFQd4HwZgwDqFESItAbAGEANCpINAzANCCJkK4ah+heFYBURwsQrS2CsMYMoWGBhYDWI0EInQgiApXaOVI1QFDsC8MUNoMBMA1HMJga4eh+BeAWOgNNowGjYzCGAAwax+iJBeBVT4gxoBIAGFsJFBxgBiGKFkKQ7g5DFFQEcAo4AzDDACKEQQLgCiJDYB0M" +;
"gRBCCQAgQEA==")
oAppearance:Add(3,"gBFLBCJwBAEHhEJAAEhABQ4Fg6AADACAxRDgMQBQKAAzQFAYbhkGCGAAGMZxRgmFgAQhFcZQSKUOQTDKMIziaQAGgkNQwCSLIwjNIsBxPFKVQChEYxSjKA40SJNUgyj6CCY+QLIE5PfQgAL9I6eJABCCSQKkYx0HScRiwPBIbAZAYhCZqaKhWgkKI/WBQIABRDVLx5ESiLRtKy7Mq2bpvXBcNxXHalaztO68LxvKyqHb5fJ/PpgL4YHgmC4NQ7EMRwF6rfbyfZ7Xg/ORPTijZ4sdzMHTzJyscx3HqfaBoOaZU5eMLceTUMofHIndxCcasPbsLpOS5LNKsaxmWLYdhFdTxQi6LpvfA8BwXC6JY7heRYRbFbYxRjGNi1TS7G4nGKd5WGuL4UHwI4VkaYxii8V4pgQMgVBQdQ5iCTYGi8T4vlWbJ3nuPg+l+H5AlSCg6ByPBoE8Ap3jqYxhBido5g0OgOGOGI4CsSpCCAcgcAuEosiYN5NHMOJ+D4TpTnS" +;
"eQ7CEY4uBmBpPhgagdgcIZoHibIEyUBJZDQIJShoCgcCAcoyAQOYYlcZJ1D0DxDCiQgwEiAZMHEMJLFKPJ9D2DoDnidQ4k+Y5QmKEROBkIhKD0JIZDIS4TGUCQuEeEJjnOIg8CuY4RkYNgwGMM5RllGpThDRYIGKZIpCkJFUH0PINyWcQ3CaaZCG+HBnEOTJhD8Tx4GoeQ/GcaZSHOH5nCmQhshoZhihYYwhiYA4RlkNoNEMUZ3ByDjwEsPxOnMaJ9DuDR6F6GYmCmKh0nANtMioP4Gg8aoSiIO5NhodociqaY6GaFYkEyOg8lsNRNTaUgykyMgQG0GpPiONJbD8DpDEyfA6k0KwOkWMQsGsAJU0SagwkoJQJDIPISCQCJTGSUwyGaM4KkmMgtksHpFjAZ4TGCBAbgaSpcksdhNAMIJHHsD5TjSWWMAMOpwjyLwbk6cAz0KRJiDkDYzESCwiggcgcgYIQwCIEINCMCITj6TVxkMXp2j0cQLlCTo7E2F4" +;
"ymkMZdhMPJHDGHpLAyVg+k4UwrCCSIyByDJ8DuDY8CiWY0kiXAXC6QJwFKGIjCeJpjgyezjlyDw6klHx5myRoMGwZwbkcToTEiew4kwbQfEmUgPkOKJUD4DpTHSHQmgkXI/ASTA1g0XIEDMTBimyfI7jSLYHEiUoPk0Fw/kadAsHGao8A0A5smEMJ2mNyg5gzJZwDgCpChyIZVyIZwFCMJEPASRkBqE+IcHInRcDxA2H4bIsx0AtDsIBpwZwYicD6BscwDwUBgHCIYaIfgtiVH2O4WgUwJjEFeAEQA7y4hMCiBMS4aRdB9A4CYE4LxljyBMHcDItBxinDCLcTYmgejBFQ9UTg9gFBOEmAQTI7A4iZGMGkQAWQ7jYA2HIL8BRAjDG4HcCwARbjZHiNoDw1nLDnGyNINQ+wjCpBMEgcovQUgICQJEcgWRuBvAyJ4d4ugpCUAINcHogxIgnDiM4N4axzD3F2JMTY/hRqYF6FsWIxhYAGGoAALQYgYirBwBE" +;
"BwpAjBEAAIEIYsA2gOHCMAGgXAACIDmMITAUgFABH0D0I4WwvhNFGMAOIvxRD2GKNcMA8gjAPDCPwBogRPAxA8PgRwZRICYDED8RAXQEghEAN8DIgwIBdB4JYWwMgtiQHoFQKAiRFguFKGwGQhglDsEOVwEQQRkCKBwOIHgSREDRBYHEXQcQdD7GIGARQHRxipBrMobgewDCUCADsEYWAzgMHKHQDQxxsDzA6EMfAeQHB4GQDkUYPA0iECiKoGgRhcDdA2GMQA8AOCjDSPgHI4QnApAKBICwHg1A+BcAwcYsgbjGGQNkCIgRsA6EcBEWANADjsB0B8YYzQQDIGSBcEYZBCCPEkFIHQSgkgZAwG4IwBAbAYGGAgL4Ch4g8BOCQAA2KKC0GcAke4AAXAFCoHkDw4xbBFEcJkE4JRSiEFeJYKQVRMgJHODwX4xAgC/AsIIZAeAHDRG0HYI40RKCLEGDUI4jAghwBWIceA+whCpHMFYZYOQxglDMHMBQGxYj" +;
"VHiAoBIPgfgHGwPsHYJRSB6A0IERQLhCjJHMA4OQoAoCOACLYGYSx8DpBQIMWQdRnDRH+DsE4fB3CeAmM67kAAXBFEIDYDI7wLBtEoEIfYNwjiUGGJQYQMAjCHEAO0C4zxW29CoCgfIxR9AKA6J8BgUAIhDGMIoJ40hqgwCgKETgnBhhqCGI0AIqgZhGDANQDIlBDCRGkCoJISR0g1BSKQOgfAzBRG0DYHARh4DeDAOwANuw8ApCKKkYg/RPhjBsH0J4yg5hPGWN0GwFBHQBFaDoQIURljFAoB4GgzRVzbBECQFQRQoguHGHANwDRdCKy8CgSIGwhhoDYJYYI1giBICSAEgI=")
oAppearance:Add(4,"gBFLBCJwBAEHhEJAAEhABUYCg6AADACAxRDgMQBQKAAzQFAYbhkGCGAAGMZxRgmFgAQhFcZQSKUOQTDKMIziYBYfgkMIgSbJUgDGAkRRdDSOYDmGQYDiCIoRShOMIjHLUXxtDaIZwhEAoJb+RgAUY/cTzaAEUwHHiTKInaCQShsFYJUJAdRURQ9EwvCIZBpEWwLChENQwWLCNj2TScBwjCyqbale45ViqdoDU5EUiXJJ8ZxnECfYyrGjaMpCeKBUrGYTVRBIMxLLSia5oeJqMrnBpNVrIUgXCAGFwHK6BcauXIIDp6XoWWRbAAWDpVVzNNC3YzkCIceADHKiXxmVz4JLdGZ1QTGID2XaYaxWK4oZjsVSc4KDHbETbHFi9Fo3NaaxGisew+GYc4HlCR5NAAAIIEkQJSGMOgdE4RhYDwJJsAaAYQgmPpolCWgSCiBJzjcEIAkQXIBm8d5UhOQgCDUIBDDJDhgggJgKgKYJIDSVoDk8KBFF4OohEMZgWDs" +;
"YYDj4GoGmGSB2B6B5iAiBgYDsYRjGSbIJo4RgqDuIpIAoLoLmMCJGDKDJjJiLA7xqUAAgGTwYnYPoPmQCQGEKEJkEkFg9gGY44BoRoSmSSQ2EKEggHgRhShSZRJFYVoVmWCRmFKFAgGOTheheZgJgYYoYmYSYWGaF4lkMMJ0hqZpJjYbobmcCZGHKHJmjmJh0h2Z4JmYcIaE8WZ2H6H5oAoBoCiCaBKBYfdjGoJoKiKaJKDaDojmkChGgmIgpCoVoWiWaJZiSd4mmmSh2h6J5qAqBoiiiaY5iSeIpmqComiqKpqkqNouiuah6hqMIsmsSpWiuGhP1kOoumuSp2j6L5sAsBo54gKwWkaMZsgsJpKjKbJLDaRYxYWRpSjSbIZiSe41m2CxmlqNptksdpejebR5iSfI4m4S4W16boLiaao6m5fJ9jubwLkaco8m8S5WnaPZunuOp4j6b5Lnac4SA0PAGlgP4wEwFwGkGcIMCcCpCnCCxiA8NYAAmMJfkSbh" +;
"FCcFpFnGDBnBqRpUhuEwTDeZ5lHCfw6HIQxLCaAxygyJwqgGcATE4FA6hWY4tjEAAQBAgIA==")
oGrid:SetProperty("BackColorHeader",0x4c6c6c6)
oGrid:SetProperty("SelBackColor",0x4000000)
oGrid:SetProperty("SelForeColor",AutomationTranslateColor( GraMakeRGBColor ( { 0,0,1 } ) , .F. ))
oGrid:SetProperty("CheckImage",0/*Unchecked*/,16777216)
oGrid:SetProperty("CheckImage",1/*Checked*/,33554432)
oGrid:SetProperty("CheckImage",2/*PartialChecked*/,50331648)
oGrid:SetProperty("Background",20/*exSelBackColorFilter*/,oGrid:SelBackColor())
oGrid:SetProperty("Background",21/*exSelForeColorFilter*/,oGrid:SelForeColor())
oGrid:SetProperty("Background",26/*exBackColorFilter*/,oGrid:BackColor())
oGrid:SetProperty("Background",27/*exForeColorFilter*/,oGrid:ForeColor())
oGrid:SetProperty("Background",32/*exCursorHoverColumn*/,-1)
oGrid:SetProperty("Background",0/*exHeaderFilterBarButton*/,0x4000000)
oGrid:SetProperty("Background",41/*exHeaderFilterBarActive*/,0x4010101)
oGrid:SetProperty("Background",1/*exFooterFilterBarButton*/,0x40000ff)
oGrid:HeaderAppearance := 4/*Etched*/
oGrid:ShowFocusRect := .F.
oGrid:SortBarVisible := .T.
oGrid:AllowGroupBy := .T.
oGrid:SetProperty("BackColorSortBar",oGrid:BackColor())
oGrid:SetProperty("BackColorLevelHeader",oGrid:BackColor())
oGrid:FilterBarDropDownHeight := 1
oColumn := oGrid:Columns():Add("Check")
oColumn:SetProperty("Def",0/*exCellHasCheckBox*/,.T.)
oColumn:PartialCheck := .T.
oColumn:Width := 128
oColumn:DisplayFilterButton := .T.
oColumn:FilterList := 256/*exShowCheckBox*/
oColumn1 := oGrid:Columns():Add("Pos")
oColumn1:FormatColumn := "1 pos ``"
oColumn1:AllowSort := .F.
oColumn1:Width := 48
oColumn1:AllowSizing := .F.
oColumn1:Alignment := 1/*CenterAlignment*/
oColumn1:HeaderAlignment := 1/*CenterAlignment*/
oColumn2 := oGrid:Columns():Add("Image")
oColumn2:DisplayFilterButton := .T.
oColumn2:FilterList := 8480/*exShowExclude+exShowCheckBox+exSortItemsAsc*/
oColumn2:FilterType := 10/*exImage*/
oColumn2:DisplayExpandButton := .T.
oColumn2:ExpandColumns := "1,2,3"
oColumn2:Width := 128
oColumn2:HeaderImage := 1
oColumn3 := oGrid:Columns():Add("Images")
oColumn3:SetProperty("Def",0/*exCellHasCheckBox*/,.T.)
oColumn3:Width := 196
oColumn3:HTMLCaption := "<img>1</img><img>2</img><img>3</img> Images"
oGrid:Columns:Item("Pos"):Position := 3
oItems := oGrid:Items()
hR := oItems:AddItem("Root")
oItems:SetProperty("ItemDivider",hR,0)
oItems:SetProperty("ItemDividerLine",hR,0/*EmptyLine*/)
h := oItems:InsertItem(hR,,"Child A")
oItems:SetProperty("CellImage",h,2,1)
oItems:SetProperty("CellImages",h,3,"1,2,3")
oItems:SetProperty("CellValue",h,3,"123")
h := oItems:InsertItem(hR,,"Child B")
oItems:SetProperty("CellState",h,0,1)
oItems:SetProperty("CellImage",h,2,3)
oItems:SetProperty("CellImages",h,3,"2,3,1")
oItems:SetProperty("CellValue",h,3,"231")
oItems:SetProperty("SelectItem",h,.T.)
h := oItems:InsertItem(hR,,"Child C")
oItems:SetProperty("CellImage",h,2,2)
oItems:SetProperty("CellState",h,3,1)
oItems:SetProperty("CellValue",h,3,"312")
oItems:SetProperty("CellImages",h,3,"3,1,2")
oItems:SetProperty("ExpandItem",hR,.T.)
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1176
|
ImageSize property on 16 (default) (specifies the size of control' icons/images/check-boxes/radio-buttons)

PROCEDURE OnAddColumn(oGrid,Column)
/*Column.Def(48) = 2*/
/*Column.Def(49) = 2*/
RETURN
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oAppearance
LOCAL oColumn,oColumn1,oColumn2,oColumn3
LOCAL oItems
LOCAL h,hR
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:AddColumn := {|Column| OnAddColumn(oGrid,Column)} /*Fired after a new column has been added.*/
oGrid:BeginUpdate()
oGrid:ImageSize := 16
oGrid:Images("gBJJgBAIDAAEg4ACEKAD/hz/EMNh8TIRNGwAjEZAEXjAojJAjMLjABAAgjUYkUnlUrlktl0vmExmUzmk1m03nE5nU7nkrQCAntBoVDolFo1HoM/ADAplLptImdMYFOqdSqlXq1QrVbrlGpVWsFNrNdnNjsk7pQAtNroFnt0sh8Yr9iulTuNxs1Eu8OiT/vsnsNVutXlk/oGGtVKxGLxWNtsZtN8iUYuNvy0Zvd+xNYwdwvl4p870GCqc8vOeuVttmp1knyOayWVy+WzN/ze1wOElenm+12WUz/Bv2/3UyyWrzeutux2GSyGP2dQ33C1ur3GD3M4zUNzHdlWjq/E3nGzVpjWv4HA7fRy/Tv2IrN8rPW6nZ3ve7mUlfu20Z8acvQyb+vY9jasYoDwMm+LytVBDqKG3z8O3Cb8P+mkAuY9cCQ2uL4KaxDKvkp8RNLEjqugnrwQo/UWPzFyeQw5sNLZFENrI4kOqU66pw8uzmOKvTqNqjULJvGL1JO48GtT" +;
"GsbLdEL3scxLlyiw8dQeoUVxdLTtyKmUjwGlslRPJsnK1HbAKbKCrsQo8uQk/CeP44iaR/ATnTNPLvyxPU+z9P9AUDQVBowiofJXQ6Oo+kKMpIkjztE4TKn4P6JowfgPnwD5/nAjB8AOeAPo0eAA1IAFH07UhAIMpYAVIYFHqBUhwVjV1S1EtQAHxW65V0AZwAeuQAnwB5gAPYViEDVhwAHTQBkCjB4gOhwDmCyhH0sACAg==")
oAppearance := oGrid:VisualAppearance()
oAppearance:Add(4,"gBFLBCJwBAEHhEJAAEhABUYCg6AADACAxRDgMQBQKAAzQFAYbhkGCGAAGMZxRgmFgAQhFcZQSKUOQTDKMIziYBYfgkMIgSbJUgDGAkRRdDSOYDmGQYDiCIoRShOMIjHLUXxtDaIZwhEAoJb+RgAUY/cTzaAEUwHHiTKInaCQShsFYJUJAdRURQ9EwvCIZBpEWwLChENQwWLCNj2TScBwjCyqbale45ViqdoDU5EUiXJJ8ZxnECfYyrGjaMpCeKBUrGYTVRBIMxLLSia5oeJqMrnBpNVrIUgXCAGFwHK6BcauXIIDp6XoWWRbAAWDpVVzNNC3YzkCIceADHKiXxmVz4JLdGZ1QTGID2XaYaxWK4oZjsVSc4KDHbETbHFi9Fo3NaaxGisew+GYc4HlCR5NAAAIIEkQJSGMOgdE4RhYDwJJsAaAYQgmPpolCWgSCiBJzjcEIAkQXIBm8d5UhOQgCDUIBDDJDhgggJgKgKYJIDSVoDk8KBFF4OohEMZgWDs" +;
"YYDj4GoGmGSB2B6B5iAiBgYDsYRjGSbIJo4RgqDuIpIAoLoLmMCJGDKDJjJiLA7xqUAAgGTwYnYPoPmQCQGEKEJkEkFg9gGY44BoRoSmSSQ2EKEggHgRhShSZRJFYVoVmWCRmFKFAgGOTheheZgJgYYoYmYSYWGaF4lkMMJ0hqZpJjYbobmcCZGHKHJmjmJh0h2Z4JmYcIaE8WZ2H6H5oAoBoCiCaBKBYfdjGoJoKiKaJKDaDojmkChGgmIgpCoVoWiWaJZiSd4mmmSh2h6J5qAqBoiiiaY5iSeIpmqComiqKpqkqNouiuah6hqMIsmsSpWiuGhP1kOoumuSp2j6L5sAsBo54gKwWkaMZsgsJpKjKbJLDaRYxYWRpSjSbIZiSe41m2CxmlqNptksdpejebR5iSfI4m4S4W16boLiaao6m5fJ9jubwLkaco8m8S5WnaPZunuOp4j6b5Lnac4SA0PAGlgP4wEwFwGkGcIMCcCpCnCCxiA8NYAAmMJfkSbh" +;
"FCcFpFnGDBnBqRpUhuEwTDeZ5lHCfw6HIQxLCaAxygyJwqgGcATE4FA6hWY4tjEAAQBAgIA==")
oGrid:SetProperty("BackColorHeader",0x4c6c6c6)
oGrid:SetProperty("SelBackColor",0x4000000)
oGrid:SetProperty("SelForeColor",AutomationTranslateColor( GraMakeRGBColor ( { 0,0,1 } ) , .F. ))
oGrid:SetProperty("Background",20/*exSelBackColorFilter*/,oGrid:SelBackColor())
oGrid:SetProperty("Background",21/*exSelForeColorFilter*/,oGrid:SelForeColor())
oGrid:SetProperty("Background",26/*exBackColorFilter*/,oGrid:BackColor())
oGrid:SetProperty("Background",27/*exForeColorFilter*/,oGrid:ForeColor())
oGrid:SetProperty("Background",32/*exCursorHoverColumn*/,-1)
oGrid:SetProperty("Background",0/*exHeaderFilterBarButton*/,0x4000000)
oGrid:SetProperty("Background",41/*exHeaderFilterBarActive*/,0x4010101)
oGrid:SetProperty("Background",1/*exFooterFilterBarButton*/,0x40000ff)
oGrid:HeaderAppearance := 4/*Etched*/
oGrid:ShowFocusRect := .F.
oGrid:SortBarVisible := .T.
oGrid:AllowGroupBy := .T.
oGrid:SetProperty("BackColorSortBar",oGrid:BackColor())
oGrid:SetProperty("BackColorLevelHeader",oGrid:BackColor())
oGrid:FilterBarDropDownHeight := 1
oColumn := oGrid:Columns():Add("Check")
oColumn:SetProperty("Def",0/*exCellHasCheckBox*/,.T.)
oColumn:PartialCheck := .T.
oColumn:Width := 128
oColumn:DisplayFilterButton := .T.
oColumn:FilterList := 256/*exShowCheckBox*/
oColumn1 := oGrid:Columns():Add("Pos")
oColumn1:FormatColumn := "1 pos ``"
oColumn1:AllowSort := .F.
oColumn1:Width := 48
oColumn1:AllowSizing := .F.
oColumn1:Alignment := 1/*CenterAlignment*/
oColumn1:HeaderAlignment := 1/*CenterAlignment*/
oColumn2 := oGrid:Columns():Add("Image")
oColumn2:DisplayFilterButton := .T.
oColumn2:FilterList := 8480/*exShowExclude+exShowCheckBox+exSortItemsAsc*/
oColumn2:FilterType := 10/*exImage*/
oColumn2:DisplayExpandButton := .T.
oColumn2:ExpandColumns := "1,2,3"
oColumn2:Width := 128
oColumn2:HeaderImage := 1
oColumn3 := oGrid:Columns():Add("Images")
oColumn3:SetProperty("Def",0/*exCellHasCheckBox*/,.T.)
oColumn3:Width := 196
oColumn3:HTMLCaption := "<img>1</img><img>2</img><img>3</img> Images"
oGrid:Columns:Item("Pos"):Position := 3
oItems := oGrid:Items()
hR := oItems:AddItem("Root")
oItems:SetProperty("ItemDivider",hR,0)
oItems:SetProperty("ItemDividerLine",hR,0/*EmptyLine*/)
h := oItems:InsertItem(hR,,"Child A")
oItems:SetProperty("CellImage",h,2,1)
oItems:SetProperty("CellImages",h,3,"1,2,3")
oItems:SetProperty("CellValue",h,3,"123")
h := oItems:InsertItem(hR,,"Child B")
oItems:SetProperty("CellState",h,0,1)
oItems:SetProperty("CellImage",h,2,3)
oItems:SetProperty("CellImages",h,3,"2,3,1")
oItems:SetProperty("CellValue",h,3,"231")
oItems:SetProperty("SelectItem",h,.T.)
h := oItems:InsertItem(hR,,"Child C")
oItems:SetProperty("CellImage",h,2,2)
oItems:SetProperty("CellState",h,3,1)
oItems:SetProperty("CellValue",h,3,"312")
oItems:SetProperty("CellImages",h,3,"3,1,2")
oItems:SetProperty("ExpandItem",hR,.T.)
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1175
|
The user clicks the drop-down filter, select a value and the control's list filters for the selected item(s). Is there a way for when the user then goes to the next column to add another filter and the drop down arrow is clicked for the list of values they can filter by to be limited to what is being displayed in the list due to the first filter they set

PROCEDURE OnAddColumn(oGrid,Column)
RETURN
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL rs
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:AddColumn := {|Column| OnAddColumn(oGrid,Column)} /*Fired after a new column has been added.*/
oGrid:BeginUpdate()
oGrid:ColumnAutoResize := .F.
rs := CreateObject("ADOR.Recordset")
rs:Open("Orders","Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExGrid\Sample\Access\misc.accdb",3/*adOpenStatic*/,3/*adLockOptimistic*/)
oGrid:DataSource := rs
oGrid:Columns:Item("ShipVia"):Position := 2
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1174
|
Does the control display images from database (ADO)

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oColumn
LOCAL rs
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:BeginUpdate()
oGrid:ColumnAutoResize := .F.
oGrid:DrawGridLines := -1/*exAllLines*/
oGrid:GridLineStyle := 512/*exGridLinesGeometric*/
oGrid:DefaultItemHeight := 48
rs := CreateObject("ADODB.Recordset")
rs:Open("Employees","Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExGrid\Sample\Access\misc.mdb",3/*adOpenStatic*/,3/*adLockOptimistic*/)
oGrid:DataSource := rs
oColumn := oGrid:Columns:Item("Photo")
oColumn:Position := 1
oColumn:Width := 128
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1173
|
Does the control display images from database (DAO)

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oColumn
LOCAL rs
LOCAL oPrivDBEngine
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:BeginUpdate()
oGrid:ColumnAutoResize := .F.
oGrid:DrawGridLines := -1/*exAllLines*/
oGrid:GridLineStyle := 512/*exGridLinesGeometric*/
oGrid:DefaultItemHeight := 48
oPrivDBEngine := CreateObject("DAO.DBEngine.36")
rs := oPrivDBEngine:OpenDatabase("C:\Program Files\Exontrol\ExGrid\Sample\Access\misc.mdb"):OpenRecordset("Employees")
oGrid:DataSource := rs
oColumn := oGrid:Columns:Item("Photo")
oColumn:Position := 1
oColumn:Width := 128
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1172
|
Is it possible to set from code, a column sort without being inserted in the sortbar

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL rs
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:BeginUpdate()
oGrid:ColumnAutoResize := .F.
rs := CreateObject("ADOR.Recordset")
rs:Open("Orders","Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExGrid\Sample\Access\misc.accdb",3/*adOpenStatic*/,3/*adLockOptimistic*/)
oGrid:DataSource := rs
oGrid:SortBarVisible := .T.
oGrid:Layout := "singlesort=" + CHR(34) + "C1:1" + CHR(34) + ""
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1171
|
Is it possible to view all events the control fires
PROCEDURE OnEvent(oGrid,EventID)
DevOut( Transform(oGrid:EventParam(-2),"") )
RETURN
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oColumn
LOCAL oItems
LOCAL h,hChild
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:Event := {|EventID| OnEvent(oGrid,EventID)} /*Notifies the application once the control fires an event.*/
oGrid:BeginUpdate()
oGrid:LinesAtRoot := -1/*exLinesAtRoot*/
oColumn := oGrid:Columns():Add("Tasks")
oColumn:SetProperty("Def",0/*exCellHasCheckBox*/,.T.)
oColumn:PartialCheck := .T.
oColumn:SetProperty("Def",17/*exCellValueFormat*/,1)
oColumn:FormatColumn := "value + (%CS0 = 1 ? `<r><fgcolor=808080>(checked)` : ``)"
oColumn:Editor():EditType := 1/*EditType*/
oGrid:HeaderVisible := .T.
oItems := oGrid:Items()
h := oItems:AddItem("Project")
hChild := oItems:InsertItem(h,,"Task 1")
oItems:SetProperty("SelectItem",hChild,.T.)
hChild := oItems:InsertItem(h,,"Task 2")
oItems:SetProperty("CellState",hChild,0,1)
hChild := oItems:InsertItem(h,,"Task 3")
oItems:SetProperty("CellState",hChild,0,1)
oItems:SetProperty("ExpandItem",h,.T.)
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1170
|
How can I find all occurences of the giving value, within a column
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oColumn,oColumn1
LOCAL oItems
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:BeginUpdate()
oGrid:Columns():Add("Default")
oColumn := oGrid:Columns():Add("Pos")
oColumn:FormatColumn := "1 pos 'A-Z'"
oColumn:Position := 0
oColumn:AllowSizing := .F.
oColumn:Width := 32
oColumn:Enabled := .F.
oColumn1 := oGrid:Columns():Add("Index")
oColumn1:FormatColumn := "0 index ''"
oColumn1:AllowSizing := .F.
oColumn1:Width := 32
oColumn1:Enabled := .F.
oItems := oGrid:Items()
oItems:AddItem("A")
oItems:AddItem("A")
oItems:AddItem("A")
DevOut( oItems:CellCaption(oItems:FindItem("A",0,0),1) )
DevOut( oItems:CellCaption(oItems:FindItem("A",0,1),1) )
DevOut( oItems:CellCaption(oItems:FindItem("A",0,2),1) )
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1169
|
How can I prevent expanding/collapsing the child items

PROCEDURE OnBeforeExpandItem(oGrid,Item,Cancel)
Cancel := oGrid:Items():ItemParent(Item)
RETURN
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oItems
LOCAL h
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:BeforeExpandItem := {|Item,Cancel| OnBeforeExpandItem(oGrid,Item,Cancel)} /*Fired before an item is about to be expanded (collapsed).*/
oGrid:BeginUpdate()
oGrid:SingleSel := .F.
oGrid:Columns():Add("Default")
oGrid:LinesAtRoot := -1/*exLinesAtRoot*/
oItems := oGrid:Items()
h := oItems:AddItem("Root 1")
oItems:InsertItem(oItems:InsertItem(h,,"Child 1.1"),,"Child")
oItems:InsertItem(h,,"Child 1.2")
oItems:SetProperty("ExpandItem",h,.T.)
h := oItems:AddItem("Root 2")
oItems:InsertItem(oItems:InsertItem(h,,"Child 2.1"),,"Child")
oItems:InsertItem(h,,"Child 2.2")
oItems:SetProperty("ExpandItem",h,.T.)
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1168
|
How can I display the EBN bigger or smaller (thumb)

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oAppearance
LOCAL oItems
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:BeginUpdate()
oAppearance := oGrid:VisualAppearance()
oAppearance:Add(1,"c:\exontrol\images\normal.ebn")
oAppearance:Add(10,"CP:1 0 3 0 -3")
oAppearance:Add(17,"CP:1 3 0 -3 0")
oGrid:SetProperty("Background",388/*exHSThumb*/,0xa000000)
oGrid:SetProperty("Background",260/*exVSThumb*/,0x11000000)
oGrid:ScrollBars := 3855/*exVScrollEmptySpace+exHScrollEmptySpace+exVScrollOnThumbRelease+exHScrollOnThumbRelease+exDisableBoth*/
oGrid:ScrollBySingleLine := .T.
oGrid:Columns():Add("Def")
oItems := oGrid:Items()
oItems:AddItem(1)
oItems:AddItem(2)
oItems:AddItem(3)
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1167
|
I am using GroupBy feature to create a tree, but the top rows are aligned with the children, not indented. What could be wrong

PROCEDURE OnAddGroupItem(oGrid,Item)
/*AddBar(Item,"Progress", #12/2/2017#,#12/2/2017#)*/
/*DefineSummaryBars(Item,"", -3, "")*/
/*Chart.ItemBackColor(Item) = color*/
LOCAL oItems
LOCAL color
color := 14474460
oItems := oGrid:Items()
oItems:SetProperty("ItemDivider",Item,-1)
oItems:SetProperty("CellValue",Item,1,oItems:CellCaption(Item,oItems:GroupItem(Item)))
oItems:SetProperty("ItemBold",Item,.T.)
oItems:SetProperty("ItemBackColor",Item,color)
RETURN
PROCEDURE OnAddItem(oGrid,Item)
/*AddBar(Item,"Task",#12/4/2017#,#12/10/2017#)*/
/*ItemBar(Item,"", 514) = ItemToIndex(Item)*/
LOCAL oItems
oItems := oGrid:Items()
RETURN
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oColumns
LOCAL oItems
LOCAL h
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:AddGroupItem := {|Item| OnAddGroupItem(oGrid,Item)} /*Occurs after a new Group Item has been inserted to Items collection.*/
oGrid:AddItem := {|Item| OnAddItem(oGrid,Item)} /*Occurs after a new Item has been inserted to Items collection.*/
oGrid:BeginUpdate()
oColumns := oGrid:Columns()
oColumns:Add("C1")
oColumns:Add("C2")
oGrid:LinesAtRoot := -1/*exLinesAtRoot*/
oGrid:SortBarVisible := .T.
oGrid:SortBarCaption := "Drag a <b>column</b> header here to group by that column."
oGrid:AllowGroupBy := .T.
oItems := oGrid:Items()
h := oItems:AddItem("Item A")
oItems:SetProperty("CellValue",h,1,"SubItem A.1")
h := oItems:AddItem("Item A")
oItems:SetProperty("CellValue",h,1,"SubItem A.1")
h := oItems:AddItem("Item A")
oItems:SetProperty("CellValue",h,1,"SubItem A.1")
h := oItems:AddItem("Item A")
oItems:SetProperty("CellValue",h,1,"SubItem A.1")
h := oItems:AddItem("Item B")
oItems:SetProperty("CellValue",h,1,"SubItem B.1")
h := oItems:AddItem("Item B")
oItems:SetProperty("CellValue",h,1,"SubItem B.1")
oGrid:Columns:Item(0):SortOrder := 1/*SortAscending*/
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1166
|
How can I display an item of picture type

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oItems
LOCAL h,h1
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:BeginUpdate()
oGrid:LinesAtRoot := -1/*exLinesAtRoot*/
oGrid:ScrollBySingleLine := .F.
oGrid:HeaderAppearance := 4/*Etched*/
oGrid:HeaderHeight := 24
oGrid:Columns():Add("Artikel"):HTMLCaption := "<u>Artikel"
oGrid:Columns():Add("Waarde"):HTMLCaption := "<u>Waarde"
oGrid:SetProperty("HTMLPicture","T22128","c:\exontrol\images\zipdisk.gif")
oItems := oGrid:Items()
h := oItems:AddItem("T22128-28)2D")
h1 := oItems:InsertItem(h,,"<img>T22128:128</img>")
oItems:SetProperty("CellValueFormat",h1,0,1/*exHTML*/)
oItems:SetProperty("ItemHeight",h1,128)
h1 := oItems:InsertItem(h,,"werkvoorbereiding")
oItems:SetProperty("CellValue",h1,1,"5.80")
oItems:SetProperty("CellBold",h1,1,.T.)
oItems:SetProperty("CellValue",oItems:InsertItem(h1,,"Type"),1,"Eenvoudig")
oItems:SetProperty("CellValue",oItems:InsertItem(h1,,"Prijs p/uur"),1,"60,00")
oItems:SetProperty("CellValue",oItems:InsertItem(h1,,"Marhe"),1,"15,00%")
oItems:SetProperty("CellValue",oItems:InsertItem(h1,,"Insteltijd min."),1,"5,00")
oItems:SetProperty("CellValue",oItems:InsertItem(h1,,"Aantal"),1,1)
oItems:SetProperty("CellValue",oItems:InsertItem(h1,,"Kostprije"),1,"5,00")
oItems:SetProperty("ExpandItem",h1,.T.)
h1 := oItems:InsertItem(h,,"materiall")
oItems:SetProperty("CellValue",h1,1,"14.82")
oItems:SetProperty("CellBold",h1,1,.T.)
oItems:SetProperty("ItemHasChildren",h1,.T.)
h1 := oItems:InsertItem(h,,"snijden")
oItems:SetProperty("CellValue",h1,1,"3.13")
oItems:SetProperty("CellBold",h1,1,.T.)
oItems:SetProperty("ItemHasChildren",h1,.T.)
oItems:SetProperty("ExpandItem",h,.T.)
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1165
|
Dark mode

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL back,fore
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:BeginUpdate()
back := 65536
fore := 16777215
oGrid:VisualAppearance():Add(1,"gBFLBCJwBAEHhEJAAEhABXUIQAAYAQGKIcBiAKBQAGYBIJDEMgzDDAUBjKKocQTC4AIQjCK4JDKHYJRpHEZyCA8EhqGASRAFUQBYiWE4oSpLABQaK0ZwIGyRIrkGQgQgmPYDSDNU4zVIEEglBI0TDNczhNDENgtGYaJqHIYpZBcM40TKkEZoSIITZcRrOEBiRL1S0RBhGcRUHZlWzdN64LhuK47UrWdD/XhdVzXRbjfz1Oq+bxve48Br7A5yYThdr4LhOFQ3RjIL4xbIcUwGe6VZhjOLZXjmO49T69HTtOCYBEBA")
oGrid:VisualAppearance():Add(2,"gBFLBCJwBAEHhEJAAEhABPMIQAAYAQGKIcBiAKBQAGaAoDDcMgwQwAAxjIKUEwsACEIrjKCYVgOHYYQjGMZwHCMIhiGwcAChEZYHgkMYmDAMUhSE78axHG6PY7kKZ4biaKIqQLLEhSfJ0YyBECBZpfebIbjmIZMSLEIxDKItJSpCIaRgqWS6ahGO4JUbUFLQHT9IR4daIYRgEEBA")
oGrid:VisualAppearance():Add(3,"gBFLBCJwBAEHhEJAAEhABUUIQAAYAQGKIcBiAKBQAGaAoDDcMgwQwAAxjIKUEwsACEIrjKCYVgOHYYQjGMZwGAsEwjAoYAChEaILgkMw2DBIQwgJIMEr/G6RZxjeL5CjmG4nDhKMpybAcXxjBIYZJgOQpXb+PobTrNNLzfRFAxVAaWJikcZ4HpIAJNVLFdQ0XYMNSBISsBqrKiKcpeIIDWBZMbRZT1ZABCIZBpEW6LahENQwXrCN74DYkNTdKaxbbuaaXLhGCYBgIA==")
oGrid:HeaderAppearance := 5/*Bump*/
oGrid:SetProperty("BackColor",back)
oGrid:SetProperty("BackColorHeader",back)
oGrid:SetProperty("BackColorLevelHeader",back)
oGrid:SetProperty("BackColorSortBar",back)
oGrid:SetProperty("BackColorSortBarCaption",back)
oGrid:SetProperty("FilterBarBackColor",back)
oGrid:SetProperty("FilterBarForeColor",fore)
oGrid:SetProperty("ForeColor",fore)
oGrid:SetProperty("ForeColorHeader",fore)
oGrid:SetProperty("ForeColorSortBar",fore)
oGrid:SetProperty("SelBackColor",fore)
oGrid:SetProperty("SelForeColor",back)
oGrid:SetProperty("Background",0/*exHeaderFilterBarButton*/,0x1000000)
oGrid:SetProperty("Background",32/*exCursorHoverColumn*/,-1)
oGrid:SetProperty("Background",64/*exToolTipAppearance*/,0x3000000)
oGrid:SetProperty("Background",65/*exToolTipBackColor*/,back)
oGrid:SetProperty("Background",66/*exToolTipForeColor*/,fore)
oGrid:SetProperty("Background",20/*exSelBackColorFilter*/,fore)
oGrid:SetProperty("Background",21/*exSelForeColorFilter*/,back)
oGrid:SetProperty("Background",26/*exBackColorFilter*/,back)
oGrid:SetProperty("Background",27/*exForeColorFilter*/,fore)
oGrid:SetProperty("Background",28/*exSortBarLinkColor*/,back)
oGrid:SetProperty("Background",511/*exScrollSizeGrip*/,back)
oGrid:SetProperty("Description",25/*exFilterBarExclude*/,"<bgcolor 0><fgcolor ffffff> Exclude </fgcolor></bgcolor>")
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1164
|
I have changed the font, but the item's height remains the same. What I am doing wrong

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:BeginUpdate()
oGrid:ColumnAutoResize := .F.
oGrid:LoadXML("http://www.exontrol.net/testing.xml")
oGrid:Font():Size := 22
oGrid:HeaderHeight := 42
oGrid:DefaultItemHeight := 36
oGrid:Items():SetProperty("ItemHeight",0,oGrid:DefaultItemHeight())
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1163
|
How can I specify the cell's outline, border or lines around, when the cell gets selected

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oAppearance
LOCAL oItems
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:BeginUpdate()
oGrid:AttachTemplate("handle AddColumn(Column){Column{Def(48)=4;Def(49)=4;}}")
oAppearance := oGrid:VisualAppearance()
oAppearance:Add(1,"gBFLBCJwBAEHhEJAAEhABPEGACAADACAxRDgMQBQKAAzQFAYbBuGCGAAGIYBTgmFgAQhFcZQSpEEg7BKMYwjOJgFgmEQxDANIBQSKoaQiGQYYLhEZAEiONoaDJCM4wHIMQxHCKTZRkGcfaRCGSfIzpGKpVgOTYiTbPcIyQKtBxDIydJTmeQQQhsFIJU7SdVUPDUJZlWbLAwWTAYazXCKRZBpeJqdo6Y5RUDKUqSdLUYyvEq7ZqnOIpw5vICpaCqOp6HqKFpiXSAFL1fLmAwvPKrJjoeqpWpyCaRZQAGg4dbEdTNNCIbatQANKrCSpgZ7sMB6Di2L4TPS2awoWgRYyTFZMbBAeQ7LC1c45Fqrd4zS4dSxKCahcLxFiaNpYZYnjUap1jGPJlkuAgAkidB3nceZsCQEQJCgGhMGcQ4pkiSxEAAOYpiQIhvkYNA2gSCg5n+LIoGILowFyXQoAYAoAmASAWAaAZgggJgKF2T54DYDoDmECBGBKBJgGgTgWgW" +;
"YRoFYGIGmGOBqByB5hCgegggiYJYgoJIICIaIeByChixULILGGGAWDCCgjCiTgrg0YxojoC4OmOSJ2D6D5kAgJLFgABAEICA=")
oAppearance:Add(2,"CP:1 -4 0 0 0")
oGrid:SetProperty("SelBackColor",0x2000000)
oGrid:SetProperty("SelForeColor",AutomationTranslateColor( GraMakeRGBColor ( { 0,0,1 } ) , .F. ))
oGrid:FullRowSelect := 0/*exColumnSel*/
oGrid:ShowFocusRect := .F.
oGrid:DefaultItemHeight := 24
oGrid:HeaderHeight := 24
oGrid:DrawGridLines := 2/*exVLines*/
oGrid:Columns():Add("C1")
oGrid:Columns():Add("C2")
oItems := oGrid:Items()
oItems:SetProperty("CellValue",oItems:AddItem("Cell 1"),1,"Cell 2")
oItems:SetProperty("CellValue",oItems:AddItem("Cell 3"),1,"Cell 4")
oGrid:Items():SelectPos := 1
oGrid:SelectColumnIndex := 1
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1162
|
How can I specify the cell's outline, border or lines around, when the item gets selected

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oItems
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:BeginUpdate()
oGrid:AttachTemplate("handle AddColumn(Column){Column{Def(48)=4;Def(49)=4;}}")
oGrid:VisualAppearance():Add(1,"gBFLBCJwBAEHhEJAAEhABPEGACAADACAxRDgMQBQKAAzQFAYbBuGCGAAGIYBTgmFgAQhFcZQSpEEg7BKMYwjOJgFgmEQxDANIBQSKoaQiGQYYLhEZAEiONoaDJCM4wHIMQxHCKTZRkGcfaRCGSfIzpGKpVgOTYiTbPcIyQKtBxDIydJTmeQQQhsFIJU7SdVUPDUJZlWbLAwWTAYazXCKRZBpeJqdo6Y5RUDKUqSdLUYyvEq7ZqnOIpw5vICpaCqOp6HqKFpiXSAFL1fLmAwvPKrJjoeqpWpyCaRZQAGg4dbEdTNNCIbatQANKrCSpgZ7sMB6Di2L4TPS2awoWgRYyTFZMbBAeQ7LC1c45Fqrd4zS4dSxKCahcLxFiaNpYZYnjUap1jGPJlkuAgAkidB3nceZsCQEQJCgGhMGcQ4pkiSxEAAOYpiQIhvkYNA2gSCg5n+LIoGILowFyXQoAYAoAmASAWAaAZgggJgKF2T54DYDoDmECBGBKBJgGgTgWgW" +;
"YRoFYGIGmGOBqByB5hCgegggiYJYgoJIICIaIeByChixULILGGGAWDCCgjCiTgrg0YxojoC4OmOSJ2D6D5kAgJLFgABAEICA=")
oGrid:SetProperty("SelBackColor",0x1000000)
oGrid:SetProperty("SelForeColor",AutomationTranslateColor( GraMakeRGBColor ( { 0,0,1 } ) , .F. ))
oGrid:ShowFocusRect := .F.
oGrid:DefaultItemHeight := 24
oGrid:HeaderHeight := 24
oGrid:DrawGridLines := 2/*exVLines*/
oGrid:Columns():Add("C1")
oGrid:Columns():Add("C2")
oItems := oGrid:Items()
oItems:SetProperty("CellValue",oItems:AddItem("Cell 1"),1,"Cell 2")
oItems:SetProperty("CellValue",oItems:AddItem("Cell 3"),1,"Cell 4")
oItems:SelectPos := 1
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1161
|
How can I specify the cell's outline, border or lines around

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oItems
LOCAL h
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:BeginUpdate()
oGrid:AttachTemplate("handle AddColumn(Column){Column{Def(48)=4;Def(49)=4;}}")
oGrid:VisualAppearance():Add(1,"gBFLBCJwBAEHhEJAAEhABPEGACAADACAxRDgMQBQKAAzQFAYbBuGCGAAGIYBTgmFgAQhFcZQSpEEg7BKMYwjOJgFgmEQxDANIBQSKoaQiGQYYLhEZAEiONoaDJCM4wHIMQxHCKTZRkGcfaRCGSfIzpGKpVgOTYiTbPcIyQKtBxDIydJTmeQQQhsFIJU7SdVUPDUJZlWbLAwWTAYazXCKRZBpeJqdo6Y5RUDKUqSdLUYyvEq7ZqnOIpw5vICpaCqOp6HqKFpiXSAFL1fLmAwvPKrJjoeqpWpyCaRZQAGg4dbEdTNNCIbatQANKrCSpgZ7sMB6Di2L4TPS2awoWgRYyTFZMbBAeQ7LC1c45Fqrd4zS4dSxKCahcLxFiaNpYZYnjUap1jGPJlkuAgAkidB3nceZsCQEQJCgGhMGcQ4pkiSxEAAOYpiQIhvkYNA2gSCg5n+LIoGILowFyXQoAYAoAmASAWAaAZgggJgKF2T54DYDoDmECBGBKBJgGgTgWgW" +;
"YRoFYGIGmGOBqByB5hCgegggiYJYgoJIICIaIeByChixULILGGGAWDCCgjCiTgrg0YxojoC4OmOSJ2D6D5kAgJLFgABAEICA=")
oGrid:SelBackMode := 1/*exTransparent*/
oGrid:ShowFocusRect := .F.
oGrid:DefaultItemHeight := 24
oGrid:HeaderHeight := 24
oGrid:DrawGridLines := 2/*exVLines*/
oGrid:Columns():Add("C1")
oGrid:Columns():Add("C2")
oItems := oGrid:Items()
oItems:SetProperty("CellValue",oItems:AddItem("Cell 1"),1,"Cell 2")
h := oItems:AddItem("Cell 2")
oItems:SetProperty("CellValue",h,1,"Cell 3")
oItems:SetProperty("CellBackColor",h,1,0x1000000)
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1160
|
Is it possible to highligth the match while a filter is applied

PROCEDURE OnAddColumn(oGrid,Column)
/*Column.Def(17) = 1*/
RETURN
PROCEDURE OnFilterChange(oGrid)
LOCAL format
format := oGrid:FormatABC("`value replace '` + value + `' with '<bgcolor 000000><fgcolor FFFFFF>` + value + `</fgcolor></bgcolor>'`",oGrid:FilterBarPromptPattern())
oGrid:Columns:Item(0):FormatColumn := Transform(format,"")
oGrid:Columns:Item(1):FormatColumn := Transform(format,"")
RETURN
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oItems
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:AddColumn := {|Column| OnAddColumn(oGrid,Column)} /*Fired after a new column has been added.*/
oGrid:FilterChange := {|| OnFilterChange(oGrid)} /*Occurs when filter was changed.*/
oGrid:BeginUpdate()
oGrid:DrawGridLines := 2/*exVLines*/
oGrid:HeaderAppearance := 4/*Etched*/
oGrid:Columns():Add("Col 1")
oGrid:Columns():Add("Col 2")
oItems := oGrid:Items()
oItems:SetProperty("CellValue",oItems:AddItem("219 Smith"),1,"Ignacio 1234")
oItems:SetProperty("CellValue",oItems:AddItem("1666 County Road 309A"),1,"897 Manassa")
oItems:SetProperty("CellValue",oItems:AddItem("38 Lone Pine"),1,"Durango 11")
oItems:SetProperty("CellValue",oItems:AddItem("612 Jachim Street"),1,"Lamar 222")
oGrid:FilterBarPromptPattern := "1"
oGrid:FilterBarPromptVisible := 2067/*exFilterBarCompact+exFilterBarSingleLine+exFilterBarVisible+exFilterBarPromptVisible*/
oGrid:FilterBarPromptType := 257/*exFilterPromptCaseSensitive+exFilterPromptContainsAll*/
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1159
|
How can I replace the cell's context menu ( while edit mode is running )

PROCEDURE OnRClick(oGrid)
LOCAL oExContextMenu
DevOut( "Edit Mode: " )
DevOut( Transform(oGrid:Editing(),"") )
oExContextMenu := CreateObject("Exontrol.ContextMenu")
oExContextMenu:Items():ToString := "Check[chk],[sep],Item 1,Item 2,Item 3,Popup(A,B,C)"
DevOut( Transform(oExContextMenu:Select(),"") )
RETURN
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oEditor
LOCAL oItems
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:RClick := {|| OnRClick(oGrid)} /*Fired when right mouse button is clicked*/
oGrid:BeginUpdate()
oGrid:HeaderAppearance := 1/*Flat*/
oEditor := oGrid:Columns():Add("Column"):Editor()
oEditor:EditType := 1/*EditType*/
oEditor:SetProperty("Option",202/*exEditAllowContextMenu*/,.F.)
oItems := oGrid:Items()
oItems:AddItem("Item 1")
oItems:AddItem("Item 2")
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1158
|
Is it possible to highlight the column's header once a filter is applied (sample 2)

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oAppearance
LOCAL oColumn
LOCAL oColumns
LOCAL oItems
LOCAL h
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:BeginUpdate()
oAppearance := oGrid:VisualAppearance()
oAppearance:Add(1,"gBFLBCJwBAEHhEJAAEhABO8GACAADACAxRDgMQBQKAAzQFAYbBuGCGAAGIYBTgmFgAQhFcZQSKUOQTDKNYykCIRSDUJYkSZEIyjBI8ExXFqNACkGKwQgmNYDSBMcbwSAsXRYFocJ5gOT6AjKBA2UclEZpajiTY3ABUEgUS5oOBIACqariaQJAAiCRQGiYZyHKaRSwPBKFYDIIjbJheTIDChNVxUcDENQjJqLBIDRzbarye59YBfeBXdgmA4LQbDMRwNgMMQTDqKYbkOQZHbeGKAWTMEZzJj8cxTEqIaBhGTLfojSZMS7UGK1LLtMyHI6kP7sOiLfi2W4/W7XV72F79TzXIa2ZBuO57bhnAZ/VzGNj4PRNezfRqicjsGxcZwXg+TpQj0ew6gSOw7wSbozjsfYXi8PwMnSc52leHotl+MxjmoXh2nybxOH+SQtnYXx+D2P4vGMB56hQf5PCgBYeDwYBCEo1xggebgKH6IIDBYBgkiAQ5FgYPAhEIRgWGq" +;
"DBoC4GoCiGCBYhGBQPAWdIQp0eIUiWCZigiJgqgqYpIioJQhmIMhBH0NxjEMag2g2Y4ImYOoOmOSJeDQNxXlOLR3ECUAQICA=")
oAppearance:Add(2,"gBFLBCJwBAEHhEJAAEhABgsHQAAYAQGKIcBiAKBQAGaAoDDYNwwQwAAxDAKcEwsACEIrjKCRShyCYZRrGUgRCKQahLEiTIhGUYJHgmK4tRoAUgxWCEExrAaQJjjeCQFi6LAtDhPMByfQEZQIGyjkgjNLUcSbG4AKgkCiXfpUAJVP7FcgSABEEigNIxToOU4jFgeCYLQKQRK2RC9GQGFCbLhpYKIahGTYWVheN5XXblez9P7ABQwKCcAwXBp7YIKAT4XBIdYdQ7IL4xGA0AJPFoJC7mOQ5XiYAIBAZ/RL0LCcbxHHafVboQj6JouD5PUDVNY1XBdPynI6CbLhWy6Dq4UZzPwzeBifSHfDjRoJcCZe71KY3GwSEboNA6Kp+QBHAmZoZjSPYIEiF47lOLJVnuYofBwJJHmaQoYj0MIRHeM4/m6cJ8B+fpBHQJ5SGKPYYH8OYMk+P5Bn4fxaAYZAvEIX4RgUWBGgCCAmAqApgkgNgOgMEYlGASoEkQeBWBa" +;
"BZhggZgagaYRoEwShWA6NZZAMQBAICA==")
oGrid:SetProperty("Background",0/*exHeaderFilterBarButton*/,0x1000000)
oGrid:SetProperty("Background",41/*exHeaderFilterBarActive*/,0x2000000)
oGrid:SetProperty("Background",32/*exCursorHoverColumn*/,-1)
oGrid:HeaderHeight := 28
oGrid:SetProperty("BackColorHeader",AutomationTranslateColor( GraMakeRGBColor ( { 255,255,255 } ) , .F. ))
oGrid:DrawGridLines := -2/*exRowLines*/
oGrid:HeaderVisible := .T.
oColumns := oGrid:Columns()
oColumns:Add("C1"):DisplayFilterButton := .T.
oColumn := oColumns:Add("C2")
oColumn:DisplayFilterButton := .T.
oColumn:Filter := "Item 2"
oColumn:FilterType := 240/*exFilter*/
oColumns:Add("C3"):DisplayFilterButton := .T.
oItems := oGrid:Items()
h := oItems:AddItem("Item 1")
oItems:SetProperty("CellValue",h,1,"Item 2")
oItems:SetProperty("CellValue",h,2,"Item 3")
h := oItems:AddItem("Item 4")
oItems:SetProperty("CellValue",h,1,"Item 5")
oItems:SetProperty("CellValue",h,2,"Item 6")
oGrid:ApplyFilter()
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1157
|
How can I make the expand/collapse glyphs DPI aware

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oAppearance
LOCAL oItems
LOCAL h,size
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
size := 2
oGrid:BeginUpdate()
oAppearance := oGrid:VisualAppearance()
oAppearance:Add(3,"gBFLBCJwBAEHhEJAAEhEGAUHQAAYAQGKIcBiAKBQAGaAoDDYOA4QwAAxDAKcEwsACEIrjKCRShyCYZRhGcTSBCIZBqEqSZLiEZRQiiCYsS5GQBRfIUEghGyNZjgNzQcCQAI8T5IUgARBJIDSMY6DpOIxYHgmC4DEITNLxOK0EhRHCBZrgOCAYhqEY1Ro+dhPFYjVTMdK0LRtKy7Mq2aJmOpZDxWE7dZKpO5fbxXS67cr2fp/YBed4rfa7KTlOBKcRQRBEFQPDqPZBkORZHh2FoLRJKbgtHJmHYNQWhVyYBbNCyTI6lahpeuHBx1QaWWxjbCMEr6bpoWLbFi3Ha1UzrPa8b5vSw7Gr+HzYQTHGPXGqaYJdZrnea6B7+U5XUJrnSOZciYHwhAeR5HDK+JVGqKRRmScx5HyfRei+H5bmmcp4Fi8o/CGGJKGQKZUGoFQigUPIiCeSZXnyHB6l0SAJn8JxfkIeZ5CgXxjCCAhyB8QgIlAM4MlKAIcCaIBIGY" +;
"GoGGEYhqBMMxgnICgRDUDQjESGwmAkWBuCqBoiHIVgkDQYgYESWg2E0YhohcJQigITg3CQSRyEyEYGGOWJwhQJD4FiFIMk0aJFGsIBkkOBJeDc+AchYJwJgIWhSgYZQpFIVoVGOGQ4l2EwIBWMhgDmDhThCEwkAiaJchKDhjhgZhsCUY4iFCEoZkiaYQmSGAWhWQhgDuDpTjCDQiEgchAg0IpJBoDoFiEKBqCaCAimgIguH8IZnkPUhcBcJg+hGJZnloYJsiaKZKGa24YnWSR0CkKhCA2CxlCqColhAYpqEKER0DqVZ0A0ASAgA==")
oAppearance:Add(4,"gBFLBCJwBAEHhEJAAEhABAQCg6AADACAxRDgMQBQKAAzQFAYbBwHCGAAGIYBTgmFgAQhFcZQSKUOQTDKNYykCIRSDUJYkSZEIyjBI8ExXFqNACjeQYJBCNYbTJAbqhYIgAR3HqQZABCCSQKkYx0HScRiwPBMFwGIQmaaicZoJCiN4DTZAcIBRDUIxpDR9bBeKw3KqVaZnWhaNpWXZlTzKdSxXisF67RZSdi/XgvF5XXblez9P69LwXe5mUrGbyVYghCCIKgeG4dR7IMhyLDcKQXCCVW7aGSsOwbAqAXpdGAXTQdDyLJKnaZqOi6BjjA4rNbHGIYJb1XTRMa1LJuG5LJrOeZ3Xre4BLfh1VoFRpjWIYNY1QS7TLOczzfRdDxTiGVpkjCeJoD4Ng1hSRxiisVRKg8D4PkWZJznmPQ+F8Xx5guWpjHGWYMiYQodEaIRSCgU5KCSeh3naHB/iAAh9n8fwfgIeZ1CgXwjCCAhxl8AgIlAM4MlKAIcCaD54FY" +;
"FoFmGCBmBaBIJigPJNgKSAoDSVC+BIbIYCUYYoiYKoJgkWIMlGCAglMaJZDWCYiFyFIJkkOJYhEJc7G4PYPCOaJshQJBjgiVIUgyDRokEaggGSQ4El4N1CBiFgnAmAhaFKFZlFkShUhWJRYmITg3GSQgFGuGBOGOFJkCSSQCDoNgkiOCY0hUJJmmmQhvhqZtYmUOQmBWIRvhgTpjjSbAjEiEgchBZgyEaBIhigWgegqIhIjoDILiACB5nTL5WnWRYOiSKYJnqGQ7CmOh2hqJ5OkYORxFyShKhSAxihkOomioY5YiqFIkFyTo1HkAxAEAgIA==")
oAppearance:Add(1,oGrid:FormatABC("`CP:3 -` + int(value*dpi) + ` -` + int(value*dpi) + ` ` + int(value*dpi) + ` ` + int(value*dpi)",size))
oAppearance:Add(2,oGrid:FormatABC("`CP:4 -` + int(value*dpi) + ` -` + int(value*dpi) + ` ` + int(value*dpi) + ` ` + int(value*dpi)",size))
oGrid:LinesAtRoot := 1/*exGroupLinesAtRoot*/
oGrid:HasButtons := 4/*exCustom*/
oGrid:SetProperty("HasButtonsCustom",.F.,16777216)
oGrid:SetProperty("HasButtonsCustom",.T.,33554432)
oGrid:Columns():Add("Column")
oItems := oGrid:Items()
h := oItems:AddItem("Root 1")
oItems:InsertItem(h,,"Child 1")
oItems:InsertItem(h,,"Child 2")
oItems:SetProperty("ExpandItem",h,.T.)
h := oItems:AddItem("Root 2")
oItems:InsertItem(h,,"Child")
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1156
|
Is it possible to highlight the column's header once a filter is applied (sample 1)

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oAppearance
LOCAL oColumn
LOCAL oColumns
LOCAL oItems
LOCAL h
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:BeginUpdate()
oAppearance := oGrid:VisualAppearance()
oAppearance:Add(2,"gBFLBCJwBAEHhEJAAEhABX8GACAADACAxSDEMQBQKAAzQFAYbhgHCGAAGQaBUgmFgAQhFcZQSKUOQTDKNYykCIRSDUJYkSZEIyjBI8ExXFqNACkGKwYgmNYiTLAcgANJ0WBaGIZJ4gOT5fDKMoEDRRYADFCscwxJybQAqGQKKb+VgAVY/cTyBIAEQSKA0TDOQ5TSKWB4JPZQRBEbZMNBtBIUJquKaqShdQJCU5FdY3Xblez9P7AMBwLFEC4NQ8YNYuPhjR4dRTIMhvVAsUArFh8Zg9GZZFjmDIDT4ydBLTQwcyVIKnP5qOa6XbmPoCQDYKxZHYxPzVDa3axuL76dqCAT7XrXNy1TbNRrzQKfcJqfCbdw2YaDZLOOT3fjuI4hhKaRzFAHJ+jYQ4xHuY4gHuGIXGeExqC8Tp6C+PoEm+G5ImycRgh0XwvDGa5rgOeoejyXwnFeQp2mkf5ClgBB9gCWIYAwfYAEKV58mkdwOggNArgOXY2EWLoDkKOA0mg" +;
"bhOGgZApgaSBIHWSYHSmbApgYThmESZYJkIeIkgeCpfliLIHgpMIcmUYYYmODAlg2SI4mWfRfGOEguDcCRjFYAJihCQhJBSDoRmONgKEcI4kFCEJhhOVYTmYnAlEAQhWBMJYJGYWoWmWSR2F6F5lnkWAQhUAgpEieRWEuSYkjWGpmkmNhuhuZwJkYcocmaaYkjyEhngnUA6lEFAlAEgI=")
oAppearance:Add(1,"CP:2 -8 -4 2 4")
oGrid:SetProperty("Background",0/*exHeaderFilterBarButton*/,0x1fefefe)
oGrid:SetProperty("Background",41/*exHeaderFilterBarActive*/,0x1010101)
oGrid:SetProperty("Background",32/*exCursorHoverColumn*/,-1)
oGrid:HeaderHeight := 28
oGrid:SetProperty("BackColorHeader",AutomationTranslateColor( GraMakeRGBColor ( { 255,255,255 } ) , .F. ))
oGrid:DrawGridLines := -2/*exRowLines*/
oGrid:HeaderVisible := .T.
oColumns := oGrid:Columns()
oColumns:Add("C1"):DisplayFilterButton := .T.
oColumn := oColumns:Add("C2")
oColumn:DisplayFilterButton := .T.
oColumn:Filter := "Item 2"
oColumn:FilterType := 240/*exFilter*/
oColumns:Add("C3"):DisplayFilterButton := .T.
oItems := oGrid:Items()
h := oItems:AddItem("Item 1")
oItems:SetProperty("CellValue",h,1,"Item 2")
oItems:SetProperty("CellValue",h,2,"Item 3")
h := oItems:AddItem("Item 4")
oItems:SetProperty("CellValue",h,1,"Item 5")
oItems:SetProperty("CellValue",h,2,"Item 6")
oGrid:ApplyFilter()
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1155
|
How do I update itemcount and matchitemcount of the FilterBarCaption after I added the item using the AddItem method
PROCEDURE OnClick(oGrid)
oGrid:Items():AddItem("new")
oGrid:Refresh()
RETURN
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oColumn,oColumn1
LOCAL oItems
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:Click := {|| OnClick(oGrid)} /*Occurs when the user presses and then releases the left mouse button over the grid control.*/
oGrid:BeginUpdate()
oColumn := oGrid:Columns():Add("Item")
oColumn:DisplayFilterButton := .T.
oColumn:FilterList := 9504/*exShowExclude+exShowFocusItem+exShowCheckBox+exSortItemsAsc*/
oColumn1 := oGrid:Columns():Add("Pos")
oColumn1:AllowSizing := .F.
oColumn1:AllowSort := .F.
oColumn1:Width := 32
oColumn1:FormatColumn := "1 apos ``"
oColumn1:Position := 0
oItems := oGrid:Items()
oItems:AddItem("Item A")
oItems:AddItem("Item B")
oItems:AddItem("Item C")
oGrid:FilterBarCaption := "`<r>` + value + `</b><fgcolor=808080>` + ( matchitemcount < 0 ? ( ( len(value) ? `<br>` : `` ) + `<r>` + abs(matchitemcount + 1) + ` result(s)` ) : (`<fgcolor=808080>`+ itemcount + ` item(s)`) )"
oGrid:FilterBarPromptVisible := 3591/*exFilterBarCompact+exFilterBarShowCloseOnRight+exFilterBarShowCloseIfRequired+exFilterBarCaptionVisible+exFilterBarVisible+exFilterBarPromptVisible*/
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1154
|
I can't get values in the column properly centered. What can be the problem

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oColumn
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:BeginUpdate()
oGrid:TreeColumnIndex := -1
oGrid:DrawGridLines := -2/*exRowLines*/
oColumn := oGrid:Columns():Add("Default")
oColumn:Alignment := 1/*CenterAlignment*/
oColumn:FormatColumn := "ltrim(rtrim(value))"
oGrid:Items():AddItem("item 1 ")
oGrid:Items():AddItem(" item 2")
oGrid:Items():AddItem(" item 3 ")
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1153
|
The Edit method does not work while ReadOnly property is exLocked and the first column is hidden. Is there any fix

PROCEDURE OnDblClick(oGrid,Shift,X,Y)
LOCAL var_ItemFromPoint
var_ItemFromPoint := oGrid:ItemFromPoint(-1,-1,c,hit)
oGrid:FocusColumnIndex := c
oGrid:Edit()
RETURN
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oColumn
LOCAL oItems
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:DblClick := {|Shift,X,Y| OnDblClick(oGrid,Shift,X,Y)} /*Occurs when the user dblclk the left mouse button over an object.*/
oGrid:BeginUpdate()
oGrid:HeaderAppearance := 4/*Etched*/
oGrid:AutoEdit := .F.
oGrid:ReadOnly := 1/*exLocked*/
oGrid:AutoSearch := .T.
oGrid:Columns():Add(""):Visible := .F.
oColumn := oGrid:Columns():Add("Contains")
oColumn:AutoSearch := 1/*exContains*/
oColumn:Editor():EditType := 1/*EditType*/
oItems := oGrid:Items()
oItems:SetProperty("CellValue",oItems:AddItem(),1,"Tom Hanks")
oItems:SetProperty("CellValue",oItems:AddItem(),1,"Leonardo DiCaprio")
oItems:SetProperty("CellValue",oItems:AddItem(),1,"Will Smith")
oItems:SetProperty("CellValue",oItems:AddItem(),1,"Tom Cruise")
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1152
|
How can I enable the Undo/Redo feature

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oColumn,oColumn1
LOCAL oItems
LOCAL h
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:BeginUpdate()
oGrid:AllowUndoRedo := .T.
oGrid:LinesAtRoot := -1/*exLinesAtRoot*/
oGrid:HeaderAppearance := 4/*Etched*/
oColumn := oGrid:Columns():Add("P1")
oColumn:SetProperty("Def",0/*exCellHasCheckBox*/,.T.)
oColumn:PartialCheck := .T.
oColumn1 := oGrid:Columns():Add("P2")
oColumn1:SetProperty("Def",0/*exCellHasCheckBox*/,.T.)
oColumn1:PartialCheck := .T.
oItems := oGrid:Items()
h := oItems:AddItem("Root")
oItems:InsertItem(h,,"Child 1")
oItems:InsertItem(h,,"Child 2")
oItems:SetProperty("ExpandItem",h,.T.)
oItems:AddItem("Press CTRL + Z for Undo, and CTRL + Y for Redo")
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1151
|
The incremental search feature is no working for columns with editor assigned. What can be done

PROCEDURE OnDblClick(oGrid,Shift,X,Y)
oGrid:Edit()
RETURN
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oColumn
LOCAL oItems
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:DblClick := {|Shift,X,Y| OnDblClick(oGrid,Shift,X,Y)} /*Occurs when the user dblclk the left mouse button over an object.*/
oGrid:BeginUpdate()
oGrid:HeaderAppearance := 4/*Etched*/
oGrid:AutoEdit := .F.
oGrid:AutoSearch := .T.
oColumn := oGrid:Columns():Add("Contains")
oColumn:AutoSearch := 1/*exContains*/
oColumn:Editor():EditType := 1/*EditType*/
oItems := oGrid:Items()
oItems:AddItem("Tom Hanks")
oItems:AddItem("Leonardo DiCaprio")
oItems:AddItem("Will Smith")
oItems:AddItem("Tom Cruise")
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1150
|
Each item is representated by a key as string. Is it possible to have a drop down editor to display more information when using the item's key

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oEditor
LOCAL oItems
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:BeginUpdate()
oGrid:HeaderAppearance := 4/*Etched*/
oEditor := oGrid:Columns():Add("Multiple-Columns Tree DropDownListType"):Editor()
oEditor:EditType := 3/*DropDownListType*/
oEditor:AddItem(0,"KR|Korea, Republic of")
oEditor:AddItem(1,"MO|Macao")
oEditor:AddItem(2,"SA|Saudi Arabia")
oEditor:AddItem(3,"EG|Egypt")
oEditor:AddItem(4,"GB|United Kingdom")
oEditor:AddItem(5,"GT|Guatemala")
oEditor:AddItem(6,"SR|Suriname")
oEditor:AddItem(7,"BM|Bermuda")
oItems := oGrid:Items()
oItems:AddItem("EG")
oItems:AddItem("GB")
oItems:AddItem("BM")
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1149
|
My table includes codes/keys for items, can I display a drop down editor to include more information

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oEditor
LOCAL oItems
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:BeginUpdate()
oGrid:HeaderAppearance := 4/*Etched*/
oEditor := oGrid:Columns():Add("Multiple-Columns DropDownListType"):Editor()
oEditor:EditType := 3/*DropDownListType*/
oEditor:DropDownAutoWidth := 0/*exDropDownEditorWidth*/
oEditor:SetProperty("Option",57/*exDropDownColumnCaption*/,"City¦Coordinates¦State")
oEditor:AddItem(0,"JV3|Jollyville¦3026N 09746W¦Texas")
oEditor:AddItem(1,"TMO|Altamont¦4021N 11017W¦Utah")
oEditor:AddItem(2,"IIM|Williamston¦4241N 08417W¦Michigan")
oEditor:AddItem(3,"IWN|Merrittstown¦3958N 07952W¦Pennsylvania")
oEditor:AddItem(4,"HOU|Houston¦2945N 09521W¦Texas")
oEditor:AddItem(5,"GSF|Gales Ferry¦4125N 07205W¦Connecticut")
oItems := oGrid:Items()
oItems:AddItem("HOU")
oItems:AddItem("IIM")
oItems:AddItem("TMO")
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1148
|
How can I display and select from a multiple-columns tree editor

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oEditor
LOCAL oItems
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:BeginUpdate()
oGrid:Images("gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTqlVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/yNAOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=")
oGrid:HeaderAppearance := 4/*Etched*/
oEditor := oGrid:Columns():Add("Multiple-Columns Tree DropDownListType"):Editor()
oEditor:EditType := 3/*DropDownListType*/
oEditor:DropDownAutoWidth := 0/*exDropDownEditorWidth*/
oEditor:SetProperty("Option",57/*exDropDownColumnCaption*/,"Name¦Title¦City¦Phone")
oEditor:SetProperty("Option",58/*exDropDownColumnWidth*/,"224¦¦¦96")
oEditor:AddItem(1,"Nancy Davolio¦Sales Representative¦Seattle¦(206) 555-9857",1)
oEditor:AddItem(2,"Andrew Fuller¦<b>Vice President</b>, Sales¦Tacoma¦(206) 555-9482",2)
oEditor:InsertItem(3,"Janet Leverling¦Sales Representative¦Kirkland¦(206) 555-3412",3,2)
oEditor:InsertItem(4,"Peacock Margaret¦Sales Representative¦Redmond¦(206) 555-8122",3,2)
oEditor:InsertItem(5,"Steven Buchanan¦Sales Manager¦London¦(71) 555-4848",2,2)
oEditor:InsertItem(6,"Michael Suyama¦Sales Representative¦London¦(71) 555-7773",1,5)
oEditor:InsertItem(7,"Robert King¦Sales Representative¦Kirkland¦(71) 555-5598",2,2)
oEditor:InsertItem(8,"Laura Callahan¦Inside Sales Coordinator¦Seattle¦(206) 555-1189",3,2)
oEditor:InsertItem(9,"Anne Dodsworth¦Sales Representative¦London¦(71) 555-4444",2,5)
oEditor:ExpandAll()
oItems := oGrid:Items()
oItems:AddItem(1)
oItems:AddItem(2)
oItems:AddItem(4)
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1147
|
Does you control support multiple-columns for a drop down editor

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oEditor
LOCAL oItems
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:BeginUpdate()
oGrid:HeaderAppearance := 4/*Etched*/
oEditor := oGrid:Columns():Add("Multiple-Columns DropDownListType"):Editor()
oEditor:EditType := 3/*DropDownListType*/
oEditor:DropDownAutoWidth := 0/*exDropDownEditorWidth*/
oEditor:AddItem(0,"Jollyville¦JV3¦3026N 09746W¦TX")
oEditor:AddItem(1,"Altamont¦TMO¦4021N 11017W¦UT")
oEditor:AddItem(2,"Williamston¦IIM¦4241N 08417W¦MI")
oEditor:AddItem(3,"Merrittstown¦IWN¦3958N 07952W¦PA")
oEditor:AddItem(4,"Houston¦HOU¦2945N 09521W¦TX")
oEditor:AddItem(5,"Gales Ferry¦GSF¦4125N 07205W¦CT")
oItems := oGrid:Items()
oItems:InsertItem(0,"",1)
oItems:InsertItem(0,"",2)
oItems:InsertItem(0,"",4)
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1146
|
Is it possible to show the filterbar on top of the rows

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oColumn,oColumn1
LOCAL oItems
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:BeginUpdate()
oGrid:FilterBarPromptVisible := 8192/*exFilterBarTop*/
oGrid:HeaderHeight := 24
oGrid:FilterBarHeight := oGrid:HeaderHeight()
oGrid:HeaderAppearance := 1/*Flat*/
oGrid:DrawGridLines := -1/*exAllLines*/
oGrid:GridLineStyle := 512/*exGridLinesGeometric*/
oColumn := oGrid:Columns():Add("Column")
oColumn:DisplayFilterButton := .T.
oColumn:FilterType := 3/*exPattern*/
oColumn:Filter := "B*"
oColumn1 := oGrid:Columns():Add("Index")
oColumn1:FormatColumn := "1 index ``"
oColumn1:Position := 0
oColumn1:Width := 48
oColumn1:AllowSizing := .F.
oColumn1:SortType := 1/*SortNumeric*/
oColumn1:SetProperty("Def",0/*exCellHasCheckBox*/,.T.)
oItems := oGrid:Items()
oItems:AddItem("A.1")
oItems:AddItem("A.2")
oItems:AddItem("B.1")
oItems:AddItem("B.2")
oItems:AddItem("B.3")
oItems:AddItem("C")
oGrid:ApplyFilter()
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1145
|
DragDrop (with visual effect)

PROCEDURE OnOLEDragDrop(oGrid,Data,Effect,Button,Shift,X,Y)
/*SelectItem(InsertItem(i,, Data.GetData(1))) = True*/
LOCAL oItems
LOCAL i
i := oGrid:ItemFromPoint(-1,-1,c,hit)
oItems := oGrid:Items()
oItems:SetProperty("ExpandItem",i,.T.)
RETURN
PROCEDURE OnOLEStartDrag(oGrid,Data,AllowedEffects)
/*Data.SetData(Me.Items.CellCaption(FocusItem, 0), 1)*/
AllowedEffects := 1
RETURN
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oItems
LOCAL h
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:OLEDragDrop := {|Data,Effect,Button,Shift,X,Y| OnOLEDragDrop(oGrid,Data,Effect,Button,Shift,X,Y)} /*Occurs when a source component is dropped onto a target component when the source component determines that a drop can occur.*/
oGrid:OLEStartDrag := {|Data,AllowedEffects| OnOLEStartDrag(oGrid,Data,AllowedEffects)} /*Occurs when the OLEDrag method is called.*/
oGrid:VisualAppearance():Add(1,"gBFLBCJwBAEHhEJAAEhABPUIQAAYAQGKIcBiAKBQAGaAoDgYN4MAANAwjJBMKgBBCLIxhEYobgmGIaRjEEQDCKYcxHCaIBiGcaIfDEBIeSBHcgRbAcOQHGSZZBhGRJGjuKIbSrLICzBDUcRnGwAKQoaaaEomHwyAZOYwDAIoWhpKKCKjqWJKNb+XgAAJTES0RRVRTNAZ1YghGAQgIA==")
oGrid:SetProperty("Background",96/*exListOLEDropPosition*/,0x1000000)
oGrid:SetProperty("Background",33/*exDragDropBefore*/,AutomationTranslateColor( GraMakeRGBColor ( { 0,0,0 } ) , .F. ))
oGrid:SetProperty("Background",34/*exDragDropAfter*/,AutomationTranslateColor( GraMakeRGBColor ( { 255,255,255 } ) , .F. ))
oGrid:OLEDropMode := 1/*exOLEDropManual*/
oGrid:AutoDrag := 196608/*exAutoDragPositionAnyOnRight*/
oGrid:LinesAtRoot := -1/*exLinesAtRoot*/
oGrid:Indent := 16
oGrid:SelBackMode := 1/*exTransparent*/
oGrid:Columns():Add("Default")
oItems := oGrid:Items()
h := oItems:AddItem("Root")
oItems:InsertItem(h,,"Child 1")
oItems:InsertItem(h,,"Child 2")
oItems:SetProperty("ExpandItem",h,.T.)
DevOut( "You can:" )
DevOut( "A) left-click to drag and drop items between controls (open a new exhelper and run the same sample)" )
DevOut( "B) right-click to re-arrange the item position inside the same control" )
DevOut( "This sample shows how you can insert the data being dropped as a child of the item being hovered." )
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1144
|
DragDrop (with no visual effect, hide item while drag and drop)

PROCEDURE OnOLEDragDrop(oGrid,Data,Effect,Button,Shift,X,Y)
/*SelectItem(InsertItem(i,, Data.GetData(1))) = True*/
LOCAL oItems
LOCAL i
i := oGrid:ItemFromPoint(-1,-1,c,hit)
oItems := oGrid:Items()
oItems:SetProperty("ExpandItem",i,.T.)
RETURN
PROCEDURE OnOLEStartDrag(oGrid,Data,AllowedEffects)
/*Data.SetData(Me.Items.CellCaption(FocusItem, 0), 1)*/
AllowedEffects := 1
RETURN
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oItems
LOCAL h
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:OLEDragDrop := {|Data,Effect,Button,Shift,X,Y| OnOLEDragDrop(oGrid,Data,Effect,Button,Shift,X,Y)} /*Occurs when a source component is dropped onto a target component when the source component determines that a drop can occur.*/
oGrid:OLEStartDrag := {|Data,AllowedEffects| OnOLEStartDrag(oGrid,Data,AllowedEffects)} /*Occurs when the OLEDrag method is called.*/
oGrid:SetProperty("Background",33/*exDragDropBefore*/,AutomationTranslateColor( GraMakeRGBColor ( { 0,0,0 } ) , .F. ))
oGrid:SetProperty("Background",34/*exDragDropAfter*/,AutomationTranslateColor( GraMakeRGBColor ( { 255,255,255 } ) , .F. ))
oGrid:OLEDropMode := 1/*exOLEDropManual*/
oGrid:AutoDrag := 196608/*exAutoDragPositionAnyOnRight*/
oGrid:LinesAtRoot := -1/*exLinesAtRoot*/
oGrid:Indent := 16
oGrid:SelBackMode := 1/*exTransparent*/
oGrid:Columns():Add("Default")
oItems := oGrid:Items()
h := oItems:AddItem("Root")
oItems:InsertItem(h,,"Child 1")
oItems:InsertItem(h,,"Child 2")
oItems:SetProperty("ExpandItem",h,.T.)
DevOut( "You can:" )
DevOut( "A) left-click to drag and drop items between controls (open a new exhelper and run the same sample)" )
DevOut( "B) right-click to re-arrange the item position inside the same control" )
DevOut( "This sample shows how you can insert the data being dropped as a child of the item being hovered." )
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1143
|
DragDrop

PROCEDURE OnOLEDragDrop(oGrid,Data,Effect,Button,Shift,X,Y)
/*SelectItem(InsertItem(i,, Data.GetData(1))) = True*/
LOCAL oItems
LOCAL i
i := oGrid:ItemFromPoint(-1,-1,c,hit)
oItems := oGrid:Items()
oItems:SetProperty("ExpandItem",i,.T.)
RETURN
PROCEDURE OnOLEStartDrag(oGrid,Data,AllowedEffects)
/*Data.SetData(Me.Items.CellCaption(FocusItem, 0), 1)*/
AllowedEffects := 1
RETURN
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oItems
LOCAL h
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:OLEDragDrop := {|Data,Effect,Button,Shift,X,Y| OnOLEDragDrop(oGrid,Data,Effect,Button,Shift,X,Y)} /*Occurs when a source component is dropped onto a target component when the source component determines that a drop can occur.*/
oGrid:OLEStartDrag := {|Data,AllowedEffects| OnOLEStartDrag(oGrid,Data,AllowedEffects)} /*Occurs when the OLEDrag method is called.*/
oGrid:OLEDropMode := 1/*exOLEDropManual*/
oGrid:AutoDrag := 196608/*exAutoDragPositionAnyOnRight*/
oGrid:LinesAtRoot := -1/*exLinesAtRoot*/
oGrid:Indent := 16
oGrid:SelBackMode := 1/*exTransparent*/
oGrid:Columns():Add("Default")
oItems := oGrid:Items()
h := oItems:AddItem("Root")
oItems:InsertItem(h,,"Child 1")
oItems:InsertItem(h,,"Child 2")
oItems:SetProperty("ExpandItem",h,.T.)
DevOut( "You can:" )
DevOut( "A) left-click to drag and drop items between controls (open a new exhelper and run the same sample)" )
DevOut( "B) right-click to re-arrange the item position inside the same control" )
DevOut( "This sample shows how you can insert the data being dropped as a child of the item being hovered." )
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1142
|
Is there anyway to stop the header changing colour when the mouse hovers/moves across the column header (non-clickable)

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oColumn
LOCAL oColumns
LOCAL oItems
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:BeginUpdate()
oGrid:HeaderAppearance := 4/*Etched*/
oColumns := oGrid:Columns()
oColumns:Add("Item")
oColumn := oColumns:Add("Pos")
oColumn:Position := 0
oColumn:Width := 32
oColumn:AllowSizing := .F.
oColumn:FormatColumn := "1 index ``"
oColumn:AllowSort := .F.
oColumn:AllowDragging := .F.
oItems := oGrid:Items()
oItems:AddItem("Item A")
oItems:AddItem("Item B")
oItems:AddItem("Item C")
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1141
|
Is there anyway to stop the header changing colour when the mouse hovers/moves across the column header

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oColumn
LOCAL oColumns
LOCAL oItems
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:BeginUpdate()
oGrid:HeaderAppearance := 4/*Etched*/
oGrid:SetProperty("Background",32/*exCursorHoverColumn*/,-1)
oColumns := oGrid:Columns()
oColumns:Add("Item")
oColumn := oColumns:Add("Pos")
oColumn:Position := 0
oColumn:Width := 32
oColumn:AllowSizing := .F.
oColumn:FormatColumn := "1 index ``"
oColumn:AllowSort := .F.
oColumn:AllowDragging := .F.
oItems := oGrid:Items()
oItems:AddItem("Item A")
oItems:AddItem("Item B")
oItems:AddItem("Item C")
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1140
|
Is it possible to exclude the parent/child items when do the filtering, so to include only items that match the filter without any indentation

PROCEDURE OnFilterChange(oGrid)
oGrid:Indent := oGrid:FormatABC("value > 0 ? 18 : 0",:Items:MatchItemCount())
RETURN
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oColumn,oColumn1
LOCAL oColumns
LOCAL oItems
LOCAL h,h2
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:FilterChange := {|| OnFilterChange(oGrid)} /*Occurs when filter was changed.*/
oGrid:BeginUpdate()
oGrid:LinesAtRoot := -1/*exLinesAtRoot*/
oGrid:Indent := 18
oGrid:FilterInclude := 4/*exMatchingItemsOnly*/
oGrid:DrawGridLines := 2/*exVLines*/
oGrid:HeaderAppearance := 1/*Flat*/
oColumns := oGrid:Columns()
oColumn := oColumns:Add("Column")
oColumn:DisplayFilterButton := .T.
oColumn:FilterType := 240/*exFilter*/
oColumn:FilterList := 256/*exShowCheckBox*/
oColumn:Filter := "C1"
oColumn1 := oColumns:Add("Pos")
oColumn1:FormatColumn := "1 rindex ``"
oColumn1:Position := 0
oColumn1:AllowSizing := .F.
oColumn1:AllowDragging := .F.
oItems := oGrid:Items()
h := oItems:AddItem("R1")
h2 := oItems:InsertItem(h,,"S")
oItems:InsertItem(h2,,"C1")
oItems:InsertItem(h2,,"C2")
oItems:InsertItem(h,,"C1")
oItems:InsertItem(h,,"C2")
oItems:SetProperty("ExpandItem",h,.T.)
h := oItems:AddItem("R2")
oItems:InsertItem(h,,"C1")
oItems:InsertItem(h,,"C2")
oGrid:ApplyFilter()
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1139
|
How can I display the total/sum/aggregate in the same column, when the user groups by a column

PROCEDURE OnAddColumn(oGrid,Column)
RETURN
PROCEDURE OnAddGroupItem(oGrid,Item)
LOCAL oItems
oItems := oGrid:Items()
oItems:SetProperty("ItemDivider",Item,-1)
oItems:SetProperty("ItemBackColor",Item,oGrid:BackColorSortBar())
oItems:SetProperty("ItemHeight",Item,oGrid:HeaderHeight())
oItems:SetProperty("CellMerge",Item,0,"1,2,3,4,5,7,8,9,10,11,12")
oItems:SetProperty("CellValue",Item,13,"count(current,rec,1)")
oItems:SetProperty("CellValueFormat",Item,13,5/*exTotalField+exHTML*/)
oItems:SetProperty("CellValue",Item,0,oItems:CellCaption(Item,oItems:GroupItem(Item)))
oItems:SetProperty("FormatCell",Item,0,"`<b>` + value + `</b> <font ;7><off 3><fgcolor=808080>(` + %13 + `)`")
oItems:SetProperty("CellValue",Item,6,"sum(current,all,dbl(%6))")
oItems:SetProperty("CellValueFormat",Item,6,5/*exTotalField+exHTML*/)
oItems:SetProperty("CellForeColor",Item,6,AutomationTranslateColor( GraMakeRGBColor ( { 102,102,102 } ) , .F. ))
RETURN
PROCEDURE OnChange(oGrid,Item,ColIndex,NewValue)
oGrid:Refresh()
RETURN
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oColumn,oColumn1
LOCAL oColumns
LOCAL oItems
LOCAL hL
LOCAL rs
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:AddColumn := {|Column| OnAddColumn(oGrid,Column)} /*Fired after a new column has been added.*/
oGrid:AddGroupItem := {|Item| OnAddGroupItem(oGrid,Item)} /*Occurs after a new Group Item has been inserted to Items collection.*/
oGrid:Change := {|Item,ColIndex,NewValue| OnChange(oGrid,Item,ColIndex,NewValue)} /*Occurs when the user changes the cell's content.*/
oGrid:BeginUpdate()
oGrid:LinesAtRoot := 5/*exGroupLinesOutside*/
oGrid:Indent := 12
oGrid:ColumnAutoResize := .F.
oGrid:ScrollBySingleLine := .T.
oGrid:SetProperty("BackColorSortBar",AutomationTranslateColor( GraMakeRGBColor ( { 240,240,240 } ) , .F. ))
oGrid:AutoDrag := 16/*exAutoDragScroll*/
rs := CreateObject("ADOR.Recordset")
rs:Open("Orders","Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExGrid\Sample\Access\misc.accdb",3/*adOpenStatic*/,3/*adLockOptimistic*/)
oGrid:DataSource := rs
oGrid:SingleSort := .F.
oGrid:SortBarVisible := .T.
oGrid:AllowGroupBy := .T.
oGrid:HeaderHeight := 24
oColumns := oGrid:Columns()
oColumns:Add("Count"):Visible := .F.
oColumn := oColumns:Item("Freight")
oColumn:SetProperty("Def",4/*exCellBackColor*/,oGrid:BackColorSortBar())
oColumn:SetProperty("Def",7/*exHeaderBackColor*/,oColumn:Def(4/*exCellBackColor*/))
oColumn:SetProperty("Def",49/*exCellPaddingRight*/,4)
oColumn:SetProperty("Def",48/*exCellPaddingLeft*/,4)
oColumn:HeaderBold := .T.
oColumn:AllowGroupBy := .F.
oColumn:FormatColumn := "value format ``"
oColumn:Alignment := 2/*RightAlignment*/
oColumn1 := oColumns:Item(0)
oColumn1:AllowGroupBy := .F.
oColumn1:SetProperty("Def",17/*exCellValueFormat*/,1)
oColumns:Item("ShipCountry"):SortOrder := 1/*SortAscending*/
oGrid:ScrollBySingleLine := .F.
oItems := oGrid:Items()
oItems:SetProperty("LockedItemCount",2/*exBottom*/,1)
hL := oItems:LockedItem(2/*exBottom*/,0)
oItems:SetProperty("ItemHeight",hL,24)
oItems:SetProperty("ItemBold",hL,.T.)
oItems:SetProperty("ItemBackColor",hL,oGrid:BackColorSortBar())
oItems:SetProperty("CellValue",hL,6,"sum(all,rec,dbl(%6))")
oItems:SetProperty("CellValueFormat",hL,6,5/*exTotalField+exHTML*/)
oItems:SetProperty("CellHAlignment",hL,6,2/*RightAlignment*/)
oItems:SetProperty("FormatCell",hL,6,"value format ``")
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1138
|
I would like to display a solid line between "root" items, and dotted lines (default) between child items. How can I do that

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oColumn,oColumn1
LOCAL oConditionalFormat
LOCAL oItems
LOCAL h
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:BeginUpdate()
oGrid:LinesAtRoot := -1/*exLinesAtRoot*/
oGrid:DrawGridLines := 1/*exHLines*/
oGrid:GridLineStyle := 512/*exGridLinesGeometric*/
oGrid:VisualAppearance():Add(1,"gBFLBCJwBAEHhEJAAEhABMsIQAAYAQGKIcBiAKBQAGaAoDgYN4MAANAwjJBMKgBBCLIxhEYobgmGIXRpFMbxAKQahLEiTIgGUYJHgmK4tQLHb7zGAABRDDSOIDnGQJXhaI4JQSMMQDGLAZxVFiPRhAWLpBh+PQATrOdLUfSjVwhBKAQEBA==")
oColumn := oGrid:Columns():Add("Default")
oColumn:SetProperty("Def",0/*exCellHasCheckBox*/,.T.)
oColumn:PartialCheck := .T.
oColumn1 := oGrid:Columns():Add("Position")
oColumn1:FormatColumn := "((1 rindex ``) contains `.`) = 0"
oColumn1:Visible := .F.
oConditionalFormat := oGrid:ConditionalFormats():Add("%C1")
oConditionalFormat:SetProperty("BackColor",0x1e0e0e0)
oItems := oGrid:Items()
h := oItems:AddItem("Root 1")
oItems:InsertItem(h,,"Child 1")
oItems:InsertItem(h,,"Child 2")
oItems:InsertItem(h,,"Child 3")
oItems:SetProperty("ExpandItem",h,.T.)
h := oItems:AddItem("Root 2")
oItems:InsertItem(h,,"Child 1")
oItems:InsertItem(h,,"Child 2")
h := oItems:AddItem("Root 3")
oItems:InsertItem(h,,"Child 1")
oItems:InsertItem(h,,"Child 2")
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1137
|
I can not center or align the cell's caption and icon, when it displays the hierarchy

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oColumn
LOCAL oItems
LOCAL h,hChild
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:BeginUpdate()
oGrid:Images("gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTqlVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/yNAOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=")
oColumn := oGrid:Columns():Add("Tasks")
oColumn:SetProperty("Def",17/*exCellValueFormat*/,1)
oGrid:HeaderVisible := .T.
oItems := oGrid:Items()
h := oItems:AddItem("Project")
hChild := oItems:InsertItem(h,,"<img>1</img> Task (left)")
hChild := oItems:InsertItem(h,,"<c><img>2</img> Task (center)")
hChild := oItems:InsertItem(h,,"<r>Task (right) <img>3</img>")
oItems:SetProperty("ExpandItem",h,.T.)
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1136
|
How do I mask for float/integer number

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oEditor,oEditor1,oEditor2,oEditor3,oEditor4,oEditor5,oEditor6,oEditor7,oEditor8
LOCAL oItems
LOCAL h
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:BeginUpdate()
oGrid:ColumnAutoResize := .T.
oGrid:Columns():Add("Type"):Width := 32
oGrid:Columns():Add("Editor")
oItems := oGrid:Items()
h := oItems:AddItem("Integer")
oItems:SetProperty("CellValue",h,1,"12")
oEditor := oItems:CellEditor(h,1)
oEditor:EditType := 1/*EditType*/
oEditor:Numeric := -1/*exInteger*/
h := oItems:AddItem("Integer (mask, group)")
oItems:SetProperty("CellValue",h,1,"10002")
oItems:SetProperty("FormatCell",h,1,"value format `0||`")
oEditor1 := oItems:CellEditor(h,1)
oEditor1:EditType := 8/*MaskType*/
oEditor1:Mask := ";;;float,digits=0,invalid=empty,warning=invalid character"
h := oItems:AddItem("Integer (mask, no group)")
oItems:SetProperty("CellValue",h,1,"10002")
oItems:SetProperty("FormatCell",h,1,"value format `0|0|`")
oEditor2 := oItems:CellEditor(h,1)
oEditor2:EditType := 8/*MaskType*/
oEditor2:Mask := ";;;float,digits=0,grouping=,invalid=empty,warning=invalid character"
h := oItems:AddItem("Float")
oItems:SetProperty("CellValue",h,1,"+12.34E+2")
oEditor3 := oItems:CellEditor(h,1)
oEditor3:EditType := 1/*EditType*/
oEditor3:Numeric := 1/*exFloat*/
h := oItems:AddItem("Float (no signs)")
oItems:SetProperty("CellValue",h,1,"12.34E-2")
oEditor4 := oItems:CellEditor(h,1)
oEditor4:EditType := 1/*EditType*/
oEditor4:Numeric := 769/*exDisableSigns+exFloat*/
h := oItems:AddItem("Float-Integer")
oItems:SetProperty("CellValue",h,1,"+12.34")
oEditor5 := oItems:CellEditor(h,1)
oEditor5:EditType := 1/*EditType*/
oEditor5:Numeric := 2/*exFloatInteger*/
h := oItems:AddItem("Float-Integer (no signs)")
oItems:SetProperty("CellValue",h,1,"12.34")
oEditor6 := oItems:CellEditor(h,1)
oEditor6:EditType := 1/*EditType*/
oEditor6:Numeric := 770/*exDisableSigns+exFloatInteger*/
h := oItems:AddItem("Float (mask,group)")
oItems:SetProperty("CellValue",h,1,"10002.34")
oItems:SetProperty("FormatCell",h,1,"value format `2`")
oEditor7 := oItems:CellEditor(h,1)
oEditor7:EditType := 8/*MaskType*/
oEditor7:Mask := ";;;float,invalid=empty,warning=invalid character"
h := oItems:AddItem("Float (mask, no group)")
oItems:SetProperty("CellValue",h,1,"10002.34")
oItems:SetProperty("FormatCell",h,1,"value format `2|0|`")
oEditor8 := oItems:CellEditor(h,1)
oEditor8:EditType := 8/*MaskType*/
oEditor8:Mask := ";;;float,grouping=,invalid=empty,warning=invalid character"
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1135
|
How do I set an extra data for each item
PROCEDURE OnMouseMove(oGrid,Button,Shift,X,Y)
LOCAL i
i := oGrid:ItemFromPoint(-1,-1,c,hit)
DevOut( Transform(i,"") )
DevOut( Transform(oGrid:Items:ItemData(i),"") )
RETURN
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oItems,oItems1
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:MouseMove := {|Button,Shift,X,Y| OnMouseMove(oGrid,Button,Shift,X,Y)} /*Occurs when the user moves the mouse.*/
oGrid:BeginUpdate()
oGrid:ColumnAutoResize := .T.
oGrid:Columns():Add("Default")
oItems := oGrid:Items()
oItems:SetProperty("ItemData",oItems:AddItem("method 1"),"your extra data of method 1")
oItems:InsertItem(0,"your extra data of method 2","method 2")
oItems1 := oGrid:Items()
oItems1:DefaultItem := oItems1:AddItem("method 3")
oItems1:SetProperty("ItemData",0,"your extra data of method 3")
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1134
|
I do not like to specify the item padding for every column I add. The question is how can I do it automatically

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oColumn
LOCAL oColumns
LOCAL oItems
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:BeginUpdate()
oGrid:AttachTemplate("handle AddColumn(Column){Column{Def(48)=8;Def(49)=8;AllowDragging=False;AllowSizing = True}}")
oGrid:HeaderAppearance := 4/*Etched*/
oGrid:DrawGridLines := -1/*exAllLines*/
oGrid:GridLineStyle := 32/*exGridLinesVSolid*/
oColumns := oGrid:Columns()
oColumns:Add("Item")
oColumn := oColumns:Add("Pos")
oColumn:Position := 0
oColumn:Width := 32
oColumn:AllowSizing := .F.
oColumn:FormatColumn := "1 index ``"
oItems := oGrid:Items()
oItems:AddItem("Item A")
oItems:AddItem("Item B")
oItems:AddItem("Item C")
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1133
|
How can I change the Exclude 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 oGrid
LOCAL oColumn
LOCAL oItems
LOCAL h
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:BeginUpdate()
oGrid:LinesAtRoot := -1/*exLinesAtRoot*/
oGrid:SetProperty("HTMLPicture","exclude","gCJKBOI4NBQaBQAhQNJJIIhShQACERCAEAcRdrdcUQhQDOZCJJUBEjbbhJ7giIJOBILJziJvl4BeKibhDiIZOhFLB0KZvMx0O5hORlAB3owuNJuNZzMZhOBlFxvORnTbuHgaiIeKBMKhFf9fDIcEoPCAVEAlGI4HhBBYMCARCQVGg4IhVMCAWC2XY1Q7WJ8RBB0KROKYAYDBbzicjndD6fA/VsRHRJIhBkRbMYIGwGAQjA2fRYOEBoYjBFBx1ATCgCGQ8M7OTjSaJMDRDKIwYu5DrIMBgSAADKJTqhBhyRApAA3FAucZPPilokRJJFJxEVxCMCCgIA==")
oGrid:SetProperty("Description",25/*exFilterBarExclude*/,"<img>exclude</img>")
oColumn := oGrid:Columns():Add("Items")
oColumn:DisplayFilterButton := .T.
oColumn:DisplayFilterPattern := .F.
oColumn:FilterList := 9472/*exShowExclude+exShowFocusItem+exShowCheckBox*/
oItems := oGrid:Items()
h := oItems:AddItem("Root 1")
oItems:InsertItem(h,,"Child 1")
oItems:InsertItem(h,,"Child 2")
oItems:SetProperty("ExpandItem",h,.T.)
h := oItems:AddItem("Root 2")
oItems:InsertItem(h,,"Child 1")
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1132
|
How can I change the Exclude 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 oGrid
LOCAL oColumn
LOCAL oItems
LOCAL h
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:BeginUpdate()
oGrid:LinesAtRoot := -1/*exLinesAtRoot*/
oGrid:SetProperty("Description",25/*exFilterBarExclude*/,"<bgcolor 0><fgcolor ffffff> Exclude </fgcolor></bgcolor>")
oColumn := oGrid:Columns():Add("Items")
oColumn:DisplayFilterButton := .T.
oColumn:DisplayFilterPattern := .F.
oColumn:FilterList := 9472/*exShowExclude+exShowFocusItem+exShowCheckBox*/
oItems := oGrid:Items()
h := oItems:AddItem("Root 1")
oItems:InsertItem(h,,"Child 1")
oItems:InsertItem(h,,"Child 2")
oItems:SetProperty("ExpandItem",h,.T.)
h := oItems:AddItem("Root 2")
oItems:InsertItem(h,,"Child 1")
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1131
|
The grid lines looks different then before. What should I do

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oColumn
LOCAL oItems
LOCAL h,hChild
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:BeginUpdate()
oGrid:LinesAtRoot := -1/*exLinesAtRoot*/
oGrid:DrawGridLines := -1/*exAllLines*/
oGrid:GridLineStyle := 512/*exGridLinesGeometric*/
oColumn := oGrid:Columns():Add("Tasks")
oColumn:SetProperty("Def",0/*exCellHasCheckBox*/,.T.)
oColumn:PartialCheck := .T.
oGrid:HeaderVisible := .T.
oItems := oGrid:Items()
h := oItems:AddItem("Project")
hChild := oItems:InsertItem(h,,"Task 1")
oItems:SetProperty("SelectItem",hChild,.T.)
hChild := oItems:InsertItem(h,,"Task 2")
oItems:SetProperty("CellState",hChild,0,1)
hChild := oItems:InsertItem(h,,"Task 3")
oItems:SetProperty("CellState",hChild,0,1)
oItems:SetProperty("ExpandItem",h,.T.)
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1130
|
Can I sort the column by check-state

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oColumn
LOCAL oItems
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:BeginUpdate()
oColumn := oGrid:Columns():Add("Check")
oColumn:SetProperty("Def",0/*exCellHasCheckBox*/,.T.)
oColumn:SortType := 32/*exSortByState*/
oItems := oGrid:Items()
oItems:AddItem()
oItems:SetProperty("CellState",oItems:AddItem(),0,1)
oItems:SetProperty("CellState",oItems:AddItem(),0,1)
oItems:AddItem()
oGrid:Columns:Item(0):SortOrder := 1/*SortAscending*/
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1129
|
Can I sort the column by image

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oColumn
LOCAL oItems
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:BeginUpdate()
oGrid:Images("gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTqlVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/yNAOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=")
oColumn := oGrid:Columns():Add("Image")
oColumn:SortType := 48/*exSortByImage*/
oItems := oGrid:Items()
oItems:SetProperty("CellImage",oItems:AddItem(),0,3)
oItems:AddItem()
oItems:SetProperty("CellImage",oItems:AddItem(),0,1)
oItems:SetProperty("CellImage",oItems:AddItem(),0,2)
oGrid:Columns:Item(0):SortOrder := 1/*SortAscending*/
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1128
|
Can I sort the column by value(numeric)

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oColumn
LOCAL oItems
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:BeginUpdate()
oColumn := oGrid:Columns():Add("Value")
oColumn:SetProperty("Def",17/*exCellValueFormat*/,1)
oColumn:FormatColumn := "`<fgcolor=808080><off 4><font ;6> ` + (1 index ``) + ` </font></off></fgcolor>` + value"
oColumn:SortType := 17/*exSortByValue+SortNumeric*/
oItems := oGrid:Items()
oItems:AddItem("1")
oItems:AddItem("10")
oItems:AddItem("2")
oItems:AddItem("20")
oGrid:Columns:Item(0):SortOrder := 1/*SortAscending*/
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1127
|
Can I sort a column by cell's state (checked, unchecked) rather than caption

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oColumn
LOCAL oEditor
LOCAL oItems
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:BeginUpdate()
oColumn := oGrid:Columns():Add("Check")
oEditor := oColumn:Editor()
oEditor:EditType := 19/*CheckValueType*/
oEditor:SetProperty("Option",17/*exCheckValue2*/,1)
oColumn:SortType := 1/*SortNumeric*/
oItems := oGrid:Items()
oItems:AddItem(.T.)
oItems:AddItem(.F.)
oItems:AddItem(.F.)
oItems:AddItem(.T.)
oGrid:Columns:Item(0):SortOrder := 1/*SortAscending*/
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1126
|
How do I get the item's auto-number, when using FormatColumn property, as CellValue gets empty

PROCEDURE OnSelectionChanged(oGrid)
LOCAL oItems
oItems := oGrid:Items()
DevOut( "pos: " )
DevOut( oItems:CellCaption(oItems:FocusItem(),1) )
DevOut( "rpos(1): " )
DevOut( oItems:CellCaption(oItems:FocusItem(),2) )
DevOut( "rpos(2): " )
DevOut( oItems:CellCaption(oItems:FocusItem(),3) )
DevOut( "apos: " )
DevOut( oItems:CellCaption(oItems:FocusItem(),4) )
DevOut( "index: " )
DevOut( oItems:CellCaption(oItems:FocusItem(),5) )
RETURN
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oColumn,oColumn1,oColumn2,oColumn3,oColumn4
LOCAL oColumns
LOCAL oItems
LOCAL h,hSel
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:SelectionChanged := {|| OnSelectionChanged(oGrid)} /*Fired after a new item has been selected.*/
oGrid:BeginUpdate()
oGrid:LinesAtRoot := -1/*exLinesAtRoot*/
oGrid:DrawGridLines := -2/*exRowLines*/
oGrid:HeaderAppearance := 4/*Etched*/
oColumns := oGrid:Columns()
oColumns:Add("Items")
oColumn := oColumns:Add("pos")
oColumn:FormatColumn := "1 pos ``"
oColumn:Position := 0
oColumn:Width := 48
oColumn:AllowSizing := .F.
oColumn1 := oColumns:Add("rpos(1)")
oColumn1:FormatColumn := "1 rpos ``"
oColumn1:Position := 1
oColumn1:Width := 48
oColumn1:AllowSizing := .F.
oColumn2 := oColumns:Add("rpos(2)")
oColumn2:FormatColumn := "1 rpos `.||A-Z`"
oColumn2:Position := 2
oColumn2:Width := 48
oColumn2:AllowSizing := .F.
oColumn3 := oColumns:Add("apos")
oColumn3:FormatColumn := "1 apos ``"
oColumn3:Position := 3
oColumn3:Width := 48
oColumn3:AllowSizing := .F.
oColumn4 := oColumns:Add("index")
oColumn4:FormatColumn := "1 index ``"
oColumn4:Position := 4
oColumn4:Width := 48
oColumn4:AllowSizing := .F.
oItems := oGrid:Items()
h := oItems:AddItem("Item 1")
oItems:InsertItem(h,,"Child 1")
hSel := oItems:InsertItem(h,,"Child 2")
oItems:SetProperty("ExpandItem",h,.T.)
oItems:AddItem("Item 2")
oItems:AddItem("Item 3")
oGrid:EndUpdate()
oGrid:Items():SetProperty("SelectItem",hSel,.T.)
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1125
|
How can I display UNICODE characters

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oItems
LOCAL oStdFont
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:BeginUpdate()
oStdFont := oGrid:Font()
oStdFont:Name := "Arial Unicode"
oStdFont:Size := 22
oGrid:HeaderVisible := .F.
oGrid:DefaultItemHeight := 48
oGrid:Columns():Add(""):SetProperty("Def",17/*exCellValueFormat*/,1)
oItems := oGrid:Items()
oItems:AddItem("Ӓӓ")
oItems:AddItem("ᦜᦝ;ᦞ")
oItems:AddItem("ɮɭ;ɯ")
oItems:AddItem("勳勴勵勶")
oItems:SetProperty("FormatCell",oItems:AddItem(oGrid:Version()),0,"(value lfind `UNICODE`) < 0 ? `<fgcolor=FF0000><b>!UNICODE!</b> version</fgcolor> required: ` + value : `` ")
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1124
|
How do I display the position of the item with 0-padding

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oItems
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:BeginUpdate()
oGrid:Columns():Add("Items"):FormatColumn := "((1 apos ``) lpad `00`) + `. ` + value"
oItems := oGrid:Items()
oItems:AddItem("Item A")
oItems:AddItem("Item B")
oItems:AddItem("Item C")
oItems:AddItem("Item D")
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1123
|
Can't get the +/- to be displayed on a divider item. What else can I do

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oColumns
LOCAL oItems
LOCAL h
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:BeginUpdate()
oGrid:LinesAtRoot := -1/*exLinesAtRoot*/
oGrid:DrawGridLines := -1/*exAllLines*/
oGrid:TreeColumnIndex := 0
oGrid:MarkSearchColumn := .F.
oGrid:FullRowSelect := 0/*exColumnSel*/
oGrid:HeaderAppearance := -1/*0xfffffff8+Bump+Sunken*/
oColumns := oGrid:Columns()
oColumns:Add("C1"):Width := 32
oColumns:Add("C2"):FormatColumn := "1 index ``"
oItems := oGrid:Items()
h := oItems:AddItem("Cell 1")
oItems:SetProperty("CellSingleLine",h,1,0/*exCaptionWordWrap*/)
h := oItems:AddItem("This is bit of text merges all cells in the item (divider shows no +/-)")
oItems:SetProperty("ItemDivider",h,0)
oItems:SetProperty("ItemBackColor",h,AutomationTranslateColor( GraMakeRGBColor ( { 240,240,240 } ) , .F. ))
oItems:SetProperty("ItemDividerLine",h,0/*EmptyLine*/)
oItems:SetProperty("CellHAlignment",h,0,1/*CenterAlignment*/)
oItems:InsertItem(h,,"Child 1")
oItems:InsertItem(h,,"Child 2")
oItems:SetProperty("ExpandItem",h,.T.)
h := oItems:AddItem("Cell 3")
h := oItems:AddItem("This is bit of text merges all cells in the item (merge shows +/-)")
oItems:SetProperty("ItemBackColor",h,AutomationTranslateColor( GraMakeRGBColor ( { 240,240,240 } ) , .F. ))
oItems:SetProperty("CellMerge",h,0,1)
oItems:InsertItem(h,,"Child 3")
oItems:InsertItem(h,,"Child 4")
oItems:SetProperty("ExpandItem",h,.T.)
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1122
|
How can I define a column of button type

PROCEDURE OnButtonClick(oGrid,Item,ColIndex,Key)
LOCAL oItems
oItems := oGrid:Items()
DevOut( Transform(oItems:CellValue(Item,ColIndex),"") )
RETURN
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oColumn
LOCAL oItems
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:ButtonClick := {|Item,ColIndex,Key| OnButtonClick(oGrid,Item,ColIndex,Key)} /*Occurs when user clicks on the cell's button.*/
oGrid:BeginUpdate()
oColumn := oGrid:Columns():Add("Button")
oColumn:SetProperty("Def",2/*exCellHasButton*/,.T.)
oColumn:SetProperty("Def",3/*exCellButtonAutoWidth*/,.F.)
oColumn:FormatColumn := "``"
oColumn:AllowSizing := .F.
oColumn:Width := 48
oGrid:Columns():Add("Second"):FormatColumn := "` Item ` + 1 index ``"
oItems := oGrid:Items()
oItems:AddItem("Button 1")
oItems:AddItem("Button 2")
oItems:AddItem("Button 3 ")
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1121
|
Is it possible to configure different colour/icon when there is a active filter

PROCEDURE OnFilterChange(oGrid)
oGrid:SetProperty("Background",0/*exHeaderFilterBarButton*/,oGrid:FormatABC("value = 0 ? 0x1000001 : 0x10000FF ",oGrid:Columns:Item(0):FilterType()))
RETURN
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oAppearance
LOCAL oColumn,oColumn1
LOCAL oItems
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:FilterChange := {|| OnFilterChange(oGrid)} /*Occurs when filter was changed.*/
oGrid:BeginUpdate()
oAppearance := oGrid:VisualAppearance()
oAppearance:RenderType := -16777216
oAppearance:Add(1,"gBFLBCJwBAEHhEJAAEhABXUIQAAYAQGKIcBiAKBQAGYBIJDEMgzDDAUBjKKocQTC4AIQjCK4JDKHYJRpHEZyCA8EhqGASRAFUQBYiWE4oSpLABQaK0ZwIGyRIrkGQgQgmPYDSDNU4zVIEEglBI0TDNczhNDENgtGYaJqHIYpZBcM40TKkEZoSIITZcRrOEBiRL1S0RBhGcRUHZlWzdN64LhuK47UrWdD/XhdVzXRbjfz1Oq+bxve48Br7A5yYThdr4LhOFQ3RjIL4xbIcUwGe6VZhjOLZXjmO49T69HTtOCYBEBA")
oGrid:DrawGridLines := -1/*exAllLines*/
oGrid:ShowFocusRect := .F.
oGrid:SetProperty("Background",0/*exHeaderFilterBarButton*/,0x1000001)
oGrid:SetProperty("Background",32/*exCursorHoverColumn*/,-1)
oGrid:HeaderAppearance := 4/*Etched*/
oGrid:SetProperty("BackColorHeader",AutomationTranslateColor( GraMakeRGBColor ( { 255,255,255 } ) , .F. ))
oGrid:HeaderVisible := .T.
oColumn := oGrid:Columns():Add("Filter")
oColumn:DisplayFilterButton := .T.
oColumn:AllowSort := .F.
oColumn:AllowDragging := .F.
oColumn:FilterList := 256/*exShowCheckBox*/
oItems := oGrid:Items()
oItems:AddItem("Item A")
oItems:AddItem("Item B")
oItems:AddItem("Item C")
oColumn1 := oGrid:Columns:Item(0)
oColumn1:Filter := "Item B"
oColumn1:FilterType := 240/*exFilter*/
oGrid:ApplyFilter()
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1120
|
How can I display the type of the value the column display

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oColumn
LOCAL oItems
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:BeginUpdate()
oGrid:HeaderAppearance := 4/*Etched*/
oGrid:DrawGridLines := -2/*exRowLines*/
oColumn := oGrid:Columns():Add("Values")
oColumn:SetProperty("Def",17/*exCellValueFormat*/,1)
oColumn:FormatColumn := "value + ` <off 4><fgcolor=808080>type(` + type(%0) + `)`"
oItems := oGrid:Items()
oItems:AddItem()
oItems:AddItem(-1)
oItems:AddItem("string")
oItems:AddItem("01/01/2001")
oItems:AddItem(2)
oItems:AddItem(.T.)
oItems:AddItem(12.34)
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1119
|
I want to create a conditional format for a column, verifying that the value of the cell is numeric, how can I do

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oConditionalFormat
LOCAL oItems
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:BeginUpdate()
oGrid:HeaderAppearance := 4/*Etched*/
oGrid:DrawGridLines := -2/*exRowLines*/
oGrid:Columns():Add("Values")
oConditionalFormat := oGrid:ConditionalFormats():Add("type(%0) in (2,3,4,5,18,19,20,21)")
oConditionalFormat:SetProperty("ForeColor",AutomationTranslateColor( GraMakeRGBColor ( { 255,0,0 } ) , .F. ))
oConditionalFormat:Bold := .T.
oGrid:ConditionalFormats():Add("type(%0) = 11"):SetProperty("ForeColor",AutomationTranslateColor( GraMakeRGBColor ( { 0,255,0 } ) , .F. ))
oGrid:ConditionalFormats():Add("type(%0) = 7"):SetProperty("ForeColor",AutomationTranslateColor( GraMakeRGBColor ( { 0,0,255 } ) , .F. ))
oGrid:ConditionalFormats():Add("type(%0) in (0,1)"):SetProperty("BackColor",AutomationTranslateColor( GraMakeRGBColor ( { 240,240,240 } ) , .F. ))
oItems := oGrid:Items()
oItems:AddItem()
oItems:AddItem(-1)
oItems:AddItem("string")
oItems:AddItem("01/01/2001")
oItems:AddItem(2)
oItems:AddItem(.T.)
oItems:AddItem(12.34)
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1118
|
How can I assign a computed value on a different column based on other columns

PROCEDURE OnChange(oGrid,Item,ColIndex,NewValue)
LOCAL oItems
oGrid:FreezeEvents(.T.)
oItems := oGrid:Items()
oItems:SetProperty("CellValue",Item,1,oGrid:FormatABC("int(255*sin(value/2))",NewValue))
oItems:SetProperty("CellValue",Item,2,oGrid:FormatABC("int(255*cos(value/2))",NewValue))
oGrid:FreezeEvents(.F.)
RETURN
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oColumn,var_Column
LOCAL oItems
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:Change := {|Item,ColIndex,NewValue| OnChange(oGrid,Item,ColIndex,NewValue)} /*Occurs when the user changes the cell's content.*/
oGrid:BeginUpdate()
oGrid:SelBackMode := 1/*exTransparent*/
oGrid:HeaderAppearance := 4/*Etched*/
oGrid:DrawGridLines := -2/*exRowLines*/
oColumn := oGrid:Columns():Add("Value")
oColumn:Editor():EditType := 4/*SpinType*/
oColumn:Width := 64
oColumn:AllowSizing := .F.
oGrid:Columns():Add("Assign A"):SetProperty("Def",4/*exCellBackColor*/,16448250)
oGrid:Columns():Add("Assign B"):SetProperty("Def",4/*exCellBackColor*/,16448250)
var_Column := oGrid:Columns:Add("Computed")
var_Column:SetProperty("Def",4/*exCellBackColor*/,16448250)
var_Column:ComputedField := "%1 + %2"
var_Column:FormatColumn := "value format ``"
var_Column:Alignment := 2/*RightAlignment*/
var_Column:HeaderAlignment := var_Column:Alignment()
oGrid:ConditionalFormats():Add("%3 >= 0"):Bold := .T.
oItems := oGrid:Items()
oItems:AddItem(1989)
oItems:AddItem(2001)
oItems:AddItem(2017)
oItems:AddItem(2018)
oItems:AddItem(2019)
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1117
|
How can I get computed a value on a different column

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oColumn
LOCAL oItems
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:BeginUpdate()
oGrid:HeaderAppearance := 4/*Etched*/
oGrid:DrawGridLines := -2/*exRowLines*/
oColumn := oGrid:Columns():Add("Year")
oColumn:Editor():EditType := 4/*SpinType*/
oColumn:Width := 64
oColumn:AllowSizing := .F.
oGrid:Columns():Add("Easter"):FormatColumn := "date(dateS('3/1/' + %0) + ((1:=(((255 - 11 * (%0 mod 19)) - 21) mod 30) + 21) + (=:1 > 48 ? -1 : 0) + 6 - ((%0 + int(%0 / 4)) + =:1 + (=:1 > 48 ? -1 : 0) + 1) mod 7))"
oItems := oGrid:Items()
oItems:AddItem(1989)
oItems:AddItem(2001)
oItems:AddItem(2017)
oItems:AddItem(2018)
oItems:AddItem(2019)
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1116
|
How can I prevent applying ConditionalFormats on a specified cell, for instance I am displaying a Total field, and I will like to have formatted in a different way (method 2)

PROCEDURE OnChange(oGrid,Item,ColIndex,NewValue)
oGrid:Refresh()
RETURN
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oColumn
LOCAL oConditionalFormat
LOCAL oEditor
LOCAL oItems,oItems1
LOCAL h
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:Change := {|Item,ColIndex,NewValue| OnChange(oGrid,Item,ColIndex,NewValue)} /*Occurs when the user changes the cell's content.*/
oGrid:BeginUpdate()
oConditionalFormat := oGrid:ConditionalFormats():Add("(%0 >= 0)")
oConditionalFormat:Expression := "(0=type(%CD0)) and (%0 >= 0)"
oConditionalFormat:Bold := .T.
oConditionalFormat:SetProperty("ForeColor",AutomationTranslateColor( GraMakeRGBColor ( { 255,0,0 } ) , .F. ))
DevOut( "ConditionalFormat.Valid" )
DevOut( Transform(oConditionalFormat:Valid(),"") )
oColumn := oGrid:Columns():Add("Numbers")
oEditor := oColumn:Editor()
oEditor:Numeric := -1/*exInteger*/
oEditor:EditType := 4/*SpinType*/
oColumn:SortType := 1/*SortNumeric*/
oItems := oGrid:Items()
oItems:AddItem(100)
oItems:AddItem(-25)
oItems:AddItem(31)
oItems:AddItem(-48)
oItems1 := oGrid:Items()
h := oItems1:AddItem("sum(all,dir,dbl(%0))")
oItems1:SetProperty("SelectableItem",h,.F.)
oItems1:SetProperty("SortableItem",h,.F.)
oItems1:SetProperty("ItemBackColor",h,AutomationTranslateColor( GraMakeRGBColor ( { 240,240,240 } ) , .F. ))
oItems1:SetProperty("CellData",h,0,"total")
oItems1:SetProperty("CellValueFormat",h,0,5/*exTotalField+exHTML*/)
oItems1:SetProperty("FormatCell",h,0,"'Total: <b><fgcolor=0000FF>'+(value format ``)")
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1115
|
How can I prevent applying ConditionalFormats on a specified cell, for instance I am displaying a Total field, and I will like to have formatted in a different way (method 1)

PROCEDURE OnChange(oGrid,Item,ColIndex,NewValue)
oGrid:Refresh()
RETURN
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oColumn
LOCAL oConditionalFormat
LOCAL oEditor
LOCAL oItems,oItems1
LOCAL h
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:Change := {|Item,ColIndex,NewValue| OnChange(oGrid,Item,ColIndex,NewValue)} /*Occurs when the user changes the cell's content.*/
oGrid:BeginUpdate()
oConditionalFormat := oGrid:ConditionalFormats():Add("%0 >= 0")
oConditionalFormat:Bold := .T.
oConditionalFormat:SetProperty("ForeColor",AutomationTranslateColor( GraMakeRGBColor ( { 255,0,0 } ) , .F. ))
oConditionalFormat:ApplyTo := 0/*exFormatToColumns*/
oColumn := oGrid:Columns():Add("Numbers")
oEditor := oColumn:Editor()
oEditor:Numeric := -1/*exInteger*/
oEditor:EditType := 4/*SpinType*/
oColumn:SortType := 1/*SortNumeric*/
oGrid:Columns():Add("Total"):Visible := .F.
oItems := oGrid:Items()
oItems:SetProperty("LockedItemCount",2/*exBottom*/,1)
h := oItems:LockedItem(2/*exBottom*/,0)
oItems:SetProperty("ItemDivider",h,1)
oItems:SetProperty("ItemDividerLine",h,0/*EmptyLine*/)
oItems:SetProperty("ItemBackColor",h,AutomationTranslateColor( GraMakeRGBColor ( { 240,240,240 } ) , .F. ))
oItems:SetProperty("CellValue",h,1,"sum(all,dir,dbl(%0))")
oItems:SetProperty("CellValueFormat",h,1,5/*exTotalField+exHTML*/)
oItems:SetProperty("CellHAlignment",h,1,2/*RightAlignment*/)
oItems:SetProperty("FormatCell",h,1,"'Total: <b><fgcolor=0000FF>'+(value format ``)")
oItems1 := oGrid:Items()
oItems1:AddItem(100)
oItems1:AddItem(-25)
oItems1:AddItem(31)
oItems1:AddItem(-48)
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1114
|
ADODB Requery sample

PROCEDURE OnButtonClick(oGrid,Item,ColIndex,Key)
LOCAL cmd
cmd := CreateObject("ADODB.Command")
cmd:ActiveConnection := oGrid:DataSource():ActiveConnection()
cmd:CommandText := "INSERT INTO Orders (EmployeeID) VALUES(12345)"
cmd:CommandType := 1/*adCmdText*/
cmd:Execute()
oGrid:DataSource():Requery()
RETURN
PROCEDURE OnError(oGrid,Error,Description)
DevOut( Transform(Description,"") )
RETURN
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oItems
LOCAL h
LOCAL rs
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:ButtonClick := {|Item,ColIndex,Key| OnButtonClick(oGrid,Item,ColIndex,Key)} /*Occurs when user clicks on the cell's button.*/
oGrid:Error := {|Error,Description| OnError(oGrid,Error,Description)} /*Fired when an internal error occurs.*/
oGrid:BeginUpdate()
oGrid:HeaderAppearance := 4/*Etched*/
oGrid:ColumnAutoResize := .F.
rs := CreateObject("ADODB.Recordset")
rs:Open("Select * From Orders","Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExGrid\Sample\Access\misc.accdb",1/*adOpenKeyset*/,3/*adLockOptimistic*/)
oGrid:DataSource := rs
oGrid:ConditionalFormats():Add("%1=12345"):SetProperty("BackColor",AutomationTranslateColor( GraMakeRGBColor ( { 240,240,240 } ) , .F. ))
oItems := oGrid:Items()
oItems:SetProperty("LockedItemCount",0/*exTop*/,1)
h := oItems:LockedItem(0/*exTop*/,0)
oItems:SetProperty("ItemDivider",h,0)
oItems:SetProperty("CellHasButton",h,0,.T.)
oItems:SetProperty("CellValue",h,0,"Requery (add a new record, using ADODB.Command)")
oItems:SetProperty("CellHAlignment",h,0,1/*CenterAlignment*/)
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1113
|
I am using DetectAddNew property, but no new items is added when AddNew is performed

PROCEDURE OnButtonClick(oGrid,Item,ColIndex,Key)
LOCAL oRecordset
oRecordset := oGrid:DataSource()
oRecordset:AddNew("EmployeeID",123)
oRecordset:Update()
RETURN
PROCEDURE OnError(oGrid,Error,Description)
DevOut( Transform(Description,"") )
RETURN
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oItems
LOCAL h
LOCAL rs
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:ButtonClick := {|Item,ColIndex,Key| OnButtonClick(oGrid,Item,ColIndex,Key)} /*Occurs when user clicks on the cell's button.*/
oGrid:Error := {|Error,Description| OnError(oGrid,Error,Description)} /*Fired when an internal error occurs.*/
oGrid:BeginUpdate()
oGrid:HeaderAppearance := 4/*Etched*/
oGrid:ColumnAutoResize := .F.
rs := CreateObject("ADODB.Recordset")
rs:Open("Orders","Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExGrid\Sample\Access\misc.accdb",1/*adOpenKeyset*/,3/*adLockOptimistic*/)
oGrid:DataSource := rs
oItems := oGrid:Items()
oItems:SetProperty("LockedItemCount",0/*exTop*/,1)
h := oItems:LockedItem(0/*exTop*/,0)
oItems:SetProperty("ItemDivider",h,0)
oItems:SetProperty("CellHasButton",h,0,.T.)
oItems:SetProperty("CellValue",h,0,"AddNew")
oItems:SetProperty("CellHAlignment",h,0,1/*CenterAlignment*/)
oGrid:DetectAddNew := .T.
oGrid:DetectDelete := .T.
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1112
|
I am skinning the control's header-bar, but the background of the header-bar is shown on each item in the filter-bar drop down panel. What can I do

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oAppearance
LOCAL oColumn
LOCAL oItems
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:BeginUpdate()
oAppearance := oGrid:VisualAppearance()
oAppearance:Add(1,"gBFLBCJwBAEHhEJAAEhABFgDg6AADACAxRDgMQBQKAAzQFAYcBqGqGAAGQZxYgmFgAQhFcZQSKUOQTDKMIziYBYfgkMIgSbJUgDGAkRRdDSOYDmGQYDiCIoRShOMIjHLUXxtDaIZwhEAoJb+RgAUY/cTzaAEUwHHiTKInaCQGhsCYJUJAdRURQ9EwvCIZBpEWwLChENQwWLCNj2TScBwjCyqbale45ViqdoDU8lORLUi+M4zSBPcZVTRtGShPDBKTjMKKYgkG4lVpRNa0PC1GTzQ6mazkKQLRADDIDVbAeL3LiMBy9LyLLItQALByua5mWhbcZyBCOPgBTrRb5zO58FjuTK7YLjMB7NrUNYtFaUMy2OpOCADIaecTNcaWLxPF2MY1HWYxVj2Jw3DuRJonKYBgggSRAlIYw6B0ThGFgPAkFUDAhBMfZRiGNAkFECZnm4YQdneJwqnsSQrGAAhWAIJBJBIQgFCQIBiEIAglgqYo0i4V4MEgRI9gSToYFS" +;
"b4Fk6Y4+BmBZhFOJgTC8TBogQAArgqco4muCZOkOMJtgmYpIjYKg7GKE4uCUK4AAKKg2DwI4DiCZw5k6KJ2D6D4OHiag4DwIxiiQAArAqMosnEPBPAOIhOg+DozjIJ4PGSY4iEwPAkhKLhHUUSQsnKFCnkYU9MjORhcCsAAIACLQ8iaSJ6FKC5jJoaobA8KYoACCRKnmMJzhuDpZnSboMCKGJ4nMPIPDmYAACwKIDk6CoLCeU40m6I5oliMoKDyaICokLIpgoThviOKJoGYf4KmUKhMjMLJLCAAojCyaYoiYGoGmqM46CkOwPEoKonAACxKlSdItmiWBeBeDgrioNo3D0KxSlAAAtgsUpYnUPRPEoco8hCa+T40SxbBRj5tEsHJ1i6JhbGYS4ug8awelQLZAAKZI5C4DxrhYQ9ehmUppWiA48nAPRuFKYpiAAC47laZQ9iuKZSgOPotkuFI7C6C4gACPJAm8eQOhOQZoikDp3kCS5AACPoEk8fBGnqQg" +;
"pDOSppD2TxjlyPZD6CfwekQTx5lKP5ImseZTCAL5MAMAAAkoTADmMLpIjISp+HSS4PgyMAADBzAHDSIoPCOUpWjObIKE8NJOHKIwPEaTprBsHpdjWLB9AieQ+DQYwQAAMR1EOZxWi+bx7HcWQ8msfRYnnDhQACRwxgwc5rGaMZPE0ZxqjWNZtgyRwAAyTZEnuXJzEyAx2kQcxNkye5cEy3cYAcANrGAIH4OAhx3gNGGPAfgIR8jBA4McBMARViHH4HQOYmxuCpF2MsecEQVBvGQCcIQvA6i2CAAIARAQ=")
oAppearance:Add(2,"gBFLBCJwBAEHhEJAAEhABZEGACAADACAxRDgMQBQKAAzQFAYcBqGqGAAGQZxYgmFgAQhFcZQSKUOQTDKMIziYBYJhEMwwDhEIwjHCEEhsGIbJAGQBJCjWGodQLOEgzNC0IxNFCQILhEZJADKII8TTOU5UPRESwTE4cKBmKhQCo2NpKR7VUTxCKQahLLivoCjBT8EzHMqtIzrCA6MpaP4pQjKcqwHJ8YyHEi0ZrjazKaj6T5AXDUcaWbbNVx3PK3aioOpLZrqOZZYzYFoABTuJzPMSyIhxXD8cweaZvSpLExVYK9BY3PbKMgxC77QgTIpDaQMNS6PjtF43PAALLFUaNYzoOKzABMHATBIXAYJCwIIR5G7ID4BbQcCQAHL9DBaEEIAEEISgGhMGZQmocgymmIRQkIEQ2BcGgbEIRQci8XaMBqTRVgSAZHG+S5pnOep+D6f4vjec5zn0fpfmgBgAH6TRoBYBoAh+eAmAiAgPFgNArgOQpIESdoEmCOAOAq" +;
"BYfFGAgaEaBgYHYFYFmIB5UiGCJUgKCgmgeYoHk4BgCmKRQiCwApgHgYgyH8B54lQU4NkMeJlBoDgjkiXBTg0R54iYIR+koeQVBoKpkgkChKhEJBkF4SFEjkDgJhFQoeEmDJlBeehUhWJQJGIXoICWOQ6FeFIlhkfhlDsSJpiQVoamaSY2G6G5nAmRhpCOH5pkwVYdmeCZmHqHpnkmdhzhmaAIFiax8AABAEICA==")
oGrid:SetProperty("BackColorHeader",0x1000000)
oGrid:SetProperty("ForeColorHeader",AutomationTranslateColor( GraMakeRGBColor ( { 128,128,128 } ) , .F. ))
oGrid:SetProperty("Background",0/*exHeaderFilterBarButton*/,0x2000000)
oGrid:SetProperty("Background",26/*exBackColorFilter*/,AutomationTranslateColor( GraMakeRGBColor ( { 255,255,255 } ) , .F. ))
oGrid:SetProperty("Background",27/*exForeColorFilter*/,AutomationTranslateColor( GraMakeRGBColor ( { 0,0,1 } ) , .F. ))
oGrid:SetProperty("Background",20/*exSelBackColorFilter*/,0x1ff8000)
oGrid:SetProperty("Background",21/*exSelForeColorFilter*/,AutomationTranslateColor( GraMakeRGBColor ( { 240,240,240 } ) , .F. ))
oGrid:SetProperty("Background",32/*exCursorHoverColumn*/,-1)
oGrid:HeaderHeight := 24
oGrid:SetProperty("BackColorLevelHeader",oGrid:BackColor())
oColumn := oGrid:Columns():Add("Filter")
oColumn:DisplayFilterButton := .T.
oColumn:DisplayFilterPattern := .F.
oColumn:FilterList := 9504/*exShowExclude+exShowFocusItem+exShowCheckBox+exSortItemsAsc*/
oColumn:SetProperty("Def",52/*exHeaderPaddingLeft*/,2)
oColumn:SetProperty("Def",53/*exHeaderPaddingRight*/,2)
oItems := oGrid:Items()
oItems:AddItem("A")
oItems:AddItem("B")
oItems:AddItem("C")
oItems:AddItem("D")
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1111
|
How can I change the font for entire column (method 3)

PROCEDURE OnAddItem(oGrid,Item)
LOCAL oItems
oItems := oGrid:Items()
oItems:SetProperty("CellFont",Item,1,oGrid:Columns:Item(1):Data())
oItems:SetProperty("CellBold",Item,1,.T.)
oItems:SetProperty("CellForeColor",Item,1,AutomationTranslateColor( GraMakeRGBColor ( { 255,0,0 } ) , .F. ))
RETURN
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oColumn
LOCAL oItems
LOCAL f
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:AddItem := {|Item| OnAddItem(oGrid,Item)} /*Occurs after a new Item has been inserted to Items collection.*/
oGrid:BeginUpdate()
oGrid:HeaderHeight := 24
oGrid:HeaderAppearance := 4/*Etched*/
oGrid:Columns():Add("C1")
oColumn := oGrid:Columns():Add("C2")
oColumn:HTMLCaption := "<b><font Tahoma;14>C2"
f := CreateObject("StdFont")
f:Name := "Tahoma"
f:Size := 11
oColumn:Data := f
oItems := oGrid:Items()
oItems:SetProperty("CellValue",oItems:AddItem(10),1,11)
oItems:SetProperty("CellValue",oItems:AddItem(12),1,13)
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1110
|
How can I change the font for entire column (method 2)

PROCEDURE OnAddItem(oGrid,Item)
LOCAL oItems
LOCAL f
oItems := oGrid:Items()
f := CreateObject("StdFont")
f:Name := "Tahoma"
f:Size := 11
oItems:SetProperty("CellFont",Item,1,f)
oItems:SetProperty("CellBold",Item,1,.T.)
oItems:SetProperty("CellForeColor",Item,1,AutomationTranslateColor( GraMakeRGBColor ( { 255,0,0 } ) , .F. ))
RETURN
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oItems
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:AddItem := {|Item| OnAddItem(oGrid,Item)} /*Occurs after a new Item has been inserted to Items collection.*/
oGrid:BeginUpdate()
oGrid:HeaderHeight := 24
oGrid:HeaderAppearance := 4/*Etched*/
oGrid:Columns():Add("C1")
oGrid:Columns():Add("C2"):HTMLCaption := "<b><font Tahoma;14>C2"
oItems := oGrid:Items()
oItems:SetProperty("CellValue",oItems:AddItem(10),1,11)
oItems:SetProperty("CellValue",oItems:AddItem(12),1,13)
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1109
|
How can I change the font for entire column (method 1)

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oConditionalFormat
LOCAL oItems
LOCAL f
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:BeginUpdate()
oConditionalFormat := oGrid:ConditionalFormats():Add("1")
oConditionalFormat:Bold := .T.
oConditionalFormat:SetProperty("ForeColor",AutomationTranslateColor( GraMakeRGBColor ( { 255,0,0 } ) , .F. ))
f := CreateObject("StdFont")
f:Name := "Tahoma"
f:Size := 11
oConditionalFormat:Font := f
oConditionalFormat:ApplyTo := 1/*0x1+*/
oGrid:HeaderHeight := 24
oGrid:HeaderAppearance := 4/*Etched*/
oGrid:Columns():Add("C1")
oGrid:Columns():Add("C2"):HTMLCaption := "<b><font Tahoma;14>C2"
oItems := oGrid:Items()
oItems:SetProperty("CellValue",oItems:AddItem(10),1,11)
oItems:SetProperty("CellValue",oItems:AddItem(12),1,13)
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1108
|
I am using ExComboBox as an user editor, how can I display a different column

PROCEDURE OnUserEditorClose(oGrid,Object,Item,ColIndex)
/*Items.CellValue(Item,ColIndex) = Object.Select("OrderID")*/
RETURN
PROCEDURE OnUserEditorOleEvent(oGrid,Object,Ev,CloseEditor,Item,ColIndex)
DevOut( Transform(Ev,"") )
RETURN
PROCEDURE OnUserEditorOpen(oGrid,Object,Item,ColIndex)
/*Object.Select("OrderID") = Me.Items.CellValue(Item,ColIndex)*/
RETURN
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oColumn,oColumn1
LOCAL oComboBox
LOCAL oEditor
LOCAL oItems
LOCAL h
LOCAL rs
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:UserEditorClose := {|Object,Item,ColIndex| OnUserEditorClose(oGrid,Object,Item,ColIndex)} /*Fired the user editor is about to be opened.*/
oGrid:UserEditorOleEvent := {|Object,Ev,CloseEditor,Item,ColIndex| OnUserEditorOleEvent(oGrid,Object,Ev,CloseEditor,Item,ColIndex)} /*Occurs when an user editor fires an event.*/
oGrid:UserEditorOpen := {|Object,Item,ColIndex| OnUserEditorOpen(oGrid,Object,Item,ColIndex)} /*Occurs when an user editor is about to be opened.*/
oGrid:BeginUpdate()
oGrid:SortOnClick := 0/*exNoSort*/
oEditor := oGrid:Columns():Add("Exontrol.ComboBox"):Editor()
oEditor:EditType := 16/*UserEditorType*/
oEditor:UserEditor("Exontrol.ComboBox","")
oComboBox := oEditor:UserEditorObject()
oComboBox:BeginUpdate()
oComboBox:Style := 2/*DropDownList*/
oComboBox:ColumnAutoResize := .F.
rs := CreateObject("ADOR.Recordset")
rs:Open("Orders","Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExGrid\Sample\Access\misc.accdb",3/*adOpenStatic*/,3/*adLockOptimistic*/)
oComboBox:DataSource := rs
oComboBox:Alignment := 0/*LeftAlignment*/
oComboBox:IntegralHeight := .T.
oComboBox:MinHeightList := 128
oComboBox:MinWidthList := 648
oComboBox:HeaderHeight := 36
oComboBox:AllowSizeGrip := .T.
oComboBox:SingleEdit := .T.
oComboBox:LabelColumnIndex := 7
oComboBox:SearchColumnIndex := 0
oColumn := oComboBox:Columns:Item(0)
oColumn:HeaderBold := .T.
oColumn:HTMLCaption := "OrderID<br><fgcolor=808080>(search)"
oColumn1 := oComboBox:Columns:Item(7)
oColumn1:HeaderBold := .T.
oColumn1:HTMLCaption := "ShipName<br><fgcolor=808080>(display)"
oColumn1:Width := 128
oComboBox:UseTabKey := .F.
oComboBox:EndUpdate()
oGrid:DrawGridLines := -2/*exRowLines*/
oGrid:TreeColumnIndex := -1
oGrid:DefaultItemHeight := 21
oItems := oGrid:Items()
h := oItems:AddItem("shows always the drop-down editor")
oItems:SetProperty("CellHAlignment",h,0,1/*CenterAlignment*/)
oItems:SetProperty("ItemDivider",h,0)
oItems:SetProperty("ItemDividerLineAlignment",h,1/*DividerCenter*/)
oItems:SetProperty("SelectableItem",h,.F.)
oItems:SetProperty("EnableItem",h,.F.)
oItems:SetProperty("CellEditorVisible",oItems:AddItem(10248),0,1/*exEditorVisible*/)
oItems:SetProperty("CellEditorVisible",oItems:AddItem(10249),0,1/*exEditorVisible*/)
oItems:SetProperty("CellEditorVisible",oItems:AddItem(10250),0,1/*exEditorVisible*/)
h := oItems:AddItem("shows the drop-down editor when user clicks it")
oItems:SetProperty("CellHAlignment",h,0,1/*CenterAlignment*/)
oItems:SetProperty("ItemDivider",h,0)
oItems:SetProperty("ItemDividerLineAlignment",h,1/*DividerCenter*/)
oItems:SetProperty("SelectableItem",h,.F.)
oItems:SetProperty("EnableItem",h,.F.)
oItems:AddItem(10248)
oItems:AddItem(10249)
oItems:AddItem(10250)
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1107
|
The ItemHeight property is not working (method 2)

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oItems
LOCAL h
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:BeginUpdate()
oGrid:ColumnAutoResize := .F.
oGrid:ScrollBySingleLine := .T.
oGrid:Columns():Add("Column"):Width := 128
oItems := oGrid:Items()
oItems:SetProperty("CellSingleLine",oItems:AddItem("This is a bit of text that should break the line"),0,0/*exCaptionWordWrap*/)
h := oItems:AddItem("")
oItems:SetProperty("ItemDivider",h,0)
oItems:SetProperty("SelectableItem",h,.F.)
oItems:SetProperty("ItemDividerLineAlignment",h,1/*DividerCenter*/)
oItems:SetProperty("ItemHeight",h,3)
oItems:SetProperty("CellSingleLine",oItems:AddItem("This is a bit of text that should break the line"),0,0/*exCaptionWordWrap*/)
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1106
|
The ItemHeight property is not working (method 1)

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oColumn
LOCAL oItems
LOCAL h
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:BeginUpdate()
oGrid:ColumnAutoResize := .F.
oGrid:ScrollBySingleLine := .T.
oColumn := oGrid:Columns():Add("Column")
oColumn:Width := 128
oColumn:SetProperty("Def",16/*exCellSingleLine*/,0)
oItems := oGrid:Items()
oItems:AddItem("This is a bit of text that should break the line")
h := oItems:AddItem("")
oItems:SetProperty("ItemDivider",h,0)
oItems:SetProperty("SelectableItem",h,.F.)
oItems:SetProperty("ItemDividerLineAlignment",h,1/*DividerCenter*/)
oItems:SetProperty("ItemMinHeight",h,3)
oItems:SetProperty("ItemMaxHeight",h,3)
oItems:AddItem("This is a bit of text that should break the line")
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1105
|
How do I add a total field locked at the bottom of the control

PROCEDURE OnAddGroupItem(oGrid,Item)
LOCAL oItems
oItems := oGrid:Items()
oItems:SetProperty("ItemDividerLine",Item,0/*EmptyLine*/)
oItems:SetProperty("FormatCell",Item,oItems:GroupItem(Item),"value + ` Min: <b>` + %13 + `</b> Max: <b>` + %14 + `</b> Sum: <b>` + %15 + `</b>, of Freight column`")
oItems:SetProperty("CellValue",Item,"Min","min(current,all,dbl(%6))")
oItems:SetProperty("CellValueFormat",Item,"Min",4/*exTotalField*/)
oItems:SetProperty("CellValue",Item,"Max","max(current,all,dbl(%6))")
oItems:SetProperty("CellValueFormat",Item,"Max",4/*exTotalField*/)
oItems:SetProperty("CellValue",Item,"Sum","sum(current,all,dbl(%6))")
oItems:SetProperty("CellValueFormat",Item,"Sum",4/*exTotalField*/)
oItems:SetProperty("ItemBackColor",Item,AutomationTranslateColor( GraMakeRGBColor ( { 240,240,240 } ) , .F. ))
RETURN
PROCEDURE OnChange(oGrid,Item,ColIndex,NewValue)
oGrid:Refresh()
RETURN
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oColumn,oColumn1,var_Column,var_Column1
LOCAL oColumns
LOCAL oItems
LOCAL hL
LOCAL rs
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:AddGroupItem := {|Item| OnAddGroupItem(oGrid,Item)} /*Occurs after a new Group Item has been inserted to Items collection.*/
oGrid:Change := {|Item,ColIndex,NewValue| OnChange(oGrid,Item,ColIndex,NewValue)} /*Occurs when the user changes the cell's content.*/
oGrid:BeginUpdate()
oGrid:HasLines := 0/*exNoLine*/
oGrid:SetProperty("Description",26/*exColumnsFloatBar*/,"Show/Hide")
oGrid:ColumnsFloatBarSortOrder := 1/*SortAscending*/
oGrid:ColumnsFloatBarVisible := 2/*exColumnsFloatBarVisibleIncludeCheckColumns*/
oGrid:ColumnAutoResize := .F.
oGrid:SetProperty("BackColorSortBar",AutomationTranslateColor( GraMakeRGBColor ( { 240,240,240 } ) , .F. ))
rs := CreateObject("ADOR.Recordset")
rs:Open("Orders","Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExGrid\Sample\Access\misc.accdb",3/*adOpenStatic*/,3/*adLockOptimistic*/)
oGrid:DataSource := rs
oGrid:SingleSort := .F.
oGrid:SortBarVisible := .T.
oGrid:AllowGroupBy := .T.
oGrid:SortBarCaption := "Drag a <b>column</b> header here to group by that column."
oColumns := oGrid:Columns()
oColumn := oColumns:Add("Min")
oColumn:Visible := .F.
oColumn:AllowDragging := .F.
var_Column := oColumns:Add("Max")
var_Column:Visible := .F.
var_Column:Visible := .F.
var_Column:AllowDragging := .F.
var_Column1 := oColumns:Add("Sum")
var_Column1:Visible := .F.
var_Column1:Visible := .F.
var_Column1:AllowDragging := .F.
oColumn1 := oGrid:Columns:Item("Freight")
oColumn1:FormatColumn := "currency(value)"
oColumn1:SetProperty("Def",4/*exCellBackColor*/,12895487)
oColumn1:SetProperty("Def",7/*exHeaderBackColor*/,oColumn1:Def(4/*exCellBackColor*/))
oColumn1:HeaderBold := .T.
oColumn1:AllowGroupBy := .F.
oColumn1:Alignment := 2/*RightAlignment*/
oGrid:ScrollBySingleLine := .F.
oItems := oGrid:Items()
oItems:SetProperty("LockedItemCount",2/*exBottom*/,2)
hL := oItems:LockedItem(2/*exBottom*/,0)
oItems:SetProperty("ItemDivider",hL,0)
oItems:SetProperty("ItemHeight",hL,3)
oItems:SetProperty("ItemDividerLineAlignment",hL,2/*DividerTop*/)
oItems:SetProperty("ItemDividerLine",hL,2/*DoubleLine*/)
hL := oItems:LockedItem(2/*exBottom*/,1)
oItems:SetProperty("CellValue",hL,6,"sum(all,rec,dbl(%6))")
oItems:SetProperty("CellValueFormat",hL,6,4/*exTotalField*/)
oItems:SetProperty("ItemHeight",hL,24)
oItems:SetProperty("ItemBold",hL,.T.)
oGrid:Columns:Item("EmployeeID"):SortOrder := -1/*0xfffffffc+SortDescending+SortAscending*/
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1104
|
How can I add a total field, when I use grouping

PROCEDURE OnAddGroupItem(oGrid,Item)
LOCAL oItems
oItems := oGrid:Items()
oItems:SetProperty("ItemDividerLine",Item,0/*EmptyLine*/)
oItems:SetProperty("FormatCell",Item,oItems:GroupItem(Item),"value + ` Min: <b>` + %13 + `</b> Max: <b>` + %14 + `</b> Sum: <b>` + %15 + `</b>, of Freight column`")
oItems:SetProperty("CellValue",Item,"Min","min(current,all,dbl(%6))")
oItems:SetProperty("CellValueFormat",Item,"Min",4/*exTotalField*/)
oItems:SetProperty("CellValue",Item,"Max","max(current,all,dbl(%6))")
oItems:SetProperty("CellValueFormat",Item,"Max",4/*exTotalField*/)
oItems:SetProperty("CellValue",Item,"Sum","sum(current,all,dbl(%6))")
oItems:SetProperty("CellValueFormat",Item,"Sum",4/*exTotalField*/)
oItems:SetProperty("ItemBackColor",Item,AutomationTranslateColor( GraMakeRGBColor ( { 240,240,240 } ) , .F. ))
RETURN
PROCEDURE OnChange(oGrid,Item,ColIndex,NewValue)
oGrid:Refresh()
RETURN
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oColumn
LOCAL oColumns
LOCAL oItems
LOCAL hL
LOCAL rs
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:AddGroupItem := {|Item| OnAddGroupItem(oGrid,Item)} /*Occurs after a new Group Item has been inserted to Items collection.*/
oGrid:Change := {|Item,ColIndex,NewValue| OnChange(oGrid,Item,ColIndex,NewValue)} /*Occurs when the user changes the cell's content.*/
oGrid:BeginUpdate()
oGrid:HasLines := 0/*exNoLine*/
oGrid:ColumnAutoResize := .F.
oGrid:SetProperty("BackColorSortBar",AutomationTranslateColor( GraMakeRGBColor ( { 240,240,240 } ) , .F. ))
rs := CreateObject("ADOR.Recordset")
rs:Open("Orders","Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExGrid\Sample\Access\misc.accdb",3/*adOpenStatic*/,3/*adLockOptimistic*/)
oGrid:DataSource := rs
oGrid:SingleSort := .F.
oGrid:SortBarVisible := .T.
oGrid:AllowGroupBy := .T.
oGrid:Columns:Item(1):SortOrder := -1/*0xfffffffc+SortDescending+SortAscending*/
oColumns := oGrid:Columns()
oColumns:Add("Min"):Visible := .F.
oColumns:Add("Max"):Visible := .F.
oColumns:Add("Sum"):Visible := .F.
oColumn := oGrid:Columns:Item("Freight")
oColumn:SetProperty("Def",4/*exCellBackColor*/,12895487)
oColumn:SetProperty("Def",7/*exHeaderBackColor*/,oColumn:Def(4/*exCellBackColor*/))
oColumn:HeaderBold := .T.
oColumn:AllowGroupBy := .F.
oGrid:ScrollBySingleLine := .F.
oItems := oGrid:Items()
oItems:SetProperty("LockedItemCount",2/*exBottom*/,1)
hL := oItems:LockedItem(2/*exBottom*/,0)
oItems:SetProperty("ItemDivider",hL,0)
oItems:SetProperty("ItemHeight",hL,24)
oItems:SetProperty("ItemDividerLineAlignment",hL,2/*DividerTop*/)
oItems:SetProperty("ItemDividerLine",hL,2/*DoubleLine*/)
oItems:SetProperty("CellValue",hL,0,"sum(all,rec,dbl(%6))")
oItems:SetProperty("CellValueFormat",hL,0,5/*exTotalField+exHTML*/)
oItems:SetProperty("CellHAlignment",hL,0,2/*RightAlignment*/)
oItems:SetProperty("FormatCell",hL,0,"'Freight: <bgcolor=FFC4C4> '+(value format ``) + ` `")
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1103
|
How do I use the ColumnsFloatBarVisible on exColumnsFloatBarVisibleIncludeCheckColumns

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oColumns
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:BeginUpdate()
oGrid:ColumnAutoResize := .F.
oGrid:HeaderAppearance := 4/*Etched*/
oColumns := oGrid:Columns()
oColumns:Add("City")
oColumns:Add("Start"):Visible := .F.
oColumns:Add("End"):Visible := .F.
oGrid:SetProperty("Description",26/*exColumnsFloatBar*/,"Show/Hide")
oGrid:ColumnsFloatBarSortOrder := 1/*SortAscending*/
oGrid:ColumnsFloatBarVisible := 2/*exColumnsFloatBarVisibleIncludeCheckColumns*/
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1102
|
How do I use the ColumnsFloatBarVisible on exColumnsFloatBarVisibleIncludeHiddenColumn

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oColumns
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:BeginUpdate()
oGrid:ColumnAutoResize := .F.
oGrid:HeaderAppearance := 4/*Etched*/
oColumns := oGrid:Columns()
oColumns:Add("City")
oColumns:Add("Start"):Visible := .F.
oColumns:Add("End"):Visible := .F.
oGrid:SetProperty("Description",26/*exColumnsFloatBar*/,"Show")
oGrid:ColumnsFloatBarVisible := -1/*exColumnsFloatBarVisibleIncludeHiddenColumns*/
oGrid:ColumnsFloatBarSortOrder := 1/*SortAscending*/
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1101
|
How do I use the ColumnsFloatBarVisible on exColumnsFloatBarVisibleIncludeGroupByColumns

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oGrid
LOCAL oColumns
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oGrid := XbpActiveXControl():new( oForm:drawingArea )
oGrid:CLSID := "Exontrol.Grid.1" /*{101EE60F-7B07-48B0-A13A-F32BAE7DA165}*/
oGrid:create(,, {10,60},{610,370} )
oGrid:BeginUpdate()
oGrid:ColumnAutoResize := .F.
oGrid:HeaderAppearance := 4/*Etched*/
oColumns := oGrid:Columns()
oColumns:Add("City")
oColumns:Add("Start")
oColumns:Add("End")
oGrid:AllowGroupBy := .T.
oGrid:SortBarVisible := .T.
oGrid:SortBarCaption := "Drag a <b>column</b> header here to group by that column."
oGrid:SetProperty("BackColorSortBar",AutomationTranslateColor( GraMakeRGBColor ( { 250,250,250 } ) , .F. ))
oGrid:SetProperty("Description",26/*exColumnsFloatBar*/,"Group-By")
oGrid:ColumnsFloatBarVisible := 1/*exColumnsFloatBarVisibleIncludeGroupByColumns*/
oGrid:ColumnsFloatBarSortOrder := 1/*SortAscending*/
oGrid:Columns:Item("City"):SortOrder := 1/*SortAscending*/
oGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|