Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1604to1608
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Klassenvererbung - Übergabe Parent variabel?

Klassenvererbung - Übergabe Parent variabel?
08.02.2018 10:46:30
Alex
Hallo,
ich beschäftige mich aktuell mit der Programmierung von Klassen in VBA und möchte gerne eine Struktur in der Art "Parent.Child1.GrandChild" erstellen.
Hierzu habe ich eine Klasse clsParent, clsChild1 und clsGrandChild erstellt. Dies funktioniert auch super.
Nun möchte ich die Klasse clsGrandChild aber auch für eine zweite Child-Klasse (clsChild2) verwenden, welche andere Funktionen und Prozeduren beinhaltet als clsChild1.
Jedoch muss ich zur initialisierung der Klasse clsGrandChild die Eltern-Klasse im Code fest hinterlegen und da ich die Klasse nicht doppelt schreiben möchte, würde ich gerne wissen ob es möglich ist diese variabel oder undefiniert zu erstellen.
Ist so etwas möglich? Kann ich die GrandChild Klasse so variabel definieren, dass ich beiden Child-Klassen auf diese zuzugreifen kann?
Hier mal der Code wie ich es aktuell aufgebaut habe (kurzform):
clsParent:

Option Explicit
Public Child1 As clsChild1
Private Sub Class_Initialize()
Set Child1 = New clsChild1
Set Child1.Parent = Me
set Child2 = new clsChild2
set Child2.Parent = me
End Sub

clsChild1:

Option Explicit
Private cParent As clsParent
Private Sub Class_Initialize()
Set GrandChild = New clsGrandChild
Set GrandChild.Parent = Me
End Sub
Public Property Set Parent(objParent As clsParent)
If cParent Is Nothing Then
Set cParent = objParent
End If
End Property
Public Property Get Parent() As clsParent
Set Parent = cParent
End Property

clsChild2:

Option Explicit
Private cParent As clsParent
Private Sub Class_Initialize()
Set GrandChild = New clsGrandChild
Set GrandChild.Parent = Me
End Sub
Public Property Set Parent(objParent As clsParent)
If cParent Is Nothing Then
Set cParent = objParent
End If
End Property
Public Property Get Parent() As clsParent
Set Parent = cParent
End Property

clsGrandChild

Option Explicit
Private cParent As clsChild
Public Property Set Parent(objParent As clsChild)
If cParent Is Nothing Then
Set cParent = objParent
End If
End Property
Public Property Get Parent() As clsChild
Set Parent = cParent
End Property

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Klassenvererbung - Übergabe Parent variabel?
12.02.2018 15:44:01
mmat
Das hier (in clsGrandChild)
Private cParent As clsChild
macht die Geschichte wohl wenig flexibel. Du kannst das an der Stelle abstrakt mit "Object" deklarieren
AW: Klassenvererbung - Übergabe Parent variabel?
13.02.2018 23:24:28
Alex
Vielen Dank. Das war der entscheidene Tipp. Auf das Object bin ich nicht gekommen
Gruß Alex
gern geschehen (o.w.T.)
14.02.2018 12:22:18
mmat
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige