Zugriff auf Methoden der "Child" vom "Parent" bei "mehrstufi

Klassen, Objekte, Methoden, Instanzen

Moderator: Moderatoren

Antworten
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Zugriff auf Methoden der "Child" vom "Parent" bei "mehrstufi

Beitrag von AUGE_OHR »

hi,

bei fast allen XbPart wo man mit o:addItem() ein Item anfügt gehört eine übergeordnete Class dazu
XbpMenuBar() / XbpMenu()
XbpStatusBar() / XbpStatusBarPanel()
XbpToolBar() / XbpToolBarButton()
XbpTreeView() / XbpTreeViewItem()
Frage : o:getChildItems()

in der Hilfe steht das es sich auf XbpTreeViewItem() bezieht also

Code: Alles auswählen

   aChildList := oNode:getChildItems()
nun habe ich jetzt das gesehen

Code: Alles auswählen

   aChildList := oTree:getChildItems()
oTree ist ja ein XbpTreeView() was aus einzelnen oItem := XbpTreeViewItem() besteht welche man durch oTree:addItem() erhält.

---

da es 2 Classen sind habe ich die auch in der DXE unterteilt und in der DXE_TreeViewItem() gibt es die Method o:getChildItems()
bei den oben aufgeführten 2nd Code (oTree) erhalte ich nun mit meinem native Control die Fehlermeldung
oError:args :
-> VALTYPE: O CLASS: DXE_TreeView
oError:canDefault : N
oError:canRetry : N
oError:canSubstitute: J
oError:cargo : NIL
oError:description : Methode ist für dieses Objekt unbekannt
oError:filename :
oError:genCode : 23
oError:operation : getChildItems
oError:osCode : 0
oError:severity : 2
oError:subCode : 2220
oError:subSystem : BASE
oError:thread : 1
oError:tries : 0
STIMMT !
in DXE_TreeView gibt es keine Method o:getChildItems, die ist in DXE_TreeViewItem() ...

mögliche Lösung :

Code: Alles auswählen

METHODE DXE_TreeView:getChildItems()
RETURN ::RootItem:getChildItems()
---

in MSCOMCTL.OCX geht der Treeview über die Property "Nodes".

über die "Nodes" Property "Item" kommt man zum einzelnen "Node"
unter "Node" gibt es dann
Children property (Node) Returns the number of child nodes a Node object has.
Child property (Node) Returns a reference to the first child of a Node object.
Treeview_Node.jpg
Treeview_Node.jpg (126 KiB) 4660 mal betrachtet
---

es gibt also keine ursprüngliche Property sondern da wurde eine neue Method o:getChildItems aus den beiden gebastelt.

nun funktioniert es aber "auch" mit XbpTreeView() aber es ist nur unter XbpTreeViewItem() dokumentiert ... hm ... :-k
es könnte eine undokumentierte Method von XbpTreeView() sein ... oder übersehe ich da noch was (OOP) ?
gruss by OHR
Jimmy
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Zugriff auf Methoden der "Child" vom "Parent" bei "mehrs

Beitrag von AUGE_OHR »

ich "denke" ich komme langsam dahinter was Alaska da macht.

die Class XbpTreeViewItem() hat ja
Superklassen
DataRef()
und Class XbpTreeView()
Superklassen
DataRef()
XbpWindow()
also sind die durch die Superclass DataRef() "verwandt", oder ?

ich müsste also "nur" um DataRef() erweitern

Code: Alles auswählen

CLASS DXE_Treeview FROM XbpStatic, DataRef      // erweitern um DataRef
CLASS DXE_TreeViewItem FROM XbpStatic, DataRef  // hier XbpStatic zu viel ?
nun gibt die Class DataRef() aber kein XbPart*** als Object zurück

Code: Alles auswählen

XbpTreeView():getData() --> oTreeViewItem
dummerweise geht das nicht

Code: Alles auswählen

oTreeViewItem:GethWnd() --> crash
deshalb hatte ich es dort an ein XbpStatic "gekoppelt" ... aber wenn das Alaska nicht hat ...

*** ein XbPart hat ein Handle mit o:GethWnd()
gruss by OHR
Jimmy
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Zugriff auf Methoden der "Child" vom "Parent" bei "mehrs

Beitrag von AUGE_OHR »

AUGE_OHR hat geschrieben:ich "denke" ich komme langsam dahinter was Alaska da macht.
habe es ausprobiert und lande wieder bei
oError:args :
-> VALTYPE: O CLASS: DXE_TreeView
oError:canDefault : N
oError:canRetry : N
oError:canSubstitute: J
oError:cargo : NIL
oError:description : Methode ist für dieses Objekt unbekannt
oError:filename :
oError:genCode : 23
oError:operation : getChildItems
oError:osCode : 0
oError:severity : 2
oError:subCode : 2220
oError:subSystem : BASE
oError:thread : 1
oError:tries : 0
also benötige ich in meinem DXE_Treeview eine

Code: Alles auswählen

METHOD DXE_TreeView:GetChildItems()
welche (nur) auf den Root "wirkt"
gruss by OHR
Jimmy
Antworten