Posted: Fri Mar 13, 2009 5:14 pm
Hello,
I modified the original code like this ...
This works very wel unless the line I usually 95-103 ... Compiler error ... ?
Someone has a solution? Or this form does not work?
Too many COMAT call ???
Thank you for your answer ...
(Excuse my English, I am Belgian and speak French ...)
I modified the original code like this ...
This works very wel unless the line I usually 95-103 ... Compiler error ... ?
Someone has a solution? Or this form does not work?
Too many COMAT call ???
Thank you for your answer ...
(Excuse my English, I am Belgian and speak French ...)
Code: Select all
;/////////////////////////////////////////////////////////////////////////////////
;***COMate*** COM automation through iDispatch.
;*====================================
;*
;*MSComctLib_TreeCtrl demo 2 (with events!) - by ???
;*This demo may not run correctly on XP with service pack 2. This is a known issue!
;/////////////////////////////////////////////////////////////////////////////////
;
; I have try with XP SP3....... Like this is OK But Whis the line 95---> 103 on... Than, ERROR with memory... I thing !
;
Global Rep$
Rep$=GetPathPart(ProgramFilename())
SetCurrentDirectory(Rep$)
IncludePath "..\..\"
XIncludeFile "COMate.pbi"
Enumeration ; Relationship
#tvwFirst
#tvwLast
#tvwNext
#tvwPrevious
#tvwChild
EndEnumeration
Define.COMateObject treeViewObject, treeNodeObject
;/////////////////////////////////////////////////////////////////////////////////
;The following is our event callback for our ActiveX object.
;The 'Object' parameter will contain the COMate object upon which was used the \SetEventHandler() method; in our case it will point
;to our treeViewObject.
Procedure EventProc(Object.COMateObject, eventName$, parameterCount)
If eventName$ = "NodeClick"
;Here we set the string gadget's text to match the text of the selected item.
SetGadgetText(1, Object\GetStringEventParam(1))
EndIf
EndProcedure
;/////////////////////////////////////////////////////////////////////////////////
;/////////////////////////////////////////////////////////////////////////////////
;The following utility adds a new node to the tree.
Procedure.l TreeviewNodesAdd(treeViewObject.COMateObject, Relative.s = "", Relationship.l = -1, key.s = "", Text.s = "")
Protected treeNodeObject.COMateObject
treeNodeObject = treeViewObject\GetObjectProperty("Nodes\Add('" + Relative + "', " + Str(Relationship) + ", '" + key + "', '" + Text + "')")
ProcedureReturn treeNodeObject
EndProcedure
;/////////////////////////////////////////////////////////////////////////////////
If OpenWindow(0, #PB_Ignore, #PB_Ignore, 450, 600, "COMate - TreeView ActiveX demo 2 (with events!)")
StringGadget(1, 5, 5, 440, 20,"")
treeViewObject = COMate_CreateActiveXControl(5, 30, 440, 565, "MSComctlLib.TreeCtrl")
If treeViewObject
treeViewObject\SetProperty("HideSelection = #False")
treeViewObject\SetProperty("LabelEdit = 1") ;Change to zero for automatic one-click editing.
; Ajout du NOEUD SOURCE.....
treeNodeObject = treeViewObject\GetObjectProperty("Nodes\Add")
treeNodeObject\SetProperty("Text = 'Root'")
treeNodeObject\SetProperty("Key = 'root'")
treeNodeObject\SetProperty("Expanded = #True")
treeNodeObject\Release()
;
; Ajout du Premier SOUS Noeud
treeNodeObject = TreeviewNodesAdd(treeViewObject, "root", #tvwChild, "animals", "Animals")
treeNodeObject\SetProperty("Expanded=#True")
treeNodeObject\Release()
;
; Ajout du Premier SOUS/ Sous Noeud
treeNodeObject = TreeviewNodesAdd(treeViewObject, "animals", #tvwChild, "cats", "Chats")
treeNodeObject\Release()
; Ajout du Troisième SOUS/ Sous Noeud /sous Noeud
treeNodeObject = TreeviewNodesAdd(treeViewObject, "cats", #tvwChild, "jouet", "Jouets")
treeNodeObject\Release()
; ; Ajout du Troisième SOUS/ Sous Noeud /sous Noeud
treeNodeObject = TreeviewNodesAdd(treeViewObject, "cats", #tvwChild, "Vaccins", "Vaccins")
treeNodeObject\Release()
; Ajout du Troisième SOUS/ Sous Noeud /sous Noeud
treeNodeObject = TreeviewNodesAdd(treeViewObject, "cats", #tvwChild, "Vétérinaire", "Vétérinaire")
treeNodeObject\Release()
; Ajout du Second SOUS/ Sous Noeud
treeNodeObject = TreeviewNodesAdd(treeViewObject, "animals", #tvwChild, "dogs", "Chiens")
treeNodeObject\Release()
; ***********************************************************************************************************************
; <<<<<<<<<<<<<< Here if you ativate line below, than the compiler have some problems...>>>>>>>>>>>
; Is above or below .... Not all two... !!! Wy ????????????
; ***********************************************************************************************************************
; Ajout du Troisième SOUS/ Sous Noeud /sous Noeud
;- treeNodeObject = TreeviewNodesAdd(treeViewObject, "dogs", #tvwChild, "jouet", "Jouets")
;- treeNodeObject\Release()
; Ajout du Troisième SOUS/ Sous Noeud /sous Noeud
;- treeNodeObject = TreeviewNodesAdd(treeViewObject, "dogs", #tvwChild, "Vaccins", "Vaccins")
;- treeNodeObject\Release()
; Ajout du Troisième SOUS/ Sous Noeud /sous Noeud
;- treeNodeObject = TreeviewNodesAdd(treeViewObject, "dogs", #tvwChild, "Vétérinaire", "Vétérinaire")
;- treeNodeObject\Release()
;
; Ajout du Second SOUS Noeud
treeNodeObject = TreeviewNodesAdd(treeViewObject, "root", #tvwChild, "cars", "Cars")
treeNodeObject\SetProperty("Expanded=#True")
treeNodeObject\Release()
;
; Ajout du Premier SOUS/ Sous Noeud du second SOUS...
treeNodeObject = TreeviewNodesAdd(treeViewObject, "cars", #tvwChild, "ferrari", "Ferrari")
treeNodeObject\Release()
; Ajout du Second SOUS/ Sous Noeud
treeNodeObject = TreeviewNodesAdd(treeViewObject, "cars", #tvwChild, "lamborghini", "Lamborghini")
treeNodeObject\Release()
;
; Data.s "0 ROOT", "Gestion d'un Budget"
; Data.s "1 POST", 2
; Data.s,"1 ENTREE"
; Data.s "1 S-POST", "8"
; Data.s, "Traitement 1","Traitement 2","Allocations 1","Allocations 2", "Allocations 3","Rente 1","Rente 2","Rente 3"
; Data.s, "2 SORTIE"
; Data.s "2 S-POST","11"
; Data.s "Alimentations","Habillement","Santé","Hygiène et Entretient","Equipement et Entretient Maison"
; Data.s "Electro Et Mobiliers","Matériel Bureaux et Librairie","Frais Scolaire et Sportif","Sorties et Divers","Animaux et Jardins"
; Data.s "FIN"
;
; Règle : Dès la deuxième lecture, quand le nom d'une rubrique devient un titre on augmente de niveau....
; ---------
;
; Pour le ROOT ou Premier noeud ===> Nom de la source ===> BUDGET par exemple
; ----------------------------------------------------------------------------------------------------------------
; pour les Sous Noeud principaux ==le 1 ====> Ici Cathégories.. ======> ENTREE
; ---------------------------------------------------------------------------------------------------------
; Pour les entrées ou Sous Noeud 1 du sous Noeud ==========> Traitement 1
; Pour les entrées ou Sous Noeud 1 du sous Noeud ==========> Traitement 2
; Pour les entrées ou Sous Noeud 1 du sous Noeud ==========> Allocations 1
; Pour les entrées ou Sous Noeud 1 du sous Noeud ==========> Allocations 2
; Pour les entrées ou Sous Noeud 1 du sous Noeud ==========> Allocations 3
; Pour les entrées ou Sous Noeud 1 du sous Noeud ==========> Rente 1
; Pour les entrées ou Sous Noeud 1 du sous Noeud ==========> Rente 2
; Pour les entrées ou Sous Noeud 1 du sous Noeud ==========> Rente 3
; ----------------------------------------------------------------------------------------------------------------
; pour les Sous Noeud principaux ==le 2 ====> Ici Cathégories.. ======> SORTIE
; ---------------------------------------------------------------------------------------------------------
; Pour les entrées ou Sous Noeud 2 du sous Noeud ==========> Alimentations
; Pour les entrées ou Sous Noeud 2 du sous Noeud ==========> Habillement
; Pour les entrées ou Sous Noeud 2 du sous Noeud ==========> Santé
; Pour les entrées ou Sous Noeud 2 du sous Noeud ==========> Hygiène et Entretient
; Pour les entrées ou Sous Noeud 2 du sous Noeud ==========> Equipement et Entretient Maison
; Pour les entrées ou Sous Noeud 2 du sous Noeud ==========> Electro Et Mobiliers
; Pour les entrées ou Sous Noeud 2 du sous Noeud ==========> Matériel Bureaux et Librairie
; Pour les entrées ou Sous Noeud 2 du sous Noeud ==========> Frais Scolaire et Sportif
; Pour les entrées ou Sous Noeud 2 du sous Noeud ==========> Sorties et Divers
; Pour les entrées ou Sous Noeud 2 du sous Noeud ==========> Animaux et Jardins
; ---------------------------------------------------------------------------------------------------------------------------------------
; Initialise le Callback. d'evenement
;
treeViewObject\SetEventHandler(#COMate_CatchAllEvents, @EventProc())
;
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Break
Case #PB_Event_Gadget
;
Select EventGadget()
Case 1
If EventType() = #PB_EventType_Change
treeNodeObject = treeViewObject\GetObjectProperty("SelectedItem")
;
If treeNodeObject
NewNodeText$=GetGadgetText(1)
treeNodeObject\SetProperty("Text = '" + NewNodeText$ + "'")
treeNodeObject\Release()
EndIf
;
EndIf
EndSelect
;
EndSelect
ForEver
treeViewObject\Release()
Else
MessageRequester("COMate - TreeView ActiveX demo", "Couldn't create the ActiveX control!")
EndIf
CloseWindow(0)
EndIf
End