56
|
ImageSize property on 32 (specifies the size of the control' icons)

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oNode,oNode1,oNode2
LOCAL oNodes,oNodes1
LOCAL oXMLGrid
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oXMLGrid := XbpActiveXControl():new( oForm:drawingArea )
oXMLGrid:CLSID := "Exontrol.XMLGrid.1" /*{AC7F976E-48C3-4B0B-B952-45D92DFE7F3E}*/
oXMLGrid:create(,, {10,60},{610,370} )
oXMLGrid:BeginUpdate()
oXMLGrid:ImageSize := 32
oXMLGrid:Font():Size := 16
oXMLGrid:NodeHeight := 32
oXMLGrid:SetProperty("LevelWidth",-1,oXMLGrid:ImageSize())
oXMLGrid: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==")
oNode := oXMLGrid:Nodes():Add("Parent <b>1")
oNodes := oNode:Nodes()
oNode1 := oNodes:Add("Child 1")
oNode1:Value := "<sha ;;0>Event <b><font ;6><off -6>2<off 4>3<off 4>1"
oNode1:Selected := .T.
oNodes:Add("Child 2")
oNode:ExpandAll()
oNode2 := oXMLGrid:Nodes():Add("Parent <b>2")
oNodes1 := oNode2:Nodes()
oNodes1:Add("Child 1")
oNodes1:Add("Child 2")
oXMLGrid:ExpandBarVisible := .T.
oXMLGrid:ExpandButtons := 3/*exCustom*/
oXMLGrid:SetProperty("ExpandButtonsCustom",.F.,1)
oXMLGrid:SetProperty("ExpandButtonsCustom",.T.,2)
oXMLGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
55
|
ImageSize property on 16 (specifies the size of the control' icons)

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oNode,oNode1,oNode2
LOCAL oNodes,oNodes1
LOCAL oXMLGrid
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oXMLGrid := XbpActiveXControl():new( oForm:drawingArea )
oXMLGrid:CLSID := "Exontrol.XMLGrid.1" /*{AC7F976E-48C3-4B0B-B952-45D92DFE7F3E}*/
oXMLGrid:create(,, {10,60},{610,370} )
oXMLGrid:BeginUpdate()
oXMLGrid:ImageSize := 16
oXMLGrid: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==")
oNode := oXMLGrid:Nodes():Add("Parent <b>1")
oNodes := oNode:Nodes()
oNode1 := oNodes:Add("Child 1")
oNode1:Value := "<sha ;;0>Event <b><font ;6><off -6>2<off 4>3<off 4>1"
oNode1:Selected := .T.
oNodes:Add("Child 2")
oNode:ExpandAll()
oNode2 := oXMLGrid:Nodes():Add("Parent <b>2")
oNodes1 := oNode2:Nodes()
oNodes1:Add("Child 1")
oNodes1:Add("Child 2")
oXMLGrid:ExpandBarVisible := .T.
oXMLGrid:ExpandButtons := 3/*exCustom*/
oXMLGrid:SetProperty("ExpandButtonsCustom",.F.,1)
oXMLGrid:SetProperty("ExpandButtonsCustom",.T.,2)
oXMLGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
54
|
How can I create a new node with attribute, something like <newnode attr1='at1'/>

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oNode
LOCAL d
LOCAL oXMLGrid
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oXMLGrid := XbpActiveXControl():new( oForm:drawingArea )
oXMLGrid:CLSID := "Exontrol.XMLGrid.1" /*{AC7F976E-48C3-4B0B-B952-45D92DFE7F3E}*/
oXMLGrid:create(,, {10,60},{610,370} )
oXMLGrid:Images("gBJJgBAICAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTqlVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf+Pt2RrmazF3zlez+duGhsGk0Vp01i1On0GV1dU1ev1lf2VWymX2e53W73m9327iw+lfCj0gkUkAEllHKnG13j/cHQjb/eHU6b4f74jbwOncjbAB3gjaAB/k8flB8oA4A9cb9ftjXv9Xs+fwAHk80a/HpjTAD7/O2P54D+jaAg=")
oNode := oXMLGrid:Nodes():Add("newnode")
oNode:Image := 1
oNode:Nodes():Add("attr1","at1"):Image := 2
oXMLGrid:ExpandAll()
d := CreateObject("MSXML.DOMDocument")
oXMLGrid:SaveXML(d)
DevOut( d:xml() )
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
53
|
Is it possible to load the XML with a different version of XML DOM
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL d
LOCAL oXMLGrid
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oXMLGrid := XbpActiveXControl():new( oForm:drawingArea )
oXMLGrid:CLSID := "Exontrol.XMLGrid.1" /*{AC7F976E-48C3-4B0B-B952-45D92DFE7F3E}*/
oXMLGrid:create(,, {10,60},{610,370} )
d := CreateObject("Msxml2.DOMDocument.3.0")
d:loadXML("<customer><first_name>Joe</first_name><last_name>Smith</last_name></customer>")
oXMLGrid:LoadXML(d)
oXMLGrid:ExpandAll()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
52
|
Is there a way to define a default Editor which is assigned to each node when the string is loaded (method 2)

PROCEDURE OnSelectionChanged(oXMLGrid)
/*SelectedNode(0).Editor = "edit"*/
RETURN
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oNode
LOCAL oNodes
LOCAL oXMLGrid
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oXMLGrid := XbpActiveXControl():new( oForm:drawingArea )
oXMLGrid:CLSID := "Exontrol.XMLGrid.1" /*{AC7F976E-48C3-4B0B-B952-45D92DFE7F3E}*/
oXMLGrid:create(,, {10,60},{610,370} )
oXMLGrid:SelectionChanged := {|| OnSelectionChanged(oXMLGrid)} /*Fires when the user changes the selection.*/
oXMLGrid:Editors():Add("edit",1/*EditType*/)
oXMLGrid:Nodes():Add("Parent 1")
oNode := oXMLGrid:Nodes():Add("Parent 2")
oNode:Picture := "pic1"
oNodes := oNode:Nodes()
oNodes:Add("Child <b>1"):Value := 100
oNodes:Add("Child <b>2"):Value := 102
oNodes:Add("Child <b>3"):Value := 103
oNode:Expanded := .T.
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
51
|
How can I specify a default editor

PROCEDURE OnAddNode(oXMLGrid,NewNode)
/*NewNode.Editor = "calc"*/
RETURN
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oXMLGrid
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oXMLGrid := XbpActiveXControl():new( oForm:drawingArea )
oXMLGrid:CLSID := "Exontrol.XMLGrid.1" /*{AC7F976E-48C3-4B0B-B952-45D92DFE7F3E}*/
oXMLGrid:create(,, {10,60},{610,370} )
oXMLGrid:AddNode := {|NewNode| OnAddNode(oXMLGrid,NewNode)} /*Occurs when a node is added to the nodes collection.*/
oXMLGrid:Editors():Add("calc",20/*CalculatorType*/)
oXMLGrid:LoadXML("<numbers><first_number>100</first_number><second_number>200</second_number></numbers>")
oXMLGrid:ExpandAll()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
50
|
Is there a way to define a default Editor which is assigned to each node when the string is loaded (method 1)

PROCEDURE OnAddNode(oXMLGrid,NewNode)
/*NewNode.Editor = "edit"*/
RETURN
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oXMLGrid
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oXMLGrid := XbpActiveXControl():new( oForm:drawingArea )
oXMLGrid:CLSID := "Exontrol.XMLGrid.1" /*{AC7F976E-48C3-4B0B-B952-45D92DFE7F3E}*/
oXMLGrid:create(,, {10,60},{610,370} )
oXMLGrid:AddNode := {|NewNode| OnAddNode(oXMLGrid,NewNode)} /*Occurs when a node is added to the nodes collection.*/
oXMLGrid:SetProperty("SelForeColorChild",AutomationTranslateColor( GraMakeRGBColor ( { 128,128,128 } ) , .F. ))
oXMLGrid:Editors():Add("edit",1/*EditType*/)
oXMLGrid:LoadXML("http://www.exontrol.net/testing.xml")
oXMLGrid:ExpandAll()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
49
|
How can I assign editors to nodes

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oEditor,oEditor1,oEditor2
LOCAL oEditors
LOCAL oNode
LOCAL oNodes
LOCAL oXMLGrid
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oXMLGrid := XbpActiveXControl():new( oForm:drawingArea )
oXMLGrid:CLSID := "Exontrol.XMLGrid.1" /*{AC7F976E-48C3-4B0B-B952-45D92DFE7F3E}*/
oXMLGrid:create(,, {10,60},{610,370} )
oXMLGrid:BeginUpdate()
oXMLGrid:AllowDuplicateEntries := .T.
oEditors := oXMLGrid:Editors()
oEditor := oEditors:Add("name",1/*EditType*/)
oEditor:Appearance := 4/*EtchedApp*/
oEditor1 := oEditors:Add("phone",8/*MaskType*/)
oEditor1:Mask := "(###)-######"
oEditor1:Appearance := 4/*EtchedApp*/
oEditor2 := oEditors:Add("date",7/*DateType*/)
oEditor2:Appearance := 4/*EtchedApp*/
oNode := oXMLGrid:Nodes():Add("Customer")
oNode:Picture := "mihai"
oNodes := oNode:Nodes()
oNodes:Add("Name","Mihai Filimon"):Editor := "name"
oNodes:Add("Phone","(0744)-845287"):Editor := "phone"
oNodes:Add("BirthDay","12/31/1971"):Editor := "date"
oNode:Expanded := .T.
oXMLGrid:SetProperty("LevelWidth",0,82)
oXMLGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
48
|
I use LoadXml, then inside onNodeAdd event, I add the picture. But the picture doesnt show up. Does the picture have to be a bitmap

PROCEDURE OnAddNode(oXMLGrid,NewNode)
/*NewNode.Picture = LoadPicture("c:\exontrol\images\colorize.gif")*/
RETURN
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oNode
LOCAL oNodes
LOCAL oXMLGrid
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oXMLGrid := XbpActiveXControl():new( oForm:drawingArea )
oXMLGrid:CLSID := "Exontrol.XMLGrid.1" /*{AC7F976E-48C3-4B0B-B952-45D92DFE7F3E}*/
oXMLGrid:create(,, {10,60},{610,370} )
oXMLGrid:AddNode := {|NewNode| OnAddNode(oXMLGrid,NewNode)} /*Occurs when a node is added to the nodes collection.*/
oXMLGrid:Nodes():Add("Parent 1")
oNode := oXMLGrid:Nodes():Add("Parent 2")
oNodes := oNode:Nodes()
oNodes:Add("Child <b>1"):Value := 100
oNodes:Add("Child <b>2"):Value := 102
oNodes:Add("Child <b>3"):Value := 103
oNode:Expanded := .T.
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
47
|
How can I assign a picture to a node ( method 3 )

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oNode
LOCAL oNodes
LOCAL oXMLGrid
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oXMLGrid := XbpActiveXControl():new( oForm:drawingArea )
oXMLGrid:CLSID := "Exontrol.XMLGrid.1" /*{AC7F976E-48C3-4B0B-B952-45D92DFE7F3E}*/
oXMLGrid:create(,, {10,60},{610,370} )
oXMLGrid:SetProperty("HTMLPicture","pic1","c:\exontrol\images\zipdisk.gif")
oXMLGrid:Nodes():Add("Parent 1")
oNode := oXMLGrid:Nodes():Add("Parent 2")
oNode:Picture := "pic1"
oNodes := oNode:Nodes()
oNodes:Add("Child <b>1"):Value := 100
oNodes:Add("Child <b>2"):Value := 102
oNodes:Add("Child <b>3"):Value := 103
oNode:Expanded := .T.
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
46
|
How can I save the control's content using a different version of XML DOM
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL d
LOCAL oXMLGrid
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oXMLGrid := XbpActiveXControl():new( oForm:drawingArea )
oXMLGrid:CLSID := "Exontrol.XMLGrid.1" /*{AC7F976E-48C3-4B0B-B952-45D92DFE7F3E}*/
oXMLGrid:create(,, {10,60},{610,370} )
d := CreateObject("Msxml2.DOMDocument.3.0")
oXMLGrid:LoadXML("<customer><first_name>Joe</first_name><last_name>Smith</last_name></customer>")
oXMLGrid:SaveXML(d)
DevOut( d:xml() )
oXMLGrid:ExpandAll()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
45
|
How can I load the control's content using a different version of XML DOM
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL d
LOCAL oXMLGrid
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oXMLGrid := XbpActiveXControl():new( oForm:drawingArea )
oXMLGrid:CLSID := "Exontrol.XMLGrid.1" /*{AC7F976E-48C3-4B0B-B952-45D92DFE7F3E}*/
oXMLGrid:create(,, {10,60},{610,370} )
d := CreateObject("Msxml2.DOMDocument.3.0")
d:async := .F.
d:loadXML("<customer><first_name>Joe</first_name><last_name>Smith</last_name></customer>")
oXMLGrid:LoadXML(d)
oXMLGrid:ExpandAll()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
44
|
How can I get the XML string from the control's content
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oNode,oNode1,oNode2
LOCAL d
LOCAL oXMLGrid
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oXMLGrid := XbpActiveXControl():new( oForm:drawingArea )
oXMLGrid:CLSID := "Exontrol.XMLGrid.1" /*{AC7F976E-48C3-4B0B-B952-45D92DFE7F3E}*/
oXMLGrid:create(,, {10,60},{610,370} )
d := CreateObject("MSXML.DOMDocument")
oNode := oXMLGrid:Nodes():Add("Root")
oNode:Image := 1
oNode1 := oNode:Nodes():Add("Child1")
oNode1:Image := 2
oNode1:Value := "Value <b>1"
oNode2 := oNode:Nodes():Add("Child2")
oNode2:Image := 2
oNode2:Value := "Value <b>2"
oXMLGrid:ExpandAll()
oXMLGrid:ResizeToFit(0)
oXMLGrid:SaveXML(d)
DevOut( d:xml() )
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
43
|
How can I load the control from a XML DOM object

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL d
LOCAL oIXMLDOMNamedNodeMap
LOCAL oXMLGrid
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oXMLGrid := XbpActiveXControl():new( oForm:drawingArea )
oXMLGrid:CLSID := "Exontrol.XMLGrid.1" /*{AC7F976E-48C3-4B0B-B952-45D92DFE7F3E}*/
oXMLGrid:create(,, {10,60},{610,370} )
d := CreateObject("Msxml2.DOMDocument.3.0")
d:appendChild(d:createElement("Root"))
oIXMLDOMNamedNodeMap := d:childNodes():item(0):attributes()
oIXMLDOMNamedNodeMap:setNamedItem(d:createAttribute("Item-1"))
oIXMLDOMNamedNodeMap:item(0):value := "value <b>1"
oIXMLDOMNamedNodeMap:setNamedItem(d:createAttribute("Item-2"))
oIXMLDOMNamedNodeMap:item(1):value := "value <b>2"
oXMLGrid:LoadXML(d)
oXMLGrid:ExpandAll()
oXMLGrid:ResizeToFit(0)
DevOut( d:xml() )
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
42
|
How can I load XML from http or URL

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oXMLGrid
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oXMLGrid := XbpActiveXControl():new( oForm:drawingArea )
oXMLGrid:CLSID := "Exontrol.XMLGrid.1" /*{AC7F976E-48C3-4B0B-B952-45D92DFE7F3E}*/
oXMLGrid:create(,, {10,60},{610,370} )
oXMLGrid:LoadXML("http://www.exontrol.net/testing.xml")
oXMLGrid:ExpandAll()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
41
|
How can I load XML from a supplied string

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oXMLGrid
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oXMLGrid := XbpActiveXControl():new( oForm:drawingArea )
oXMLGrid:CLSID := "Exontrol.XMLGrid.1" /*{AC7F976E-48C3-4B0B-B952-45D92DFE7F3E}*/
oXMLGrid:create(,, {10,60},{610,370} )
oXMLGrid:LoadXML("<customer><first_name>Joe</first_name><last_name>Smith</last_name></customer>")
oXMLGrid:ExpandAll()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
40
|
How do I programatically search for a node
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oNode
LOCAL oNodes
LOCAL oXMLGrid
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oXMLGrid := XbpActiveXControl():new( oForm:drawingArea )
oXMLGrid:CLSID := "Exontrol.XMLGrid.1" /*{AC7F976E-48C3-4B0B-B952-45D92DFE7F3E}*/
oXMLGrid:create(,, {10,60},{610,370} )
oXMLGrid:Nodes():Add("Parent 1")
oNode := oXMLGrid:Nodes():Add("Parent 2")
oNodes := oNode:Nodes()
oNodes:Add("Child <b>1"):Value := 100
oNodes:Add("Child <b>2"):Value := 102
oXMLGrid:Nodes():Add("Parent 3")
oXMLGrid:Search("Child 1",-1):Selected := .T.
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
39
|
How can I show the control's selection using your EBN technology

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oAppearance
LOCAL oNode,oNode1
LOCAL oNodes,oNodes1
LOCAL oXMLGrid
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oXMLGrid := XbpActiveXControl():new( oForm:drawingArea )
oXMLGrid:CLSID := "Exontrol.XMLGrid.1" /*{AC7F976E-48C3-4B0B-B952-45D92DFE7F3E}*/
oXMLGrid:create(,, {10,60},{610,370} )
oXMLGrid:BeginUpdate()
oAppearance := oXMLGrid:VisualAppearance()
oAppearance:Add(1,"gBFLBCJwBAEHhEJAAChABUgIg6AADACAxRDQNABQKAAzQFAYaBiG6GAAGIYxWgmFgAQhFcZQSKUOQTDKNYykCIRSDUJYkSZEIyjAIoBQSGYZAIkGY4ah2A42RhNETyHDkUx7E6EZToCA6ChGOozThOEgUOAsExRIaJJ6oSTJAjGR46UjHdTwHCNHyfEAZZSqSaqLhuEYuQLZNZ1dL9KzFFqyIRQaK0IgmaI5VrFVqTPSQASLIKWKKjObIarOA53XjFd51DSFBTuGIYaZxGZYeqmeZdT7Xcr2fZUdw2EinIRFeqsHglbQcaBpegXVjNWw5N7EMDuKCdLACdYDaLlWiwHpQAZ7Vi+KgkXDcBwCUIhYQAGy4MAGcwvO7ed70HgOGoBxhmMZxilmW48Eca4TmmYw6jELYFkYB5MjubZ5F2fBWjeKZGjeYIkF4C4/DOPZrm0QhBBCEoBiSRh0B0RwhhQMRIAGYQtAMEIElgFQaEUUAwiECR6FyZAgBgRZOgE" +;
"KZfAkAZDjYGIGiGGBuB6BxiAgcgigeYg4gYJIJmIaIkm0PpikiNJ1guYwDjYMoMk6GJWDaDZjFOIg6g6Y4zioPoPk8KQGEIPgkEkFJ+hGZIIiIJYSmSKQ2CqE4kkkPhShQZRJEIVoUmUeRWFiFplikdhZheZZJgIXoYGIGI2GaCwOGmJhqDOZpJjSOobmcAoWHKHJJmmVh2CeZ4JmSIoemeSZ2H6H5nnKBoCiCZxpliHYhmiCgOgMLQokoNJJiOaQDHKEokmISQiEmGQmDoZhiiaaYKHKGonGoCh+iKJ4qEiKJ5imaoDGqKoqksao2i4KQrAqRoxh+SpqlaNgwiuCpkliLprkOCo+i+ThLAaQoOA6GJ+4gbIIn4PIOg4Ow2k6L5rnMVpSjSS57FaVgqm2CxmHmNptkKNpejeZpbgYbIyCYc5uiWKJqBuHpqjobpLiKbo6mSM4unKPJLjuVp2CgL4LmSKo+m+ShChCNAwAOUwCkCTx8BcBpAnAOQKEIPB" +;
"wkwNwOkMDwMEcEpEnETBXBaRQwnwZJxkKJAYkIMIRGQXBwnIN5yEyFJFkmcoJk8KocgmTI3C4LAzJrSpPlyVw2jwM4LjcOY7nOLJ3DyFQOF0BwxiyKwDCMRpRmyA5bEqUpwgwCwihCMR9EcUpUnUTRXFaVZ1FyCwegudI9HcSoaiaIwDGKWNuCCMpZnaAwzGqWpzj2Nw+luM59kKZ4LGqHkOIpRdieD2M4eorwPDZAsLEX48AOAPAKMEeAmhbD1F6OsY4fwKjFHaHwN4HQ3ATHMJ9SA4wTjnVIO4LYfwai4HmHQewRAvh0AoB4DYlALi9BYJERqewnhVGqPUTob2OD2A6I8Mo2RwvUCCCINgEwkiVG6PcQoH21iUH8A8QocQMjnDuI0cY9h8gFBaCMeYPBzidHMMQSInAzBeD0J4V4fxvjsDIG8WoiQ0D9BSHsKgdhPgPGKPEfgnwXjNGsOofgPh5iDDAN8KI5gzh+A+I4RAUgoCzFSG8fY/wPjBFSP0" +;
"f4nhKBkHkFwXYlw8hjHyOgHI1QhDiHAEMRQeBBCmAMEAaoFBQCGBIBEQQUASB3FoLEFYBRuBbG6HQV4gR5jBGwD0A44QCAhEGM8WIghZAmDMKQQozAUiFCgKkH4rxKjyBWOEQhsx4DOA0CsYoeBoBhGAOUQQjQaB6B4JUZQiwwAMCCHId4JRWiPCsCoWQxwhj8D+IsbIeweAnEKAsUQghbBWGiokXgdxIDtGwMsRYghxBWAYLQM4QAXiHGoGEQgURHAyCMFgZoGRvh0CKFUCIrQpiyBCLMDY4xCASEEEsMobBfhRB6AMYoCxrh3GSP0SoigsCdA+OQAggBHixHQFEY4hguDLFGOsaoehWjeCMA0EI2QRjkEIJARi7w+g3GONwdYGBKBbEWKMEQLxkg2E+CccoBBQiUCkI4KQSgshNBSOUIgqRKhMDkDMXwJxuDfBCCAe4jRBjmBEKwconAajlGILkLQawmjHAYMcPILxu0fEwFMBwYgmAnBMOQYwtBki" +;
"ZCYJUSQsRMhmHkFscgPAwgyFcFAJImAYDiE0DwTojAZhSDcE0bIvQbjnAIOETgUhWjyCUJgaQ1hyiMFiHkGYrg7A8EyNMBIJBZjqE4HMRQawisaAuJ0AgnhPBzHcH4J42VoDnBGOMUAFAHTBCyOsEw5hoD6FALQFwhgoDaA6EMdAhQIiiCaEERAyRUjuBkBYWQLRRB0DcI4KI2gehHHSAQfoYRaBYmIHoGQiwUgNBSKUKgrhLBSG0CEJA5heglDQNQTgfRfDqDaE0dIxQcinOEJ4KaZwnjqWqKgGguhLBUBUI0KI6llimAmNoTIURCiqHKOoJoURVBVCdm0LQjwogpC6FYVYVQ2j3BICoJISRVB7EsKsSojhZBWC0M0LI6RiDeFaBUV1FwdC9CYGsAAvw5DzCULoK4Wh2hdHWMUPIrwqjuF8FcbQ/QvjaDaG0WAVRPDACwFsBoYR1i1DeKkRoHRYizDWBEMY7BCiR0KE4Xo2AdgtCwOwUomRZhMAaL0B" +;
"IawegmHYGsGosw7COGkFoLYTQ0jsHKEkWoFhXDWCyEsHYZx0C9FCB8WwthtBbC2G0NYahGi3FuFYdwuhtDxBaCYYwDRghJAiBYcQXAtiNDiO6+ouQrguHMFwbYnb+B9F4LoKwFh0BdC2K0OsKgBizGsP4RY3AIiDDgO4Yo4ReBXEcPILwWxmh5GiIURAvQLiuHsF4bYqw7CtEKE0XY1xBD3C+FsdofR3jFyEFccw/gvjbGOHwFw5R5C4BGP8AQNxmN5HgEYBIwQsAvAMGAbgHRBjwEMBEYQNx9gKC8MwEohR4DGAyMEVAwh2jcAYAcQIcBrAhGIFgR4EgxBcBfFsIsaxsCvAt1wHIfAtA9G8MAQY/wLDjC4G0Ro8RjA5GCBcQ4HQxjcD7woPwAQ0DqHOBkZw/BGiRHkEYJIyQsgvBMGQbgnRJjyEMEkY4+QngcHKBwVs5xjBHDSHgOwixyBMASJYOYBgwjMCyI8GQZBmCpEyPEVwZdECtEGGUXgYBoiy" +;
"HgP8ZomRng6DOFwdonR5huA0M8DI7wfBmC4N0SAmgYBhhoAsBnA7ONgGhQh6AjBEhogtAXgjA0BugOhRh5h3BIhnBNAfglA0gugWhQgsAbAuBUhdAEAwh0AmgXhTh6gDBQhqM4giB0gWgmhNBagTBUhqgkgLgmBzB4hIhTgaB7BVhrAtBnrSgug2AfAZBnBbhrgtB3gpA1BugAhVh6APACBrhNgHgxA2Aug8r0AbBkhsgphZgvgkhegwhAgShPBot4gng1A2guhWhah7BjBshtgtg3g3A2hmhLhbh6BTBupkhHg5POBNgih7A8B/huBdhXg7A3Buhuhdh7hDB4hGg9Avg8oiB2heh7gLBzhpg9gDg6g3hGh+hfh8ADgAhvAdhpu/gvAGhdg7hpgjhBAsBnu0hvAOhhh8BDgIuDgng3gSAggXhihyBvgFjmgphHA4hvAevggDgQhtBUgLhFhEg/AZgCHaARByguBXhLA5BvAuhdg8gTgMBRB+A0A/hkgn" +;
"Q8h8hjgchzguB3r9hvA+hnh9ADgguNgHhOg5B/AghogdAjgkh0guB+gqA5AvAnAYgYhPglh1AugnhVA6gvBWhpA9AbgPh1B+g3hXA5g/BNhmBVA3gaB1hehHhZA7AvBmhsh9Oqh2gOhXhbA7AfBfhkhOApgUBTBNhBhdA7gugrgIBTA/g7B3guh3glgYSFBvhqggBwh4Auh+AmAjhHgGhwh+AjhEh4gvAXhjA8BvgOhxh+BDvZAvAVAhAjhEB2hyB+BjhMh5gvA3hnA8hvgeAUAsg4BZh6AkBaBABACAg")
oAppearance:Add(2,"gBFLBCJwBAEHhEJAEGg4BFIDg6AADACAxRDAMgBQKAAzQFAYahsGCGAAGIYxUgmFgAQhFcZQSKUOQTDKMIziYBYfgkMIgSbJUgDGAkRRdDSOYDmGQYDiCIoRShOMIjHLUXxtDaIZwhEAoJb+RgAUY/cTzaAEUwHHiTKInaCQGhsCYJUJAdRURQ9EwvCIZBpEWwLChENQwWLCNj2TScBwjCyqbale45ViqdoDU8lORLUi+M4zSBPcZVTRtGShPDBKTjMKKYgkG4lVpRNa0PC1GTzQ6mazkKQLRADDIDVbAeL3LiMBy9LyLLItSIrFqqaJma7ccgRDj4AY7Ua+czufBZbozOqDYzAey7TDWLRXFDNIzzTgQAyHHrETbHGqzFxMAEa5YGqYpVj2HwzDuQ5oHKIQgggSRAlIYw6B0ThGFGDIAFUDAhBMfZRiGNAkFECZnG4IQdneJwmnsSQrGAAhWAIJBJBIQgFCQIBiEIAglgqYo0i4V4MEgRI9gSToYFS" +;
"b4Fk6Y4+BmBZhFOJgTC8TBogQAArgqco4muCZOkOMJtgmYpIjYKg7GKE4uCUK4AAKKg2DwI4DiCZw5k6KJ2D6D4OHiag4DwIxiiQAArAqMosnEPBPAOIhOg+DozjIJ4PGSY4iEwPAkhKLhHUUSQsnKFCnkYU9MjORhcCsAAIACLQ8iaSJ6FKC5jJoaobA8KYoACCRKnmMJzhuDpZnSboMCKGJ4nMPIPDmYAACwKIDk6CoLCeU40m6I5oliMoKDyaICokLIpgoThviOKJoGYf4KmUKhMjMLJLCAAojCyaYoiYGoGmqM46CkOwPEoKonAACxKlSdItmiWBeBeDgrioNo3D0KxSlAAAtgsUpYnUPRPEoco8hCa+T40SxbBRj5tEsHJ1i6JhbGYS4ug8awelQLZAAKZI5C4DxrhYQ9ehmUppWiA48nAPRuFKYpiAAC47laZQ9iuKZSgOPotkuFI7C6C4gACPJAm8eQOhOQZoikDp3kCS5AACPoEk8fBGnqQg" +;
"pDOSppD2TxjlyPZD6CfwekQTx5lKP5ImseZTCAL5MAMhZKEwA5jC6SIyEqfh0kuD4MjAAAwcwBw0iKDwjlKVozmyChPDSThyiMDxGk6awbB6XY1iwfQInkPg0GMEAADEdRDmcVovm8ex3FkPJrH0WJ5w4UAAkcMYMHOaxmjGTxNGcao1jWbYMkcAAMk2RJ7lycxMgMdpEHMTZMnuXBM7uMAOAG1jAED8HAQ47wGjDHgPwEI+RggcGOAmAAqxDj8DoHMTY3BUi7GWPOCAKg3jIBOEIXggBAEBA")
oXMLGrid:ShowFocusRect := .F.
oXMLGrid:SetProperty("SelBackColor",0x1000000)
oXMLGrid:SetProperty("SelForeColor",-1)
oXMLGrid:SetProperty("SelBackColorCollapse",0x2000000)
oXMLGrid:SetProperty("SelBackColorChild",-1)
oXMLGrid:SetProperty("SelForeColorChild",-1)
oXMLGrid:AllowDuplicateEntries := .T.
oXMLGrid:Nodes():Add("Parent 1")
oNode := oXMLGrid:Nodes():Add("Parent 2")
oNodes := oNode:Nodes()
oNodes:Add("Child <b>1"):Value := 100
oNodes:Add("Child <b>2"):Value := 102
oNode:Expanded := .T.
oNode:Selected := .T.
oNode1 := oXMLGrid:Nodes():Add("Parent 3")
oNodes1 := oNode1:Nodes()
oNodes1:Add("Child <b>1"):Value := 103
oNodes1:Add("Child <b>2"):Value := 104
oXMLGrid:Nodes():Add("Parent 4")
oXMLGrid:EndUpdate()
oXMLGrid:SetProperty("LevelWidth",0,96)
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
38
|
Is it possible to assing a picture to a node (method 2)

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oNode,oNode1
LOCAL oNodes,oNodes1
LOCAL oXMLGrid
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oXMLGrid := XbpActiveXControl():new( oForm:drawingArea )
oXMLGrid:CLSID := "Exontrol.XMLGrid.1" /*{AC7F976E-48C3-4B0B-B952-45D92DFE7F3E}*/
oXMLGrid:create(,, {10,60},{610,370} )
oXMLGrid:BeginUpdate()
oXMLGrid:SetProperty("HTMLPicture","pic1","c:\exontrol\images\zipdisk.gif")
oXMLGrid:AlignChildContent := .T.
oXMLGrid:AllowDuplicateEntries := .T.
oXMLGrid:SelBackMode := 1/*exTransparent*/
oXMLGrid:Nodes():Add("Parent 1")
oNode := oXMLGrid:Nodes():Add("Parent 2")
oNodes := oNode:Nodes()
oNodes:Add("Child <b>1"):Value := 100
oNodes:Add("Child <b>2"):Value := 102
oNode:SetProperty("BackgroundExt",-1/*exExpandBackgroundExtState*/,"left[18],client[text=`<img>pic1</img>`,align=0x20]")
oNode:Expanded := .T.
oNode1 := oXMLGrid:Nodes():Add("Parent 3")
oNodes1 := oNode1:Nodes()
oNodes1:Add("Child <b>1"):Value := 103
oNodes1:Add("Child <b>2"):Value := 104
oNode1:SetProperty("BackgroundExt",-1/*exExpandBackgroundExtState*/,"left[18],client[text=`<img>pic1</img>`,align=0x20]")
oNode1:SetProperty("BackgroundExt",0/*exCollapseBackgroundExtState*/,"right[4],client[text=`<img>pic1:19</img>`,align=0x12]")
oXMLGrid:Nodes():Add("Parent 4")
oXMLGrid:EndUpdate()
oXMLGrid:SetProperty("LevelWidth",0,96)
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
37
|
Is it possible to assing a picture to a node (method 1)

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oNode
LOCAL oNodes
LOCAL oXMLGrid
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oXMLGrid := XbpActiveXControl():new( oForm:drawingArea )
oXMLGrid:CLSID := "Exontrol.XMLGrid.1" /*{AC7F976E-48C3-4B0B-B952-45D92DFE7F3E}*/
oXMLGrid:create(,, {10,60},{610,370} )
oXMLGrid:BeginUpdate()
oXMLGrid:SetProperty("HTMLPicture","pic1","c:\exontrol\images\zipdisk.gif")
oXMLGrid:AlignChildContent := .T.
oXMLGrid:AllowDuplicateEntries := .T.
oXMLGrid:SelBackMode := 1/*exTransparent*/
oXMLGrid:Nodes():Add("Parent 1")
oNode := oXMLGrid:Nodes():Add("Parent 2")
oNode:Picture := oXMLGrid:HTMLPicture("pic1")
oNodes := oNode:Nodes()
oNodes:Add("Child <b>1"):Value := 100
oNodes:Add("Child <b>2"):Value := 102
oNodes:Add("Child <b>3"):Value := 103
oNode:Expanded := .T.
oXMLGrid:Nodes():Add("Parent 3")
oXMLGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
36
|
I get "The key already exists" when adding a new node. What can I do ( method 2 )
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oNodes
LOCAL oXMLGrid
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oXMLGrid := XbpActiveXControl():new( oForm:drawingArea )
oXMLGrid:CLSID := "Exontrol.XMLGrid.1" /*{AC7F976E-48C3-4B0B-B952-45D92DFE7F3E}*/
oXMLGrid:create(,, {10,60},{610,370} )
oXMLGrid:BeginUpdate()
oNodes := oXMLGrid:Nodes()
oNodes:Add("Item",,"Key1")
oNodes:Add("Item",,"Key2")
oNodes:Add("Item",,"Key3")
oXMLGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
35
|
I get "The key already exists" when adding a new node. What can I do ( method 1 )
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oNodes
LOCAL oXMLGrid
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oXMLGrid := XbpActiveXControl():new( oForm:drawingArea )
oXMLGrid:CLSID := "Exontrol.XMLGrid.1" /*{AC7F976E-48C3-4B0B-B952-45D92DFE7F3E}*/
oXMLGrid:create(,, {10,60},{610,370} )
oXMLGrid:BeginUpdate()
oXMLGrid:AllowDuplicateEntries := .T.
oNodes := oXMLGrid:Nodes()
oNodes:Add("Item")
oNodes:Add("Item")
oNodes:Add("Item")
oXMLGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
34
|
How can I mark the node only, without its child

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oNode
LOCAL oNodes
LOCAL oXMLGrid
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oXMLGrid := XbpActiveXControl():new( oForm:drawingArea )
oXMLGrid:CLSID := "Exontrol.XMLGrid.1" /*{AC7F976E-48C3-4B0B-B952-45D92DFE7F3E}*/
oXMLGrid:create(,, {10,60},{610,370} )
oXMLGrid:BeginUpdate()
oXMLGrid:AlignChildContent := .T.
oXMLGrid:AllowDuplicateEntries := .T.
oXMLGrid:SelBackMode := 1/*exTransparent*/
oXMLGrid:Nodes():Add("Parent 1")
oNode := oXMLGrid:Nodes():Add("Parent 2")
oNodes := oNode:Nodes()
oNodes:Add("Child <b>1"):Value := 100
oNodes:Add("Child <b>2"):Value := 102
oNode:SetProperty("BackgroundExt",-1/*exExpandBackgroundExtState*/,"top[20,frame=RGB(0,0,0),framethick]")
oNode:SetProperty("BackgroundExt",0/*exCollapseBackgroundExtState*/,oNode:BackgroundExt(-1/*exExpandBackgroundExtState*/))
oNode:Expanded := .T.
oXMLGrid:Nodes():Add("Parent 3")
oXMLGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
33
|
How can I mark the entire node

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oNode
LOCAL oNodes
LOCAL oXMLGrid
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oXMLGrid := XbpActiveXControl():new( oForm:drawingArea )
oXMLGrid:CLSID := "Exontrol.XMLGrid.1" /*{AC7F976E-48C3-4B0B-B952-45D92DFE7F3E}*/
oXMLGrid:create(,, {10,60},{610,370} )
oXMLGrid:BeginUpdate()
oXMLGrid:AlignChildContent := .T.
oXMLGrid:AllowDuplicateEntries := .T.
oXMLGrid:SelBackMode := 1/*exTransparent*/
oXMLGrid:Nodes():Add("Parent 1")
oNode := oXMLGrid:Nodes():Add("Parent 2")
oNodes := oNode:Nodes()
oNodes:Add("Child <b>1"):Value := 100
oNodes:Add("Child <b>2"):Value := 102
oNode:SetProperty("BackgroundExt",-1/*exExpandBackgroundExtState*/,"[frame=RGB(0,0,0),framethick]")
oNode:SetProperty("BackgroundExt",0/*exCollapseBackgroundExtState*/,oNode:BackgroundExt(-1/*exExpandBackgroundExtState*/))
oNode:Expanded := .T.
oXMLGrid:Nodes():Add("Parent 3")
oXMLGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
32
|
How can I specify aditional information for a node, when it is expanded

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oNode,oNode1
LOCAL oNodes
LOCAL oXMLGrid
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oXMLGrid := XbpActiveXControl():new( oForm:drawingArea )
oXMLGrid:CLSID := "Exontrol.XMLGrid.1" /*{AC7F976E-48C3-4B0B-B952-45D92DFE7F3E}*/
oXMLGrid:create(,, {10,60},{610,370} )
oXMLGrid:BeginUpdate()
oXMLGrid:AlignChildContent := .T.
oXMLGrid:SelBackMode := 1/*exTransparent*/
oNode := oXMLGrid:Nodes():Add("Parent")
oNodes := oNode:Nodes()
oNode1 := oNodes:Add("Child <b>1")
oNode1:Value := 100
oNode1:SetProperty("BackgroundExt",0/*exCollapseBackgroundExtState*/,"top[2],bottom[2],left[2],right[2],client[pattern=6,frame]")
oNodes:Add("Child <b>2"):Value := 102
oNode:SetProperty("BackgroundExt",-1/*exExpandBackgroundExtState*/,"top[4],bottom[4],left[17],right[4],client[text=`<font ;6><fgcolor A0A0A0>Count: 2`,align=0x20]")
oNode:SetProperty("BackgroundExt",0/*exCollapseBackgroundExtState*/,"top[4],bottom[4],left[4],right[4],client[text=`<font ;6><fgcolor A0A0A0>Count: 2`,align=0x02]")
oNode:Expanded := .T.
oXMLGrid:ResizeToFit(0)
oXMLGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
31
|
Is it possible to show aditional information for a node

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oNode
LOCAL oNodes
LOCAL oXMLGrid
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oXMLGrid := XbpActiveXControl():new( oForm:drawingArea )
oXMLGrid:CLSID := "Exontrol.XMLGrid.1" /*{AC7F976E-48C3-4B0B-B952-45D92DFE7F3E}*/
oXMLGrid:create(,, {10,60},{610,370} )
oXMLGrid:BeginUpdate()
oXMLGrid:AlignChildContent := .T.
oXMLGrid:SelBackMode := 1/*exTransparent*/
oNode := oXMLGrid:Nodes():Add("Parent")
oNodes := oNode:Nodes()
oNodes:Add("Child <b>1"):Value := 100
oNodes:Add("Child <b>2"):Value := 102
oNode:SetProperty("BackgroundExt",-1/*exExpandBackgroundExtState*/,"top[4],bottom[4],left[4],right[4],client[text=`<font ;6><fgcolor A0A0A0>Count: 2`,align=0x02]")
oNode:SetProperty("BackgroundExt",0/*exCollapseBackgroundExtState*/,oNode:BackgroundExt(-1/*exExpandBackgroundExtState*/))
oNode:Expanded := .T.
oXMLGrid:ResizeToFit(0)
oXMLGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
30
|
How can I hide the expanding bars under each parent node (method 2)

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oNode,oNode1,oNode2
LOCAL oNodes,oNodes1,oNodes2
LOCAL oXMLGrid
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oXMLGrid := XbpActiveXControl():new( oForm:drawingArea )
oXMLGrid:CLSID := "Exontrol.XMLGrid.1" /*{AC7F976E-48C3-4B0B-B952-45D92DFE7F3E}*/
oXMLGrid:create(,, {10,60},{610,370} )
oXMLGrid:BeginUpdate()
oXMLGrid:SetProperty("Background",0/*exExpandButtonUp*/,-1)
oXMLGrid:SetProperty("Background",1/*exExpandButtonDown*/,-1)
oXMLGrid:AlignChildContent := .T.
oNode := oXMLGrid:Nodes():Add("Parent")
oNodes := oNode:Nodes()
oNodes:Add("Child <b>1"):Value := 100
oNode1 := oNodes:Add("Child <b>2")
oNodes1 := oNode1:Nodes()
oNodes1:Add("Sub Child <b>2.1"):Value := 101
oNode2 := oNodes1:Add("Sub Child <b>2.2")
oNodes2 := oNode2:Nodes()
oNodes2:Add("Sub Child <b>2.1.1"):Value := 101
oNodes2:Add("Sub Child <b>2.2.2"):Value := 102
oNode2:Expanded := .F.
oNode1:Expanded := .T.
oNode:Selected := .T.
oNode:Expanded := .T.
oXMLGrid:SetProperty("LevelWidth",0,64)
oXMLGrid:SetProperty("LevelWidth",1,96)
oXMLGrid:SetProperty("LevelWidth",2,96)
oXMLGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
29
|
How can I align the child nodes

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oNode,oNode1
LOCAL oNodes,oNodes1,oNodes2
LOCAL oXMLGrid
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oXMLGrid := XbpActiveXControl():new( oForm:drawingArea )
oXMLGrid:CLSID := "Exontrol.XMLGrid.1" /*{AC7F976E-48C3-4B0B-B952-45D92DFE7F3E}*/
oXMLGrid:create(,, {10,60},{610,370} )
oXMLGrid:AlignChildContent := .T.
oNodes := oXMLGrid:Nodes()
oNodes:Add("Parent A"):Value := 100
oNode := oNodes:Add("Parent B")
oNodes1 := oNode:Nodes()
oNodes1:Add("Child<font ;6><off -4><b>1"):Value := 101
oNodes1:Add("Child<font ;6><off -4><b>2"):Value := 102
oNode1 := oNodes1:Add("Child<font ;6><off -4><b>3")
oNodes2 := oNode1:Nodes()
oNodes2:Add("Node<font ;6><off -4><b>1"):Value := 103
oNodes2:Add("Node<font ;6><off -4><b>2"):Value := 104
oNode:Expanded := .T.
oNode:Selected := .T.
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
28
|
How do I change the control's visual appearance using the UI Visual Designer
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oNode,oNode1
LOCAL oNodes,oNodes1,oNodes2
LOCAL oXMLGrid
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oXMLGrid := XbpActiveXControl():new( oForm:drawingArea )
oXMLGrid:CLSID := "Exontrol.XMLGrid.1" /*{AC7F976E-48C3-4B0B-B952-45D92DFE7F3E}*/
oXMLGrid:create(,, {10,60},{610,370} )
oXMLGrid:BeginUpdate()
oXMLGrid:AllowDuplicateEntries := .T.
oXMLGrid:ShowFocusRect := .F.
oXMLGrid:SetProperty("GridLinesColor",AutomationTranslateColor( GraMakeRGBColor ( { 128,128,128 } ) , .F. ))
oNodes := oXMLGrid:Nodes()
oNode := oNodes:Add("Parent A")
oNodes1 := oNode:Nodes()
oNodes1:Add("Child<font ;6><off -4><b>1"):Value := 100
oNodes1:Add("Child<font ;6><off -4><b>2"):Value := 101
oNode1 := oNodes1:Add("Child<font ;6><off -4><b>3")
oNodes2 := oNode1:Nodes()
oNodes2:Add("Node<font ;6><off -4><b>1"):Value := 102
oNodes2:Add("Node<font ;6><off -4><b>2"):Value := 103
oNode:Expanded := .T.
oNode:Selected := .T.
oNodes:Add("Parent B"):Nodes():Add(Transform(1,""))
oXMLGrid:SetProperty("LevelWidth",0,96)
oXMLGrid:VisualDesign := "gBFLBWIgBAEHhEJAEGg6oBUHSTNAgAA8IZ7/jEZf78jUZicKAYOhULB8jAQxhEaGUjAkfhcICIgg4vAUHgRCJ0MkcInQBC01ACAADACAxRDAMgBQKAAzQFAYahmG6GAAGEZhYgmFgAQhFcZQSKUOQTDKMIziaQIRDINQlSTJcQjKKEUQTFiXIyAKKwEgmEQMQiCcbzXIUBxAAqXZZFUaKAg2Qg4TLBAzUTCQbR7HieQghGoqPpWF4gAhCJQGSYZaDqOQyRhkCC4DIITZkRbTUBiRSdWx8AAMIyiGpoJbudjyXg6V5OTblez9P7AMBvS6nKrhcp2PrhTSYWr+Gp5R7IMhyLI8Uw/DS/Yq1GDYIiuOoIQhCUD0LQ9EyXJqnaIzmgXJqFcCR9lUMZYGwFgCnUdJAF4bY3BsfZOnMd4+l0bR2CwHRWAMRpEGEL5WmsRYPCkZZNmeLQ5l0HoHEuJIxmOL50HgBAWgmDpEGGLJWAqbwPg+RZkH+eg9D4Txfhu" +;
"RZeGGdwQH2PQTCmDpFFaKoVB+D5Xmed5pHoX44AWfR+F8UwVnEdpdkMMJKDIChygyIQpAoEh4iIJ5JlgTIcH+XoIFoEwnGEAh6A0KBgiMIICHdRgIlAM4MlKAIcCaIYIjYLoLGKIhqCcMxiTgJQ1A0IxEhsJgJFiPg+guI4yFYOA0GMWIUloNhNGIaIXCUI5CE4SwkEkchMhGCxlBkQIUCQZJZCiFIRk0aQVH8IBmAOBJeDcZJYmyFgnAmAhaGaCxmGmIhqhoZJZgiXYYAgFgCHQOYOFOEITCQCJpCyEoTW6NoACUZJiFCEoekiaZgmSHQXlYEh0DuDpTjCDQiEgchAg0IpJBoXoZiYKYqHaHAimkYguhMIZpAOMh0GEGBmg6JYqmkGowmyK4rAqNoyDsGg2BmCApCuAgNh8agrkqdYkGea4ChGCBAEAoAAJig4YqAm6cp2hKegwoChKIoykKUpinKgqSqKsrCtK4rywLEsizLQtS2LcuC5Louy8L0vi" +;
"/MAwTCMMxDFMYxzIMkyjLMwzTOM80DRNI0zUNU1jXNg2TaNs3DdN43zgOE4jjOQ5TmOc6DpOo6zsO07jvPA8TyPM9D1PY9z4Pk+j7Pw/T+P9AEBQJA0EQVBkHQhCUKQtDENQ5D0QRFEkTRRFUWRdGEZRpG0cR1HkfSBIRFmSc55yQXxfHmB5cEGdp0EyJg7BUWoqFQfY/B8f5PnOd5+H6EAB4mRFD3F2G4cImAygZAKDkIwUBKCFASDwKIExyDsBAE4IQcBUg/AUEIGAaQegFAoDAHIkAgg7EgCkAgaAMjGDSEBcIRx+BVAqMUSKmgKjEHINQJCoQCAUCIqVU6qVVqtA+MdWKs1agRVwrpXivlgLCWIJwUIKQlAyE4KAJQEgZBsEoEoJA5haCKF+JAGYCRhBvA2LINgdglgTEIMEFoMxmiTCoM8GgzQ5hUE2DETYswEgCGAE4Y4MRlByAkGQQIHS3BSDaAQJQkg6AdAWEIKAEx0gdB6BwSYsh9DCkIHE" +;
"bQdgIikCSA5fQpAsgjCYNMOg1QchPGmygGDJhSA9BIHYJwzARgMGiNQeobQThXA6JUQoZQrjWEOGMIwwwYgFBKHQIIsx2hFD6F8WgjB+h0CkDEBACABkwJkAAKc4QANbJ010noOpzNiKKUcpJSymlPGoHIGDawRiBEI24rpXywljLKWcYAWB+AkDCCASYyRSADBgCQRQXQNCOGAOYGQGAOCCCKBESgTgwgjByNQXwbQNiIGcCEEAKAli0BwCQAAURUgRDSOgAU5RPBJFQJMdASAjA2AoIQaAoA6g6CaB4XYSxWDHAMKILAiBlDHAiBoRgLBICbCaK4VIAxEDFFUNcBIfRrBrBULwIA6RwABE4JIdoLxMjMHIBMfA1Q1CdCaKgbwsBIh8CwEIYYAwEjJDWHQLQ9QVgZDyMMZw5QKjJAoIIcwABjhAHWBkBgkABC5EsYsVgtg9gVFwAENotAtCuBiLkAgRwhAAGeOQN48h1BtHeBMTItxijoBgJ0Xw7gai" +;
"9EqOYdwuR2B4AGEcUA4wmj1F0L0OwwhsiyEaNcGwvBuD/AuKMUtlAQglAGEkRg6A6g5AyEYGQBQqC0AAEIEw+wxhDDQEguozxuhIUwHMU4uxRASAGIcNI+A7CZDOOkYQURPimHiDMAgwQ4BUAyAcYI0BGAbjQBAUgHQBifGOHkTYAAgBHDiJgPwnIbD6DyJwE46R1BzV2nkCkNguBdAqEZTIY4ciHHiM4LIngjghEJh0IoJAjBwE+IcRItg/AdHMKwRIIwkCyB4JUEgyRJBEE6CUZI8gmCED+B4Q4ER3BuAmNAPI7A6BIEMLQXYLxOjyHoMMGDIQWDJBmMwOYSRWZXHOEkeQbQJCyGiNMEQGh5ikHYHcZwsxiDvB4M8SY3B+g9CgAYXg2A6hNHmIwDgewOhHHCOANoUQqBlAuEYaQFA+glCOFISgjQVhJGiLMMI1whDLCOFwQQbgpj1ASV8KgdQKhJCmNQaoTWaCbEmzgJwQRjjBGwH4DwRh6hpC2FYW" +;
"ovQ6hcGuJUYofQujXHqO0NwfwPgnDaGEAonwDhxHyBILIcgC38GyNYRomw0jaAsKUUoaAsCHD6I4P25BCBGDkFse4CRzhwC4HexIcxuDXCaMsOqwQQjjDaJ8E4jAmBzC8HcVI6w9BeHuLUeIfRvhXHaPMP4nBjjxHoHkLwBxIj7BaOAc4RgJiFHCBgNwFRDhhw4CURA4QcARHPxEI4ngHB1DGHgdoERHhjEwP4IrGBMgGCaESI42R0iMywOkdwdgyjZEMF8TA5hMieDbfwDIrg5ibHMDkJI6+sDWHCN8UIaBDjGEOKMNAugfCVFIOkTQRhOB3HKCcXotg+joBsO0XIbw1DaGcLEVo6h9DuFqK8NYmhoj8D8GoKYhAGgECziMeYjQPgHESPYPY6wLiWQiG4LYrh0i7HcHsZ3ih2h2GSO4NqewOAKDmBYGIMRjB+HUJwIwgxiDxE4F8DoxQ5AcDeCMY4nhTgcDYFkDwRwMiDlQCYXI+g5CVGgK8IoCQ6Bw" +;
"FuE0A49ADjxHMGwYYiAEEuauAAQrWq8tca6QcnobGwihp3myp5G0BsA3AaG1ghhIheJ+G4J/m5qBKCKDKEKFKGKHKIKJKKKLKMKNKOKPKQKRKSKTAUAlAVBGAABRgRBRB5hoACBTADgeBJgogThoBIBGA2AUgEhQggB1AqBFD9AXgIgMgGgiBbAFogA1AYBYhhA2B7BNBOAHFjhVBthSh7gchWBVB2gBhTiqg5AlhSBfAzgZhIAnhxgqhNA2gZBQg8BggpBxgwgFBiASATgShWgog1haA8BagZB5hDhTBrByApAFhEABgMgBhVhgB4h7guBGAHBegvBFgsgWhIgVgWhVBogzBrhuByAIgOB8ABgdhRhfLeB8AshugZg6hBhjBgB7BdhMBrAtArgUBmgjB5hOAIADBDgehiBNhjgahZgXBMABBrhYBqhihVg9gfAzA7hDhoBkAmiDhEAkggBpAxgdAOgnAjAohGBAgqgWgAAIBEhfB8BoBtAJAUBCB5hb" +;
"mpBiAuB0B8AdAFAkhlgAhNIUhQgBhggIAmAKgChghIA2ALgBBNBDgeASBSBOBoBUhbgFhOh4BkhygGhhhIB2AegHhiAIgGAfgGEKhyAmgJhNBYgmAkA6hihDgmAugLhjAIhGIEhjCwgsA6hPAIhkhPgOhggDhOA+gNBkAJAGBCgMgPBJAUhNvpBYh+BDspBIhGBFA9Iwg2BJA8hjB5BWBWgVhlgJBmBagVsphGBTA7AmAJgGBigYhmBJgWBms3gZB2BIgBhPBZg0htgbhnAJhGBygchnBJhWGSAPBphmBegbD+g6B+gfhoAKAGgCgghoBKAWB/jNhphshQgiAiBKA2tLtQhGtSBPB6BWgKglBPBzhGgagmhphKB2gegnhqAKgGgbA+AqBKBegVgPoaAmgqgqhqhKg2gugqBqBDhigKgsBqh6hWg2gthjhjhmg6gshqBJA+prhsALAGhCgwhsAKhoh5iBBqAihKuuhLA2hOgzhshDhqhSgyGdBChWg1ht" +;
"gJhmhSA+glAYBCBtA9BrAaAihfg2BuTuhhgeBMhrgmADA5BNgrg2A5A8AsBrhGhyg8hvBLhWh2g7hhB7hkhbBSBOgrh0hZg/tkAHAChAhvhzBmBhBSBQAQCAg"
oXMLGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
27
|
How do I specify to search for name of the nodes only, when the user filters the control

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oNode
LOCAL oNodes,oNodes1
LOCAL oXMLGrid
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oXMLGrid := XbpActiveXControl():new( oForm:drawingArea )
oXMLGrid:CLSID := "Exontrol.XMLGrid.1" /*{AC7F976E-48C3-4B0B-B952-45D92DFE7F3E}*/
oXMLGrid:create(,, {10,60},{610,370} )
oXMLGrid:BeginUpdate()
oXMLGrid:FilterBarPromptVisible := -1/*exFilterBarVisible*/
oNode := oXMLGrid:Nodes():Add("Parent")
oNodes := oNode:Nodes()
oNodes:Add("Child<font ;6><off -4><b>1"):Value := 100
oNodes:Add("Child<font ;6><off -4><b>2"):Value := 101
oNodes1 := oNodes:Add("Child<font ;6><off -4><b>3"):Nodes()
oNodes1:Add("Node<font ;6><off -4><b>1"):Value := 102
oNodes1:Add("Node<font ;6><off -4><b>2"):Value := 103
oNode:Expanded := .T.
oXMLGrid:AutoSearch := 1/*exContains*/
oXMLGrid:FilterBarPromptType := 35/*exFilterPromptApplyOnName+exFilterPromptStartWith*/
oXMLGrid:FilterBarPromptPattern := "No"
oXMLGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
26
|
Is it possible to include child-nodes, when do filtering

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oNode
LOCAL oNodes,oNodes1
LOCAL oXMLGrid
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oXMLGrid := XbpActiveXControl():new( oForm:drawingArea )
oXMLGrid:CLSID := "Exontrol.XMLGrid.1" /*{AC7F976E-48C3-4B0B-B952-45D92DFE7F3E}*/
oXMLGrid:create(,, {10,60},{610,370} )
oXMLGrid:BeginUpdate()
oXMLGrid:FilterBarPromptVisible := -1/*exFilterBarVisible*/
oXMLGrid:HideSelection := 1/*exHideAlways*/
oNode := oXMLGrid:Nodes():Add("Parent")
oNodes := oNode:Nodes()
oNodes:Add("Child<font ;6><off -4><b>1"):Value := 100
oNodes:Add("Child<font ;6><off -4><b>2"):Value := 101
oNodes1 := oNodes:Add("Child<font ;6><off -4><b>3"):Nodes()
oNodes1:Add("Node<font ;6><off -4><b>1"):Value := 102
oNodes1:Add("Node<font ;6><off -4><b>2"):Value := 103
oNode:Expanded := .T.
oXMLGrid:AutoSearch := 3/*exAnyContains*/
oXMLGrid:FilterBarPromptType := 226/*exFilterPromptIncludeChild+exFilterPromptApplyOnValue+exFilterPromptApplyOnName+exFilterPromptContainsAny*/
oXMLGrid:FilterBarPromptPattern := "Child3"
oXMLGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
25
|
How can I change the control's filtering so it searches for Contains rather than Start

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oNode
LOCAL oNodes,oNodes1
LOCAL oXMLGrid
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oXMLGrid := XbpActiveXControl():new( oForm:drawingArea )
oXMLGrid:CLSID := "Exontrol.XMLGrid.1" /*{AC7F976E-48C3-4B0B-B952-45D92DFE7F3E}*/
oXMLGrid:create(,, {10,60},{610,370} )
oXMLGrid:BeginUpdate()
oXMLGrid:FilterBarPromptVisible := -1/*exFilterBarVisible*/
oNode := oXMLGrid:Nodes():Add("Parent")
oNodes := oNode:Nodes()
oNodes:Add("Child<font ;6><off -4><b>1"):Value := 100
oNodes:Add("Child<font ;6><off -4><b>2"):Value := 101
oNodes1 := oNodes:Add("Child<font ;6><off -4><b>3"):Nodes()
oNodes1:Add("Node<font ;6><off -4><b>1"):Value := 102
oNodes1:Add("Node<font ;6><off -4><b>2"):Value := 103
oNode:Expanded := .T.
oXMLGrid:AutoSearch := 3/*exAnyContains*/
oXMLGrid:FilterBarPromptType := 98/*exFilterPromptApplyOnValue+exFilterPromptApplyOnName+exFilterPromptContainsAny*/
oXMLGrid:FilterBarPromptPattern := "Child3"
oXMLGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
24
|
How do I enable the control's filtering support

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oNode
LOCAL oNodes
LOCAL oXMLGrid
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oXMLGrid := XbpActiveXControl():new( oForm:drawingArea )
oXMLGrid:CLSID := "Exontrol.XMLGrid.1" /*{AC7F976E-48C3-4B0B-B952-45D92DFE7F3E}*/
oXMLGrid:create(,, {10,60},{610,370} )
oXMLGrid:BeginUpdate()
oXMLGrid:FilterBarPromptVisible := -1/*exFilterBarVisible*/
oXMLGrid:HideSelection := 1/*exHideAlways*/
oNode := oXMLGrid:Nodes():Add("Parent")
oNodes := oNode:Nodes()
oNodes:Add("Child <b>1"):Value := 100
oNodes:Add("Child <b>2"):Value := 101
oNodes:Add("Child <b>3"):Value := 102
oNode:Expanded := .T.
oXMLGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
23
|
How can I hide the expanding bars under each parent node (method 1)

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oNode,oNode1,oNode2
LOCAL oNodes,oNodes1,oNodes2
LOCAL oXMLGrid
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oXMLGrid := XbpActiveXControl():new( oForm:drawingArea )
oXMLGrid:CLSID := "Exontrol.XMLGrid.1" /*{AC7F976E-48C3-4B0B-B952-45D92DFE7F3E}*/
oXMLGrid:create(,, {10,60},{610,370} )
oXMLGrid:BeginUpdate()
oXMLGrid:VisualAppearance():Add(1,"gBFLBCJwBAEHhEJAAChABDEMACAADACAxRDQNABQKAAzQFAYaBmGqGAAGEaRWgmFgAQhFcZQSKUOQTDKMIziaQIRDINQlSTJcQjKKEUQTFiXIyAKKwEgmEQMQiCcbzXIUBxAAqXZZFUaKAgOMJDTLBAzUTCUKx7HynQACCCaTpGVo8hYhEoDJKMdB1HIZIwyBBcqBNWTFdLAAJFKTdKAMIyiGp4DbudjyXg6V5OTblez9P7AMBvS6nKrhcp2PrhTSYWr+Gp5R7IMhyLI8Uw/DS/Yq1GDYIiuOoIQhCUD0LQ9EyXJqnaJnaC5aiuCT7VRjWDYFgFdTpQC8bZuGz7Trmd59XTadhYHSsAyNRDCL6tayLDxSZabZ5aOa6HoOS4kjGY4vnQeAEBaCYOkQYYslYCpvA+D5FmSc55j0PhfF8eYHlwQZ2nQTImDsFRaioVB9j8Hx/k+c53n4fogAeTJFHuXY3HCTAygyAociMKBKEKBIeCiCZyHYEAnCEOBUh+" +;
"BQhBgNIegKCgYBySAgh2SAUgINAMmMNIgCcCYjn4KoKmKSI2C6CpiHIagkDMYgCAoIg1A0IxEhsJgJFiPg+g+Y4yFYOA0GMWIIloNhNGIaIXCUI5CE4SwkEkchOFCFIlBkThQCUCQZDYSglCQcxaEUX5IBmBJhDeDZZDYOwlgmQhghaGZmkmKhnhoZo5ioTYYk2WYEgEYAnGOGJlDkCQyECDqfCkNoCCUSQ6A6BYhCgCZ0g6HoOEmWR9GFYw4m0OwIlIJIHCRc4shGJhpjoaocieaZiC6GAimkUgehIOwnGYEYGGiah6jaE4rg6SpCjKK5rEOMYjGGGIChKOgglmdoij6L5aEYfo6CkGIEAQgIA==")
oXMLGrid:VisualAppearance():Add(2,"gBFLBCJwBAEHhEJAAChABC0MACAADACAxRDQNABQKAAzQFAYaBmGqGAAGEaRWgmFgAQhFcZQSKUOQTDKMIziaQIRDINQlSTJcQjKKEUQTFiXIyAKKwEgmEQMQiCcbzXIUBxAAqXZZFUaKAgOMJDTLBAzUTCUKx7HynQACCCaTpGVo8hYhEoDJKMdB1HIZIwyBBcqBNWTFdLAAJFKTdKAMIyiGp4DbudjyXg6V5OTblez9P7AMBvS6nKrhcp2PrhTSYWr+Gp5R7IMhyLI8Uw/DS/Yq1GDYIiuOoIQhCUD0LQ9EyXJqnaJnaC5aiuCT7VRjWDYFgFdTpQC8bZuGz7Trmd59XTadhYHSsAyNRDCL6tayLDxSZabZ5aOa6HoOS4kjGY4vnQeAEBaCYOkQYYslYCpvA+D5FmQf56D0PhPF+G5Fl4YZ3BAfY9BMKYOkUVoqhUH4PleZ53mkehfjgBZ9H4XxTBWcR2l2QwwkoMgKHKDIhCkCgSHiIgnkmWBMhw" +;
"f5egglInGEAh6A0KBgiMIICHdLIIlAM4MlKAIcCaIYIjYLoLGKIhqCcMxiR8JQ1A0IxEhsJgJFiPg+guI4yFYOA0GMWIUloNhNGIaIXCUI5CE4SwkEkchMhGCxlBkQIUCQZJZCiFIRk0aQVH8IBmAOBJeDcZJYmyFgnAmAhaGaCxmGmIhqhoZJZgiXYYAgFgCHQOYOFOEITCQCJpCyEoTVUNoACUZJiFCEoekiaZgmSHQXlYEh0DuDpTjCDQiEgchAg0IpJBoXoZiYKYqHaHAimkYguhMIZpAOMh0GEGBmg6JYqmkGowmyK4rAqNoyDsGg2BmCApCuAgNh8agrkqdYkGea4ChGCBAEAgI")
oXMLGrid:VisualAppearance():Add(3,"gBFLBCJwBAEHhEJAAChABa8GACAADACAxRDQNABQKAAzQFAYaBmGqGAAGEaRWgmFgAQhFcZQSKUOQTDKMIzkKJpAAiCRQGiYZyHKcxMYgQrAZBEbKMLwrAYUIRCCaofAAGIaRDIcZPXQjZSMdSkHRpKi6Mo2TpPUpSDpUM6VCL3KhqKxXeq1cp2XpfWBYNhVbTafyyaiqKiSWy0EQRBSDXBcNxXHalazhNpCbTSWoqLrhRzDMCwC6rUwCeYJQzCcLxLCcMwjA5/MDeFLXCwjBJ+W5aFhzBYsbx1NKcZ7nWgaAqOKp/OKnECuBh2EYNMywK5rew7BqTf5tW7ZNx2TYNMYPKiDajcDJMOwqWpUVDjOQ4fidXzfSbPcrxfBsLp/FOKhmDKGQKHUGoFEiIRPCiE5pl8ChzhuNpyHgU49mSdxtEOWBkCCNRdGQExBhyTRQCcExeG+X5zneeAmh8Uw1nEIIfDMUJSDQSYyGCFR/GCR5yAkJRgGMRgDHyTYjGS" +;
"VgmgkchSAoJJhhIRIXCSSQXm4H4HgkQhGBuBgJEgVJWgSVJSAYLg4E2Yx2BuAhJGIcIYCWIxHm4NINiOCJeBuDANliOIBFOJAjhiZQ5AkMhAg6BhJCgbgbH6ZJiFYHAlAkKQkg6EYOEkCRLFTQw4m0OwIlIJIHCRVAshGGRmHmGhohqZoiC4ZAimYEgeF4OwkCUSRUFwZw5mYX4eg6SZyH6HpoAOMRxFUFRihKBgglaVZagqIpXCWNoGCkFRkAQgI")
oXMLGrid:HideSelection := 1/*exHideAlways*/
oXMLGrid:ExpandButtons := 3/*exCustom*/
oXMLGrid:SetProperty("ExpandButtonsCustom",.T.,16777216)
oXMLGrid:SetProperty("ExpandButtonsCustom",.F.,33554432)
oXMLGrid:SetProperty("Background",0/*exExpandButtonUp*/,0x3000000)
oXMLGrid:SetProperty("Background",1/*exExpandButtonDown*/,0x3000000)
oNode := oXMLGrid:Nodes():Add("Parent")
oNodes := oNode:Nodes()
oNodes:Add("Child <b>1"):Value := 100
oNode1 := oNodes:Add("Child <b>2")
oNodes1 := oNode1:Nodes()
oNodes1:Add("Sub Child <b>2.1"):Value := 101
oNode2 := oNodes1:Add("Sub Child <b>2.2")
oNodes2 := oNode2:Nodes()
oNodes2:Add("Sub Child <b>2.1.1"):Value := 101
oNodes2:Add("Sub Child <b>2.2.2"):Value := 102
oNode2:Expanded := .F.
oNode1:Expanded := .T.
oNode:Selected := .T.
oNode:Expanded := .T.
oXMLGrid:SetProperty("LevelWidth",0,64)
oXMLGrid:SetProperty("LevelWidth",1,96)
oXMLGrid:SetProperty("LevelWidth",2,96)
oXMLGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
22
|
How can I change the visual appearance for expand/collapse buttons

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oNode,oNode1,oNode2
LOCAL oNodes,oNodes1,oNodes2
LOCAL oXMLGrid
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oXMLGrid := XbpActiveXControl():new( oForm:drawingArea )
oXMLGrid:CLSID := "Exontrol.XMLGrid.1" /*{AC7F976E-48C3-4B0B-B952-45D92DFE7F3E}*/
oXMLGrid:create(,, {10,60},{610,370} )
oXMLGrid:BeginUpdate()
oXMLGrid:VisualAppearance():Add(1,"gBFLBCJwBAEHhEJAAChABDEMACAADACAxRDQNABQKAAzQFAYaBmGqGAAGEaRWgmFgAQhFcZQSKUOQTDKMIziaQIRDINQlSTJcQjKKEUQTFiXIyAKKwEgmEQMQiCcbzXIUBxAAqXZZFUaKAgOMJDTLBAzUTCUKx7HynQACCCaTpGVo8hYhEoDJKMdB1HIZIwyBBcqBNWTFdLAAJFKTdKAMIyiGp4DbudjyXg6V5OTblez9P7AMBvS6nKrhcp2PrhTSYWr+Gp5R7IMhyLI8Uw/DS/Yq1GDYIiuOoIQhCUD0LQ9EyXJqnaJnaC5aiuCT7VRjWDYFgFdTpQC8bZuGz7Trmd59XTadhYHSsAyNRDCL6tayLDxSZabZ5aOa6HoOS4kjGY4vnQeAEBaCYOkQYYslYCpvA+D5FmSc55j0PhfF8eYHlwQZ2nQTImDsFRaioVB9j8Hx/k+c53n4fogAeTJFHuXY3HCTAygyAociMKBKEKBIeCiCZyHYEAnCEOBUh+" +;
"BQhBgNIegKCgYBySAgh2SAUgINAMmMNIgCcCYjn4KoKmKSI2C6CpiHIagkDMYgCAoIg1A0IxEhsJgJFiPg+g+Y4yFYOA0GMWIIloNhNGIaIXCUI5CE4SwkEkchOFCFIlBkThQCUCQZDYSglCQcxaEUX5IBmBJhDeDZZDYOwlgmQhghaGZmkmKhnhoZo5ioTYYk2WYEgEYAnGOGJlDkCQyECDqfCkNoCCUSQ6A6BYhCgCZ0g6HoOEmWR9GFYw4m0OwIlIJIHCRc4shGJhpjoaocieaZiC6GAimkUgehIOwnGYEYGGiah6jaE4rg6SpCjKK5rEOMYjGGGIChKOgglmdoij6L5aEYfo6CkGIEAQgIA==")
oXMLGrid:VisualAppearance():Add(2,"gBFLBCJwBAEHhEJAAChABC0MACAADACAxRDQNABQKAAzQFAYaBmGqGAAGEaRWgmFgAQhFcZQSKUOQTDKMIziaQIRDINQlSTJcQjKKEUQTFiXIyAKKwEgmEQMQiCcbzXIUBxAAqXZZFUaKAgOMJDTLBAzUTCUKx7HynQACCCaTpGVo8hYhEoDJKMdB1HIZIwyBBcqBNWTFdLAAJFKTdKAMIyiGp4DbudjyXg6V5OTblez9P7AMBvS6nKrhcp2PrhTSYWr+Gp5R7IMhyLI8Uw/DS/Yq1GDYIiuOoIQhCUD0LQ9EyXJqnaJnaC5aiuCT7VRjWDYFgFdTpQC8bZuGz7Trmd59XTadhYHSsAyNRDCL6tayLDxSZabZ5aOa6HoOS4kjGY4vnQeAEBaCYOkQYYslYCpvA+D5FmQf56D0PhPF+G5Fl4YZ3BAfY9BMKYOkUVoqhUH4PleZ53mkehfjgBZ9H4XxTBWcR2l2QwwkoMgKHKDIhCkCgSHiIgnkmWBMhw" +;
"f5egglInGEAh6A0KBgiMIICHdLIIlAM4MlKAIcCaIYIjYLoLGKIhqCcMxiR8JQ1A0IxEhsJgJFiPg+guI4yFYOA0GMWIUloNhNGIaIXCUI5CE4SwkEkchMhGCxlBkQIUCQZJZCiFIRk0aQVH8IBmAOBJeDcZJYmyFgnAmAhaGaCxmGmIhqhoZJZgiXYYAgFgCHQOYOFOEITCQCJpCyEoTVUNoACUZJiFCEoekiaZgmSHQXlYEh0DuDpTjCDQiEgchAg0IpJBoXoZiYKYqHaHAimkYguhMIZpAOMh0GEGBmg6JYqmkGowmyK4rAqNoyDsGg2BmCApCuAgNh8agrkqdYkGea4ChGCBAEAgI")
oXMLGrid:HideSelection := 1/*exHideAlways*/
oXMLGrid:ExpandButtons := 3/*exCustom*/
oXMLGrid:SetProperty("ExpandButtonsCustom",.T.,16777216)
oXMLGrid:SetProperty("ExpandButtonsCustom",.F.,33554432)
oNode := oXMLGrid:Nodes():Add("Parent")
oNodes := oNode:Nodes()
oNodes:Add("Child <b>1"):Value := 100
oNode1 := oNodes:Add("Child <b>2")
oNodes1 := oNode1:Nodes()
oNodes1:Add("Sub Child <b>2.1"):Value := 101
oNode2 := oNodes1:Add("Sub Child <b>2.2")
oNodes2 := oNode2:Nodes()
oNodes2:Add("Sub Child <b>2.1.1"):Value := 101
oNodes2:Add("Sub Child <b>2.2.2"):Value := 102
oNode2:Expanded := .F.
oNode1:Expanded := .T.
oNode:Selected := .T.
oNode:Expanded := .T.
oXMLGrid:SetProperty("LevelWidth",0,64)
oXMLGrid:SetProperty("LevelWidth",1,96)
oXMLGrid:SetProperty("LevelWidth",2,96)
oXMLGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
21
|
Does your control support transparent selection

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oNode,oNode1,oNode2
LOCAL oNodes,oNodes1,oNodes2
LOCAL oXMLGrid
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oXMLGrid := XbpActiveXControl():new( oForm:drawingArea )
oXMLGrid:CLSID := "Exontrol.XMLGrid.1" /*{AC7F976E-48C3-4B0B-B952-45D92DFE7F3E}*/
oXMLGrid:create(,, {10,60},{610,370} )
oXMLGrid:BeginUpdate()
oXMLGrid:SelBackMode := 1/*exTransparent*/
oXMLGrid:SetProperty("SelBackColorChild",oXMLGrid:SelBackColor())
oNode := oXMLGrid:Nodes():Add("Parent")
oNodes := oNode:Nodes()
oNodes:Add("Child <b>1"):Value := 100
oNode1 := oNodes:Add("Child <b>2")
oNodes1 := oNode1:Nodes()
oNodes1:Add("Sub Child <b>2.1"):Value := 101
oNode2 := oNodes1:Add("Sub Child <b>2.2")
oNodes2 := oNode2:Nodes()
oNodes2:Add("Sub Child <b>2.1.1"):Value := 101
oNodes2:Add("Sub Child <b>2.2.2"):Value := 102
oNode2:Expanded := .T.
oNode1:Expanded := .T.
oNode:Selected := .T.
oNode:Expanded := .T.
oXMLGrid:SetProperty("LevelWidth",0,64)
oXMLGrid:SetProperty("LevelWidth",1,96)
oXMLGrid:SetProperty("LevelWidth",2,96)
oXMLGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
20
|
How can I show the selection with some transparent marker

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oNode,oNode1
LOCAL oNodes,oNodes1
LOCAL oXMLGrid
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oXMLGrid := XbpActiveXControl():new( oForm:drawingArea )
oXMLGrid:CLSID := "Exontrol.XMLGrid.1" /*{AC7F976E-48C3-4B0B-B952-45D92DFE7F3E}*/
oXMLGrid:create(,, {10,60},{610,370} )
oXMLGrid:BeginUpdate()
oXMLGrid:AllowDuplicateEntries := .T.
oNode := oXMLGrid:Nodes():Add("Parent")
oNodes := oNode:Nodes()
oNodes:Add("Child <b>1"):Value := 100
oNodes:Add("Child <b>2"):Value := 101
oNode:Selected := .T.
oNode:Expanded := .T.
oNode1 := oXMLGrid:Nodes():Add("Parent")
oNodes1 := oNode1:Nodes()
oNodes1:Add("Child <b>1"):Value := 100
oNodes1:Add("Child <b>2"):Value := 101
oXMLGrid:SetProperty("LevelWidth",0,64)
oXMLGrid:SetProperty("LevelWidth",1,96)
oXMLGrid:SetProperty("LevelWidth",2,96)
oXMLGrid:ShowFocusRect := .F.
oXMLGrid:VisualAppearance():Add(1,"gBFLBCJwBAEHhEJAAChABdcGACAADACAxRDQNABQKAAzQFAYaBmGqGAAGEaRWgmFgAQhFcZQSKUOQTDKMIziYBYJhGBQxAJCI4DBCIZBwGKQBjASQpUhqHYDTbIMByBIUIxMGiYIRoGAxTiAMo8RrSEZTdD8ExTAZ/XzfMAKRpOFo/ULEUw0NR8aRABiNQbkWjYDp1f5nVRaFTxYKoSxbNqIRpGCzoJrKdI1SBEMTWBAddSdBKzX7tHArLgSQJdSrLMrzDIka4cACcZxkCioXozBpZVjRMaZJC2KAbMaBQgsQALGqjAaVUJQEgZTTmHS/BLPYDsLQdDyXAqnYTkFwWZa4ATtOK5b6jK6dQgmfAAaJGWzYHpGL4QGCYZKGapMgsKaVmwYp8j2RoCCWB4VHQIQjD6FIjF2RpumyewRj6XYrjoMpdk4Pgbm4DZXmmSpRnWeJ9hiN4zAkSRCECBAkFAGhGDGUB1ByBhVGUCxAkQIQ2AsRZRFQDAoEIXoXCU" +;
"IQGBSNg9BoYBNjMbJ/DGTBznyQAwCIKISCOCRigiHgqgmIhIgCfw3k2dgFn6DAihiMg1g2Yo4mINoNBCEwMkOCgPDOTgyhCZBJBYRIQTGmYOGQaQ2E6EQjhkLg2hOZRJDoURAmSSRWFqEJlHAAhZhaZgJHYX4YCWKYKFOGQljmGgohoJoYloUoambTxqgmZwZkoboWCYeZWFaHaOBDRIkCmahDhIIh5nmfoHGOKgmDmIpjGiHoIEIVQjnyXA3A+cwgkiIooloZgoiWD5zgCYIMhCFAEIC")
oXMLGrid:SetProperty("SelBackColor",0x1000000)
oXMLGrid:SetProperty("SelForeColor",-1)
oXMLGrid:SetProperty("SelBackColorChild",-1)
oXMLGrid:SetProperty("SelForeColorChild",-1)
oXMLGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
19
|
How can I highlight the focused/selected node only, instead highlighting its childrend collection (method 3)

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oNode
LOCAL oNodes
LOCAL oXMLGrid
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oXMLGrid := XbpActiveXControl():new( oForm:drawingArea )
oXMLGrid:CLSID := "Exontrol.XMLGrid.1" /*{AC7F976E-48C3-4B0B-B952-45D92DFE7F3E}*/
oXMLGrid:create(,, {10,60},{610,370} )
oXMLGrid:BeginUpdate()
oNode := oXMLGrid:Nodes():Add("Parent")
oNodes := oNode:Nodes()
oNodes:Add("Child <b>1"):Value := 100
oNodes:Add("Child <b>2"):Value := 101
oNode:Selected := .T.
oNode:Expanded := .T.
oXMLGrid:SetProperty("LevelWidth",0,64)
oXMLGrid:SetProperty("LevelWidth",1,96)
oXMLGrid:SetProperty("LevelWidth",2,96)
oXMLGrid:ShowFocusRect := .F.
oXMLGrid:VisualAppearance():Add(1,"gBFLBCJwBAEHhEJAAChABGYDg6AADACAxRDQNABQKAAzQFAYaBmGqGAAGEaRWgmFgAQhFcZQSKUOQTDKNYykCIRSDUJYkSZEIyjAIoBQ4GACJBmKKodgONYYTLFYCwTJETw5FKEZTEWQBTjGOY5TbNcgUPCMex7IiVJYpOK6ThqTYfQjLUBvfTgAS4f6Laaneg4JDOUYtTjIADRWBMeSxAatK6rWr7BqOYoDUJZcQyDIcNzXAa9aLjO5wAiWPp4VJZM54FKVEzfQSrZqoDIrEgOZpBYjMdSgADFXQGDbHbhuS5IWwTBpQZhaGZQTb+mZtZ7oMI6HTuSztW7EMLAC6bJx7LoDazoGKSDo0TZRXLNYqzPIdf4OVq4YTxVi2PZGnmLJfGwOY8m2NhTAmPJcmAZBbmiDo3DuW4ZEgAQQhKAYkkYdA6hyDIjBkAIqBgQgmn0YxRFgGIjF8CRwhOB4ZAkPQdFYMRfCsYICFYCgkEkEhCA0JDeEICglgqYo0i4" +;
"XQMEgZI9gaToYHSb4Hk6Y4+CGB5hlOJgbC8TBoiQAArgqco4muC5OkOMJtguYxIlYMg7GME4uC0K4AAKKg+DwJADiCZw5k6KQWEaEYOHkChADwI5izIKwKjKzQ8E8A4iFaEYOjOMgvhEZRjiIVA8CUEouE9SRJEycoWCMCJmFvUAzkYZArAACAgi0PInEkGhauKCYsmqHQPCmSAAgsSp5lCc4dg6WgUm6DkQhicw8g8OiDiwKQDk6EoNCgU40m6JZpFiUoSDyaQCokLIqAobh3iWKRogaB4MmWKhsjMLJLCAAorCyagokYIoImsM46DEOwPEoSovABZR0nSL5pFgfgfhALAqFaPw9CuUrgC2CxSlidQ9E8SoSkSEpsZXj5LFsNAAC2bZLDydYwiaW4GFOMIPGsPpcC2QACmSOQuA8a42EvYoZnKcVsAOPJwD0bpSmKagAAuO52m0PYsCmcoLkCLhLjSOwuguIAAjyQpvnkLobkOaQpC6f5CkuQAAj6Bp" +;
"PHwZwCkQKYzkqcQ9k8Y5cj2RejH8JpGE8eZykeSprnmcwoC+TADAAAJMEwA5jDaSoyksHh8rmDLgDBzoHDyJIPCOUpejWbQKG8PJQHMIwPE6UJrhsPpljeLJ9CieQ+DSYwQAAMR1kOZxejGb57hcYQ8mufR4nmVwMFAAJHDGDBzmsbozk8TYHHKN42G2LJHAADJNmSe5enOTIjH6Rhzk2Nke4vBMt8GAHADY5wbgUD8HEQ47wOjHHiPwMI+RigcGOAmAorgjj8EIHMTY3B0i7GePQDoBwdBvGSCcIQ6BACAIC")
oXMLGrid:SetProperty("SelBackColor",0x1000000)
oXMLGrid:SetProperty("SelForeColor",-1)
oXMLGrid:SetProperty("SelBackColorChild",-1)
oXMLGrid:SetProperty("SelForeColorChild",-1)
oXMLGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
18
|
How can I highlight the focused/selected node only, instead highlighting its childrend collection (method 2)

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oNode
LOCAL oNodes
LOCAL oXMLGrid
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oXMLGrid := XbpActiveXControl():new( oForm:drawingArea )
oXMLGrid:CLSID := "Exontrol.XMLGrid.1" /*{AC7F976E-48C3-4B0B-B952-45D92DFE7F3E}*/
oXMLGrid:create(,, {10,60},{610,370} )
oXMLGrid:BeginUpdate()
oNode := oXMLGrid:Nodes():Add("Parent")
oNodes := oNode:Nodes()
oNodes:Add("Child <b>1"):Value := 100
oNodes:Add("Child <b>2"):Value := 101
oNode:Selected := .T.
oNode:Expanded := .T.
oXMLGrid:SetProperty("LevelWidth",0,64)
oXMLGrid:SetProperty("LevelWidth",1,96)
oXMLGrid:SetProperty("LevelWidth",2,96)
oXMLGrid:VisualAppearance():Add(1,"gBFLBCJwBAEHhEJAAChABJUIQAAYAQGKIaBoAKBQAGaAoDDQMw1QwAAwjSK0EwsACEIrjKCRShyCYZRhGcTSAAUEhiGKQBgiGDhViWAwyDABEbwS78agBFyRlqyfKccx9DaAQEBA")
oXMLGrid:ShowFocusRect := .F.
oXMLGrid:SetProperty("SelBackColor",0x1a0a0a0)
oXMLGrid:SetProperty("SelForeColor",-1)
oXMLGrid:SetProperty("SelBackColorChild",-1)
oXMLGrid:SetProperty("SelForeColorChild",-1)
oXMLGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
17
|
How can I highlight the focused/selected node only, instead highlighting its childrend collection (method 1)

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oNode
LOCAL oNodes
LOCAL oXMLGrid
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oXMLGrid := XbpActiveXControl():new( oForm:drawingArea )
oXMLGrid:CLSID := "Exontrol.XMLGrid.1" /*{AC7F976E-48C3-4B0B-B952-45D92DFE7F3E}*/
oXMLGrid:create(,, {10,60},{610,370} )
oXMLGrid:BeginUpdate()
oNode := oXMLGrid:Nodes():Add("Parent")
oNodes := oNode:Nodes()
oNodes:Add("Child <b>1"):Value := 100
oNodes:Add("Child <b>2"):Value := 101
oNode:Selected := .T.
oNode:Expanded := .T.
oXMLGrid:SetProperty("LevelWidth",0,64)
oXMLGrid:SetProperty("LevelWidth",1,96)
oXMLGrid:SetProperty("LevelWidth",2,96)
oXMLGrid:HideSelection := 1/*exHideAlways*/
oXMLGrid:VisualAppearance():Add(1,"gBFLBCJwBAEHhEJAAChABdcGACAADACAxRDQNABQKAAzQFAYaBmGqGAAGEaRWgmFgAQhFcZQSKUOQTDKMIziYBYJhGBQxAJCI4DBCIZBwGKQBjASQpUhqHYDTbIMByBIUIxMGiYIRoGAxTiAMo8RrSEZTdD8ExTAZ/XzfMAKRpOFo/ULEUw0NR8aRABiNQbkWjYDp1f5nVRaFTxYKoSxbNqIRpGCzoJrKdI1SBEMTWBAddSdBKzX7tHArLgSQJdSrLMrzDIka4cACcZxkCioXozBpZVjRMaZJC2KAbMaBQgsQALGqjAaVUJQEgZTTmHS/BLPYDsLQdDyXAqnYTkFwWZa4ATtOK5b6jK6dQgmfAAaJGWzYHpGL4QGCYZKGapMgsKaVmwYp8j2RoCCWB4VHQIQjD6FIjF2RpumyewRj6XYrjoMpdk4Pgbm4DZXmmSpRnWeJ9hiN4zAkSRCECBAkFAGhGDGUB1ByBhVGUCxAkQIQ2AsRZRFQDAoEIXoXCU" +;
"IQGBSNg9BoYBNjMbJ/DGTBznyQAwCIKISCOCRigiHgqgmIhIgCfw3k2dgFn6DAihiMg1g2Yo4mINoNBCEwMkOCgPDOTgyhCZBJBYRIQTGmYOGQaQ2E6EQjhkLg2hOZRJDoURAmSSRWFqEJlHAAhZhaZgJHYX4YCWKYKFOGQljmGgohoJoYloUoambTxqgmZwZkoboWCYeZWFaHaOBDRIkCmahDhIIh5nmfoHGOKgmDmIpjGiHoIEIVQjnyXA3A+cwgkiIooloZgoiWD5zgCYIMhCFAEIC")
oXMLGrid:SetProperty("Background",19/*exShowFocusRect*/,0x1000000)
oXMLGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
16
|
How do I enable the scrollbar-extension, as thumb to be shown outside of the control's client area

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oNode,oNode1
LOCAL oNodes,oNodes1
LOCAL oXMLGrid
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oXMLGrid := XbpActiveXControl():new( oForm:drawingArea )
oXMLGrid:CLSID := "Exontrol.XMLGrid.1" /*{AC7F976E-48C3-4B0B-B952-45D92DFE7F3E}*/
oXMLGrid:create(,, {10,60},{610,370} )
oXMLGrid:BeginUpdate()
oNode := oXMLGrid:Nodes():Add("Parent <font ;6><off 4>1")
oNodes := oNode:Nodes()
oNode1 := oNodes:Add("Child 1")
oNode1:Value := "<sha ;;0>Event <b><font ;6><off -6>2<off 4>3<off 4>1"
oNodes:Add("Child 2")
oNode:ExpandAll()
oNodes1 := oXMLGrid:Nodes():Add("Parent <font ;6><off 4>2"):Nodes()
oNodes1:Add("Child 1")
oNodes1:Add("Child 2")
oXMLGrid:ScrollBars := 3/*exBoth*/
oXMLGrid:SetProperty("ScrollPartVisible",0/*exVScroll*/,65536/*exExtentThumbPart*/,.T.)
oXMLGrid:SetProperty("ScrollPartVisible",1/*exHScroll*/,65536/*exExtentThumbPart*/,.T.)
oXMLGrid:SetProperty("ScrollPartVisible",2/*0x2+*/,65536/*exExtentThumbPart*/,.T.)
oXMLGrid:ScrollWidth := 4
oXMLGrid:SetProperty("Background",276/*exVSBack*/,AutomationTranslateColor( GraMakeRGBColor ( { 240,240,240 } ) , .F. ))
oXMLGrid:SetProperty("Background",260/*exVSThumb*/,AutomationTranslateColor( GraMakeRGBColor ( { 128,128,128 } ) , .F. ))
oXMLGrid:ScrollHeight := 4
oXMLGrid:SetProperty("Background",404/*exHSBack*/,oXMLGrid:Background(276/*exVSBack*/))
oXMLGrid:SetProperty("Background",388/*exHSThumb*/,oXMLGrid:Background(260/*exVSThumb*/))
oXMLGrid:SetProperty("Background",511/*exScrollSizeGrip*/,oXMLGrid:Background(276/*exVSBack*/))
oXMLGrid:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
15
|
Does your control support Fit-To-Page, Print and Print-Preview

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oPrint
LOCAL oNode,oNode1
LOCAL oNodes,oNodes1
LOCAL oXMLGrid
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oXMLGrid := XbpActiveXControl():new( oForm:drawingArea )
oXMLGrid:CLSID := "Exontrol.XMLGrid.1" /*{AC7F976E-48C3-4B0B-B952-45D92DFE7F3E}*/
oXMLGrid:create(,, {10,60},{610,370} )
oNode := oXMLGrid:Nodes():Add("Parent <b>1")
oNodes := oNode:Nodes()
oNodes:Add("Child 1"):Selected := .T.
oNodes:Add("Child 2")
oNode:ExpandAll()
oNode1 := oXMLGrid:Nodes():Add("Parent <b>2")
oNodes1 := oNode1:Nodes()
oNodes1:Add("Child 1")
oNodes1:Add("Child 2")
oPrint := CreateObject("Exontrol.Print")
oPrint:Options := "FitToPage = 1x1"
oPrint:PrintExt := oXMLGrid
oPrint:Preview()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
14
|
How do I print the control
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oPrint
LOCAL oNode,oNode1
LOCAL oNodes,oNodes1
LOCAL oXMLGrid
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oXMLGrid := XbpActiveXControl():new( oForm:drawingArea )
oXMLGrid:CLSID := "Exontrol.XMLGrid.1" /*{AC7F976E-48C3-4B0B-B952-45D92DFE7F3E}*/
oXMLGrid:create(,, {10,60},{610,370} )
oNode := oXMLGrid:Nodes():Add("Parent <b>1")
oNodes := oNode:Nodes()
oNodes:Add("Child 1"):Selected := .T.
oNodes:Add("Child 2")
oNode:ExpandAll()
oNode1 := oXMLGrid:Nodes():Add("Parent <b>2")
oNodes1 := oNode1:Nodes()
oNodes1:Add("Child 1")
oNodes1:Add("Child 2")
oPrint := CreateObject("Exontrol.Print")
oPrint:PrintExt := oXMLGrid
oPrint:Preview()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
13
|
How can we can customize a context menu based on the node type

PROCEDURE OnMouseUp(oXMLGrid,Button,Shift,X,Y)
LOCAL oExContextMenu
DevOut( "Node:" )
DevOut( Transform(oXMLGrid:NodeFromPoint(X,Y),"") )
oExContextMenu := CreateObject("Exontrol.ContextMenu")
oExContextMenu:Items():ToString := "Calendar[id=20][img=0],MSChart[id=30],Record[id=40],Slider[id=50],Radio 1[id=100][typ=2][edit=],Radio 2[id=101][typ=2][edit=],Radio 3[id=102][typ=2][edit=],ComboBox[id=90]"
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 oNode
LOCAL oNodes
LOCAL oXMLGrid
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oXMLGrid := XbpActiveXControl():new( oForm:drawingArea )
oXMLGrid:CLSID := "Exontrol.XMLGrid.1" /*{AC7F976E-48C3-4B0B-B952-45D92DFE7F3E}*/
oXMLGrid:create(,, {10,60},{610,370} )
oXMLGrid:MouseUp := {|Button,Shift,X,Y| OnMouseUp(oXMLGrid,Button,Shift,X,Y)} /*Occurs when the user releases a mouse button.*/
oNode := oXMLGrid:Nodes():Add("Parent")
oNodes := oNode:Nodes()
oNodes:Add("Child 1")
oNodes:Add("Child 2")
oNode:Expanded := .T.
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
12
|
How we can attach a customized editor, for example, a date-time picker dialog for a date-time attribute using eXMLGrid

PROCEDURE OnUserEditorClose(oXMLGrid,Object,Node)
/*Node.Value = Object.Value*/
RETURN
PROCEDURE OnUserEditorOpen(oXMLGrid,Object,Node)
/*Object.Value = Node.Value*/
RETURN
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oCalendarCombo
LOCAL oEditor
LOCAL oEditors
LOCAL oNode
LOCAL oXMLGrid
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oXMLGrid := XbpActiveXControl():new( oForm:drawingArea )
oXMLGrid:CLSID := "Exontrol.XMLGrid.1" /*{AC7F976E-48C3-4B0B-B952-45D92DFE7F3E}*/
oXMLGrid:create(,, {10,60},{610,370} )
oXMLGrid:UserEditorClose := {|Object,Node| OnUserEditorClose(oXMLGrid,Object,Node)} /*Fired the user editor is about to be opened.*/
oXMLGrid:UserEditorOpen := {|Object,Node| OnUserEditorOpen(oXMLGrid,Object,Node)} /*Occurs when an user editor is about to be opened.*/
oXMLGrid:NodeHeight := 24
oEditors := oXMLGrid:Editors()
oEditor := oEditors:Add("ExCalendarUserEditor",16/*UserEditorType*/)
oEditor:UserEditor("ExCalendar.CalendarCombo","")
oCalendarCombo := oEditor:UserEditorObject()
oNode := oXMLGrid:Nodes():Add("Date")
oNode:Editor := "ExCalendarUserEditor"
oNode:Value := "01/01/2001"
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
11
|
How can change the visual appearance of the expand/collapse buttons

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oNode,oNode1,oNode2
LOCAL oNodes,oNodes1
LOCAL oXMLGrid
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oXMLGrid := XbpActiveXControl():new( oForm:drawingArea )
oXMLGrid:CLSID := "Exontrol.XMLGrid.1" /*{AC7F976E-48C3-4B0B-B952-45D92DFE7F3E}*/
oXMLGrid:create(,, {10,60},{610,370} )
oXMLGrid:Images("gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTqlVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/yNAOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=")
oXMLGrid:VisualAppearance():Add(1,"c:\exontrol\images\normal.ebn")
oXMLGrid:VisualAppearance():Add(2,"c:\exontrol\images\pushed.ebn")
oNode := oXMLGrid:Nodes():Add("Parent <b>1")
oNodes := oNode:Nodes()
oNode1 := oNodes:Add("Child 1")
oNode1:Value := "<sha ;;0>Event <b><font ;6><off -6>2<off 4>3<off 4>1"
oNode1:Selected := .T.
oNodes:Add("Child 2")
oNode:ExpandAll()
oNode2 := oXMLGrid:Nodes():Add("Parent <b>2")
oNodes1 := oNode2:Nodes()
oNodes1:Add("Child 1")
oNodes1:Add("Child 2")
oXMLGrid:ExpandBarVisible := .T.
oXMLGrid:ExpandButtons := 3/*exCustom*/
oXMLGrid:SetProperty("ExpandButtonsCustom",.F.,1)
oXMLGrid:SetProperty("ExpandButtonsCustom",.T.,2)
oXMLGrid:SetProperty("Background",1/*exExpandButtonDown*/,0x1808080)
oXMLGrid:SetProperty("Background",0/*exExpandButtonUp*/,0x1000000)
oXMLGrid:SetProperty("Background",3/*exExpandBarButtonDown*/,0x2808080)
oXMLGrid:SetProperty("Background",2/*exExpandBarButtonUp*/,0x2000000)
oXMLGrid:ShowFocusRect := .F.
oXMLGrid:SetProperty("SelBackColor",AutomationTranslateColor( GraMakeRGBColor ( { 0,0,0 } ) , .F. ))
oXMLGrid:SetProperty("SelBackColorChild",oXMLGrid:SelBackColor())
oXMLGrid:SetProperty("SelForeColor",AutomationTranslateColor( GraMakeRGBColor ( { 255,255,255 } ) , .F. ))
oXMLGrid:SetProperty("SelForeColorChild",oXMLGrid:SelForeColor())
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
10
|
How can change the visual appearance of the selected node

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oNode,oNode1,oNode2
LOCAL oNodes,oNodes1
LOCAL oXMLGrid
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oXMLGrid := XbpActiveXControl():new( oForm:drawingArea )
oXMLGrid:CLSID := "Exontrol.XMLGrid.1" /*{AC7F976E-48C3-4B0B-B952-45D92DFE7F3E}*/
oXMLGrid:create(,, {10,60},{610,370} )
oNode := oXMLGrid:Nodes():Add("Parent <b>1")
oNodes := oNode:Nodes()
oNode1 := oNodes:Add("Child 1")
oNode1:Value := "<sha ;;0>Event <b><font ;6><off -6>2<off 4>3<off 4>1"
oNode1:Selected := .T.
oNodes:Add("Child 2")
oNode:ExpandAll()
oNode2 := oXMLGrid:Nodes():Add("Parent <b>2")
oNodes1 := oNode2:Nodes()
oNodes1:Add("Child 1")
oNodes1:Add("Child 2")
oXMLGrid:ShowFocusRect := .F.
oXMLGrid:SetProperty("SelBackColor",AutomationTranslateColor( GraMakeRGBColor ( { 0,0,0 } ) , .F. ))
oXMLGrid:SetProperty("SelBackColorChild",oXMLGrid:SelBackColor())
oXMLGrid:SetProperty("SelForeColor",AutomationTranslateColor( GraMakeRGBColor ( { 255,255,255 } ) , .F. ))
oXMLGrid:SetProperty("SelForeColorChild",oXMLGrid:SelForeColor())
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
9
|
How can I select programatically a node

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oNode,oNode1
LOCAL oNodes,oNodes1
LOCAL oXMLGrid
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oXMLGrid := XbpActiveXControl():new( oForm:drawingArea )
oXMLGrid:CLSID := "Exontrol.XMLGrid.1" /*{AC7F976E-48C3-4B0B-B952-45D92DFE7F3E}*/
oXMLGrid:create(,, {10,60},{610,370} )
oNode := oXMLGrid:Nodes():Add("Parent <b>1")
oNodes := oNode:Nodes()
oNodes:Add("Child 1"):Selected := .T.
oNodes:Add("Child 2")
oNode:ExpandAll()
oNode1 := oXMLGrid:Nodes():Add("Parent <b>2")
oNodes1 := oNode1:Nodes()
oNodes1:Add("Child 1")
oNodes1:Add("Child 2")
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
8
|
How can I expand all nodes

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oNode
LOCAL oNodes
LOCAL oXMLGrid
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oXMLGrid := XbpActiveXControl():new( oForm:drawingArea )
oXMLGrid:CLSID := "Exontrol.XMLGrid.1" /*{AC7F976E-48C3-4B0B-B952-45D92DFE7F3E}*/
oXMLGrid:create(,, {10,60},{610,370} )
oNode := oXMLGrid:Nodes():Add("Parent")
oNodes := oNode:Nodes()
oNodes:Add("Child 1")
oNodes:Add("Child 2")
oNode:ExpandAll()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
7
|
Does your control support subscript or superscript

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oNode,oNode1
LOCAL oNodes,oNodes1
LOCAL oXMLGrid
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oXMLGrid := XbpActiveXControl():new( oForm:drawingArea )
oXMLGrid:CLSID := "Exontrol.XMLGrid.1" /*{AC7F976E-48C3-4B0B-B952-45D92DFE7F3E}*/
oXMLGrid:create(,, {10,60},{610,370} )
oNode := oXMLGrid:Nodes():Add("Parent <font ;6><off 4>1")
oNodes := oNode:Nodes()
oNode1 := oNodes:Add("Child 1")
oNode1:Value := "<sha ;;0>Event <b><font ;6><off -6>2<off 4>3<off 4>1"
oNodes:Add("Child 2")
oNode:ExpandAll()
oNodes1 := oXMLGrid:Nodes():Add("Parent <font ;6><off 4>2"):Nodes()
oNodes1:Add("Child 1")
oNodes1:Add("Child 2")
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
6
|
How can I add a UserType editor ( ActiveX )

PROCEDURE OnUserEditorClose(oXMLGrid,Object,Node)
/*Node.Value = Object.Value*/
RETURN
PROCEDURE OnUserEditorOpen(oXMLGrid,Object,Node)
/*Object.Value = Node.Value*/
RETURN
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oColumn,oColumn1
LOCAL oColumns
LOCAL oComboBox
LOCAL oEditor
LOCAL oEditors
LOCAL oItems
LOCAL oNode
LOCAL oXMLGrid
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oXMLGrid := XbpActiveXControl():new( oForm:drawingArea )
oXMLGrid:CLSID := "Exontrol.XMLGrid.1" /*{AC7F976E-48C3-4B0B-B952-45D92DFE7F3E}*/
oXMLGrid:create(,, {10,60},{610,370} )
oXMLGrid:UserEditorClose := {|Object,Node| OnUserEditorClose(oXMLGrid,Object,Node)} /*Fired the user editor is about to be opened.*/
oXMLGrid:UserEditorOpen := {|Object,Node| OnUserEditorOpen(oXMLGrid,Object,Node)} /*Occurs when an user editor is about to be opened.*/
oXMLGrid:NodeHeight := 24
oEditors := oXMLGrid:Editors()
oEditor := oEditors:Add("ExComboUserEditor",16/*UserEditorType*/)
oEditor:UserEditor("Exontrol.ComboBox","")
oComboBox := oEditor:UserEditorObject()
oComboBox:MinHeightList := 164
oComboBox:MinWidthList := 264
oComboBox:AllowSizeGrip := .T.
oComboBox:IntegralHeight := .T.
oComboBox:Alignment := 0/*LeftAlignment*/
oComboBox:ColumnAutoResize := .T.
oComboBox:BeginUpdate()
oComboBox:MarkSearchColumn := .F.
oColumns := oComboBox:Columns()
oColumn := oColumns:Add("Car")
oColumn:Width := 32
oColumn:DisplayFilterButton := .T.
oColumn1 := oColumns:Add("Equipment")
oColumn1:DisplayFilterButton := .T.
oColumn1:DisplayFilterPattern := .F.
oColumn1:CustomFilter := "Air Bag||*Air Bag*|||Air condition||*Air condition*|||ABS||*ABS*|||ESP||*ESP*"
oColumn1:FilterType := 3/*exPattern*/
oItems := oComboBox:Items()
oItems:SetProperty("CellCaption",oItems:AddItem("Mazda"),1,"Air Bag")
oItems:SetProperty("CellCaption",oItems:AddItem("Toyota"),1,"Air Bag,Air condition")
oItems:SetProperty("CellCaption",oItems:AddItem("Ford"),1,"Air condition")
oItems:SetProperty("CellCaption",oItems:AddItem("Nissan"),1,"Air Bag,ABS,ESP")
oComboBox:EndUpdate()
oNode := oXMLGrid:Nodes():Add("Car")
oNode:Editor := "ExComboUserEditor"
oNode:Value := "Mazda"
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
5
|
How can I load a XML file

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oXMLGrid
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oXMLGrid := XbpActiveXControl():new( oForm:drawingArea )
oXMLGrid:CLSID := "Exontrol.XMLGrid.1" /*{AC7F976E-48C3-4B0B-B952-45D92DFE7F3E}*/
oXMLGrid:create(,, {10,60},{610,370} )
oXMLGrid:LoadXML("C:\Windows\Ultimate.xml")
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
4
|
How can I assign a tooltip to a node

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oNode
LOCAL oXMLGrid
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oXMLGrid := XbpActiveXControl():new( oForm:drawingArea )
oXMLGrid:CLSID := "Exontrol.XMLGrid.1" /*{AC7F976E-48C3-4B0B-B952-45D92DFE7F3E}*/
oXMLGrid:create(,, {10,60},{610,370} )
oNode := oXMLGrid:Nodes():Add("Title")
oNode:Value := "value"
oNode:ToolTip := "This is a bit of <b>HTML</b> text to be shown when the cursor hovers the node."
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
3
|
How can I edit the node using a DateType editor

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oEditor
LOCAL oEditors
LOCAL oNode
LOCAL oXMLGrid
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oXMLGrid := XbpActiveXControl():new( oForm:drawingArea )
oXMLGrid:CLSID := "Exontrol.XMLGrid.1" /*{AC7F976E-48C3-4B0B-B952-45D92DFE7F3E}*/
oXMLGrid:create(,, {10,60},{610,370} )
oEditors := oXMLGrid:Editors()
oEditor := oEditors:Add("DateEditor",7/*DateType*/)
oEditor:SetProperty("Option",34/*exDateMarkToday*/,.T.)
oNode := oXMLGrid:Nodes():Add("Date")
oNode:Editor := "DateEditor"
oNode:Value := "01/01/2001"
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
2
|
How can I expand a node

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oNode
LOCAL oNodes
LOCAL oXMLGrid
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oXMLGrid := XbpActiveXControl():new( oForm:drawingArea )
oXMLGrid:CLSID := "Exontrol.XMLGrid.1" /*{AC7F976E-48C3-4B0B-B952-45D92DFE7F3E}*/
oXMLGrid:create(,, {10,60},{610,370} )
oNode := oXMLGrid:Nodes():Add("Parent")
oNodes := oNode:Nodes()
oNodes:Add("Child 1")
oNodes:Add("Child 2")
oNode:Expanded := .T.
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
1
|
How can I add a node

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oNodes
LOCAL oXMLGrid
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oXMLGrid := XbpActiveXControl():new( oForm:drawingArea )
oXMLGrid:CLSID := "Exontrol.XMLGrid.1" /*{AC7F976E-48C3-4B0B-B952-45D92DFE7F3E}*/
oXMLGrid:create(,, {10,60},{610,370} )
oNodes := oXMLGrid:Nodes():Add("Parent"):Nodes()
oNodes:Add("Child 1")
oNodes:Add("Child 2")
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|