Objekt- Freigabe? (Property?)

Hallo, ich versuche aus einer form Main auf eine Eigenschaft, die zwei Klassenebenen darunter liegt, zuzugreifen. Es gelngt aber nicht…

Voraussetzungen:

  1. Form: frmMain
  2. Klasse: clsObject1
  3. Klasse: clsObject2
  4. clsObject2 besitzt Eigenschaft varName und mArray

Ich erzeuge in frmMain clsObject1 und in clsObject1 wiederum clsObject2. clsObject2 bekommt die beiden Eigenschaften durch property get/let.

frmMain:

Dim Object1 As clsObj1  
Set Object1 = New clsObj1   
  
Dim Object2 As clsObj2  
Set Object2 = New clsObj2   

clsObj1:

Public Property Get varName As String  
 varName = lkl\_varName  
End Property  
Public Property Let varName(ByRef par\_Name As String)  
 lkl\_varName = par\_Name  
End Property  
  
Public Property Get Object2() As clsObj2  
 Object2 = lkl\_clsObj2  
End Property  

clsObj2:

Public Property Get varName() As String  
 varName= lkl\_Name  
End Property  
Public Property Let varName(ByRef par\_Name As String)  
 lkl\_Name = par\_Name  
End Property  
  
Public Property Get mArray() As Variant  
 mArray = lkl\_Array()  
End Property  
Public Property Let mArray(ByRef par\_Array As Variant)  
 lkl\_Array = par\_Array  
End Property  

Irgendwie stimmt aber die Freigabe nicht; weder die der varName noch die des mArray, denn ich kann aus frmMain nicht per

frmMain.Object1.Object2.varName

daraufzugreifen.
Wie muß ich Object2 freigeben, damit das geht? Ändert sich etwas an der Freigabe, wenn es sich um ein Array handelt, auf das ich zugreifen will? Etwa so:

frmMain.Object1(1).Object2(1).varArray

Vielen Dank.

Hi,

das Object2 wird, ebenso wie das Object1 innerhalb Deiner
frmMain deklariert.

Damit kann der Zugriff auf die Methoden und Eigenschaften der beiden Objekte nur per
frmMain.Object1.Property bzw
frmMain.Object2.Property
erfolgen.

Lösung: Object2 innerhalb von Object1 deklarieren.
Dann klappts auch mit dem gewünschten Aufruf
frmMain.Object1.Object2.Property

Deine Vermutung bzgl. der Arrays ist richtig.

br
Thomas

Hallo, ich versuche aus einer form Main auf eine Eigenschaft,
die zwei Klassenebenen darunter liegt, zuzugreifen. Es gelngt
aber nicht…

Voraussetzungen:

  1. Form: frmMain
  2. Klasse: clsObject1
  3. Klasse: clsObject2
  4. clsObject2 besitzt Eigenschaft varName und mArray

Ich erzeuge in frmMain clsObject1 und in clsObject1 wiederum
clsObject2. clsObject2 bekommt die beiden Eigenschaften durch
property get/let.

frmMain:

Dim Object1 As clsObj1  
> Set Object1 = New clsObj1  
>   
> Dim Object2 As clsObj2  
> Set Object2 = New clsObj2  

clsObj1:

Public Property Get varName As String  
> varName = lkl\_varName  
> End Property  
> Public Property Let varName(ByRef par\_Name As String)  
> lkl\_varName = par\_Name  
> End Property  
>   
> Public Property Get Object2() As clsObj2  
> Object2 = lkl\_clsObj2  
> End Property  

clsObj2:

Public Property Get varName() As String  
> varName= lkl\_Name  
> End Property  
> Public Property Let varName(ByRef par\_Name As String)  
> lkl\_Name = par\_Name  
> End Property  
>   
> Public Property Get mArray() As Variant  
> mArray = lkl\_Array()  
> End Property  
> Public Property Let mArray(ByRef par\_Array As Variant)  
> lkl\_Array = par\_Array  
> End Property  

Irgendwie stimmt aber die Freigabe nicht; weder die der
varName noch die des mArray, denn ich kann aus frmMain nicht
per

frmMain.Object1.Object2.varName

daraufzugreifen.
Wie mu? ich Object2 freigeben, damit das geht? ?ndert sich
etwas an der Freigabe, wenn es sich um ein Array handelt, auf
das ich zugreifen will? Etwa so:

frmMain.Object1(1).Object2(1).varArray

Vielen Dank.