OOP - AutoitObjekt - Objekte einbetten?

  • Hallo Zusammen,

    ich experimentiere gerade etwas mit tollen AutoItObject und habe dazu eine Anfängerfrage, nämlich wie bette ich Objekte in Objekte ein? Hier mal mein erfolgloser Versuch:

    [autoit]


    #include "AutoitObject.au3"

    [/autoit][autoit][/autoit][autoit]

    _AutoItObject_Startup()
    ; einfachstes Objekt
    Func _Object_1()
    Local $oClassObject = _AutoItObject_Class()
    $oClassObject.Create()
    $oClassObject.AddProperty("x")
    $oClassObject.AddDestructor("_DestructorForSomeObject")
    Return $oClassObject.Object
    EndFunc

    [/autoit][autoit][/autoit][autoit]

    ; einfache vererbung funktioniert
    Func _Object_2()
    Local $oClassObject = _AutoItObject_Class()
    $oClassObject.Create(_Object_1())
    $oClassObject.AddProperty("y")
    $oClassObject.AddDestructor("_DestructorForSomeObject")
    Return $oClassObject.Object
    EndFunc

    [/autoit][autoit][/autoit][autoit]

    ; einbetten von objekten geht so nicht!
    Func _Object_3()
    Local $oClassObject = _AutoItObject_Class()
    Local $test = _Object_1()
    $oClassObject.Create()
    $oClassObject.AddProperty($test)
    $oClassObject.AddDestructor("_DestructorForSomeObject")
    Return $oClassObject.Object
    EndFunc

    [/autoit][autoit][/autoit][autoit]

    $oTest1 = _Object_1()
    $oTest2 = _Object_2()
    $oTest3 = _Object_3()

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    $oTest1.x = 4711
    $oTest2.y = 815
    $oTest3.test.x = 7

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    consolewrite($oTest1.x&@CRLF)
    consolewrite($oTest2.y&@CRLF)
    consolewrite($oTest3.test.x&@CRLF)

    [/autoit]

    Vielen Dank für die Hilfe und beste Grüße
    uuchip

    Einmal editiert, zuletzt von uuchip (26. März 2014 um 12:41)

  • Ich kann deiner frage nicht genau entnehmen was du willst aber ich denke du meinst folgendes:

    Spoiler anzeigen
    [autoit]

    _AutoItObject_Startup()
    $oObj = _AutoItObject_Create()
    _AutoItObject_AddProperty($oObj, "Test", $ELSCOPE_PUBLIC, _UnterObjekt())
    MsgBox(64,"Test","X: " & $oObj.Test.X & @CRLF & _
    "Y: " & $oObj.Test.Y)
    _AutoItObject_Shutdown()

    [/autoit] [autoit][/autoit] [autoit]

    Func _UnterObjekt()
    Local $oDummy = _AutoItObject_Create()
    _AutoItObject_AddProperty($oDummy, "X", $ELSCOPE_PUBLIC, 100); X-> name des Eingebetteten objekts || 100 wert den das objekt haben soll
    _AutoItObject_AddProperty($oDummy, "Y", $ELSCOPE_PUBLIC, 63); Y-> name des Eingebetteten objekts || 63 wert den das objekt haben soll
    ; Kier könnten dann noch weitere Unterobjekte folgen
    Return $oDummy
    EndFunc

    [/autoit]