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)
|
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
|
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
|
45 |
How can I load the control's content using a different version of XML DOM
|
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
|
42 |
How can I load XML from http or URL
|
41 |
How can I load XML from a supplied string
|
40 |
How do I programatically search for a node
|
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 )
|
34 |
How can I mark the node only, without its child
|
33 |
How can I mark the entire node
|
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
|
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
|
28 |
How do I change the control's visual appearance using the UI Visual Designer
|
27 |
How do I specify to search for name of the nodes only, when the user filters the control
|
26 |
Is it possible to include child-nodes, when do filtering
|
25 |
How can I change the control's filtering so it searches for Contains rather than Start
|
24 |
How do I enable the control's filtering support
|
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
|
21 |
Does your control support transparent selection
|
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)
|
18 |
How can I highlight the focused/selected node only, instead highlighting its childrend collection (method 2)
|
17 |
How can I highlight the focused/selected node only, instead highlighting its childrend collection (method 1)
|
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
|
14 |
How do I print the control
|
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
|
8 |
How can I expand all nodes
|
7 |
Does your control support subscript or superscript
|
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
|
4 |
How can I assign a tooltip to a node
|
3 |
How can I edit the node using a DateType editor
|
2 |
How can I expand a node
|
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 |