Seite 1 von 1

Re: Verständnisfrage zum Objektmodell?

Verfasst: Di, 05.01.2010 07:32
von Charly
Hallo Strunz!
Strunz hat geschrieben: oDialog ist das Objekt richtig
Hier hast du etwas falsch verstanden. oDialog ist nicht das Object, sondern eine Variable. Dieser Variablen musst du zuerst ein Objekt zuweisen, damit du es als Objekt benützen kannst. Bei Dialogen wird sie in der Regel auch noch außerhalb einer SUB deklariert, damit sie auch in anderen SUB zur Verfügung steht.

Code: Alles auswählen

Dim oDialog as object

Sub DialogboxStarten()
Doc = Thiscomponent
DialogLibraries.loadLibrary("Standard") 
oLib = DialogLibraries.getByName("Standard") 
oLibDlg = oLib.getByName("Dialog1") 
oDialog = CreateUnoDialog(oLibDlg)
oDialog.execute()
End Sub
Strunz hat geschrieben: Warum kann dann hinter diesem noch die Eigenschaft "text" angefügt werden?
getControl ist eine Methode. Als Rückgabewert erhälts du ein Object, das wiederrum Eigenschaften und Methoden hat. wie z.B. Text.
Strunz hat geschrieben: Ginge das auch so:
oDialog.getControl("Label1")
oDialog.text="Sie haben usw."
So geht es nicht. oDialog bezieht sich nur auf das Hintergrundfenster und nicht auf die einzelnen Textfelder. Wenn du die Befehle getrennt haben willst musst du jeden Teilschritt einer Variablen zuweisen.

Code: Alles auswählen

oLab1 = oDialog.getControl("Label1")
oLab1.text="Sie haben usw."
Gruß
Charly

Re: Verständnisfrage zum Objektmodell?

Verfasst: Di, 05.01.2010 14:07
von ykcim
Hallo Strunz,

Gast hat geschrieben:Hallo,

oDialog.getControl("Label1").text="Sie haben usw."

Dabei habe ich folgende Fragen:
-oDialog ist das Objekt richtig?
-getControl ist die Methode?
Warum kann dann hinter diesem noch die Eigenschaft "text" angefügt werden?
Ginge das auch so:
oDialog.getControl("Label1")
oDialog.text="Sie haben usw."
????
Du siehst es richtig und nicht richtig gleichzeitig :)
oDialog ist in diesem Zusammenhang ein Objekt, und zwar das Objekt das den kompletten Dialog enthält. Dieses Objekt hat wiederum eigene Objekte, diese werden unter anderen mit der Methode getControl aufgerufen. Und durch diese Methode werden die Eigenschaften nicht auf das Originalobjekt übergeben.
Mit der Methode getcontrol kann man dafür direkt auf die Eigensschaften des (Unter)Objekte#s zugreifen.

Code: Alles auswählen

oDialog.getControl("Label1").text="Sie haben usw."
Ein anderer Weg ist:

Code: Alles auswählen

oLabel1=oDialog.getControl("Label1")
oLabel1.text="Sie haben usw."
Anders geht es nicht weil man nur auf die Eigenschaften eines Objektes direkt zugreifen kann. Mit getcontrol kann man dieses aber umgehen.
Entweder in dem man es im Code als Objektträger verwendet ( oDialog.getcontrol("Label1").eigenschaft oder methode) oder das Objekt selber einer Variablen zu ordnet.


mfg
Michael

Re: Verständnisfrage zum Objektmodell?

Verfasst: Di, 05.01.2010 14:16
von ykcim
Hallo Charly
oDialog bezieht sich nur auf das Hintergrundfenster und nicht auf die einzelnen Textfelder
oDialog enthält die einzelnen Textfelder! Ein Objekt kann keine oder viele Objekte beinhalten.
Und du kommst ohne das Hauptobjekt nicht an die darunterliegenden!
Da dies so ist kommt man mit gecontrol an die Eigenschaften des Textfeldes.

mfg
Michael

Re: Verständnisfrage zum Objektmodell?

Verfasst: Di, 05.01.2010 14:35
von Charly
Hallo Michael!
Ykcim hat geschrieben: oDialog enthält die einzelnen Textfelder! Ein Objekt kann keine oder viele Objekte beinhalten.
Und du kommst ohne das Hauptobjekt nicht an die darunterliegenden!
Da dies so ist kommt man mit gecontrol an die Eigenschaften des Textfeldes
Das ist mir bekannt. Ich wollte mich nur einfach und kurz ausdrücken. Ich hätte wahrscheinlich besser statt Hintergrundfenster "Container, der die übrigen Objekte enthält" schreiben sollen.

Gruß
Charly