Seite 1 von 3
Verständnisfrage zum Objektmodell?
Verfasst: Sa 10. Sep 2011, 11:50
von Strunz
Hallo,
ich habe Fragen zu folgendem Code:
Dim oSheets as Object
Dim oSheet as Object
oSheets = ThisComponent
oSheet = oSheets.getByName("Tabelle2")
Fragen:
Mit ThisComponent greife ich auf das Objekt zu (Objectvariable oSheets), das ist doch so?
Woher weiß man, dass die Methode "getByName()" sich auf die Objectvariable "oSheets" bezieht?
Liefert wohl "OSheets" wieder Objecte zurück?
Wie kann ich das in der "API" herausfinden bzw. mit dem Tool "X-Ray"?
cu
Strunz
Re: Verständnisfrage zum Objektmodell?
Verfasst: Sa 10. Sep 2011, 12:32
von komma4
Willkommen im Forum
Strunz hat geschrieben:Wie kann ich das in der "API" herausfinden bzw. mit dem Tool "X-Ray"?
Ja.
Zum Unterschied zwischen
ThisComponent und
StarDesktop.CurrentComponent, siehe
Worin besteht der Unterschied zwischen thisComponent und CurrentComponent?
oder auch
http://wiki.services.openoffice.org/wik ... he_UNO_API
Viel Erfolg!
Re: Verständnisfrage zum Objektmodell?
Verfasst: Sa 10. Sep 2011, 14:26
von Strunz
komma4 hat geschrieben:Willkommen im Forum
Strunz hat geschrieben:Wie kann ich das in der "API" herausfinden bzw. mit dem Tool "X-Ray"?
Ja.
Viel Erfolg!
Wenn ich das XRay-Tool benutze steht nachdem Aufruf (Calc) folgendes:
ScModelObj
wenn ich jetzt die Methoden aufrufe kommt aber nicht "getbyname()"!
Was habe ich falsch gemacht?
Gruss
Strunz
Re: Verständnisfrage zum Objektmodell?
Verfasst: Sa 10. Sep 2011, 19:10
von komma4
Strunz hat geschrieben:ScModelObj
wenn ich jetzt die Methoden aufrufe kommt aber nicht "getbyname()"!
Du hast
Probiere mal
Re: Verständnisfrage zum Objektmodell?
Verfasst: Sa 10. Sep 2011, 19:31
von Strunz
komma4 hat geschrieben:Strunz hat geschrieben:ScModelObj
wenn ich jetzt die Methoden aufrufe kommt aber nicht "getbyname()"!
Du hast
Probiere mal
Hallo,
danke erstmal!
Woher weißt du das bzw. wo kann ich das nachlesen?
cu
Strunz
Re: Verständnisfrage zum Objektmodell?
Verfasst: Sa 10. Sep 2011, 19:32
von F3K Total
Hallo Strunz,
ich versuche es mal mit meinen "nicht-Informatiker" Worten zu beschreiben.
Mit "thisComponent" greifst Du auf die gesamte Calc Datei zu.
mit "xray thisComponent" wirst Du feststellen, das es dort die "sheets" gibt, das sind die Tabellen der Datei, bei einer jungfreulichen sind es drei, Tabelle1, Tabelle2, Tabelle3, die haben die Indexe 0,1,2.
Auf die Tabellen kannst Du dann mit verschiedenen Methoden zugreifen:
1.)
2.)
d.h. der Aufruf auf Tabelle1 lautet:
oder
Kurzform:
oder (nur wenn Tabellenname ohne Leerzeichen usw.)
Wenn Du vorher eigene Objekte dimensionierst
z.B.
'Mehrzahl
und
'Einzahl, dann kannst Du sie so, sinnfällig zuweisen:
Code: Alles auswählen
oSheets=ThisComponent.sheets
osheet=oSheets.getbyIndex(0)
oder
oder
oder
... und in der Tabelle1 gibt es Zellen, auf die Du wieder mit mehreren Methoden zugreifen kannst, z.B.
Code: Alles auswählen
ocell=osheet.getCellByPosition(0,0)' Zelle A1
ocell=osheet.getCellByPosition(2,0)' Zelle C1
ocell=osheet.getCellByPosition(2,2)' Zelle C3
oder
oder
Code: Alles auswählen
orange=osheet.getCellrangebyName("A1:B4")'Zellen im Rechteck A1 bis B4 also A1, A1, A3 ... B3, B4)
HTH
Gruß R
edit: hatte fälschlicherweise statt "getCellByPosition" "getByPosition" geschrieben.
Re: Verständnisfrage zum Objektmodell?
Verfasst: Sa 10. Sep 2011, 19:59
von Strunz
F3K Total hat geschrieben:Hallo Strunz,
ich versuche es mal mit meinen "nicht-Informatiker" Worten zu beschreiben.
Mit "thisComponent" greifst Du auf die gesamte Calc Datei zu.
mit "xray thisComponent" wirst Du feststellen, das es dort die "sheets" gibt, das sind die Tabellen der Datei, bei einer jungfreulichen sind es drei, Tabelle1, Tabelle2, Tabelle3, die haben die Indexe 0,1,2.
Auf die Tabellen kannst Du dann mit verschiedenen Methoden zugreifen:
1.)
2.)
d.h. der Aufruf auf Tabelle1 lautet:
Meine Frage zu diesem Codeschnipsel ist: sheets ein Objekt oder eine Eigenschaft?
Warum geht folgender Codeschnipsel nicht:
thisComponent.getByIndex(0)
Kurzform:
oder (nur wenn Tabellenname ohne Leerzeichen usw.)
Wenn Du vorher eigene Objekte dimensionierst
z.B.
'Mehrzahl
und
'Einzahl, dann kannst Du sie so, sinnfällig zuweisen:
Code: Alles auswählen
oSheets=ThisComponent.sheets
osheet=oSheets.getbyIndex(0)
oder
oder
oder
... und in der Tabelle1 gibt es Zellen, auf die Du wieder mit mehreren Methoden zugreifen kannst, z.B.
Code: Alles auswählen
ocell=osheet.getByPosition(0,0)' Zelle A1
ocell=osheet.getByPosition(2,0)' Zelle C1
ocell=osheet.getByPosition(2,2)' Zelle C3
oder
oder
Code: Alles auswählen
orange=osheet.getCellrangebyName("A1:B4")'Zellen im Rechteck A1 bis B4 also A1, A1, A3 ... B3, B4)
HTH
Gruß R
Re: Verständnisfrage zum Objektmodell?
Verfasst: Sa 10. Sep 2011, 20:11
von F3K Total
Hallo Strunz,
warum liest Du nicht, was ich geschrieben habe?
sheets ist ein Objekt, und
thisComponent.getByIndex(0) geht nicht, weil unter ThisComponent nix per Index anzusprechen ist!
Erst eine Ebene tiefer, "thisComponent.sheets", kannst Du per Index auf die Tabellen zugreifen, wie ich es eben ausführlich beschrieben habe.
Gruß R
Re: Verständnisfrage zum Objektmodell?
Verfasst: Sa 10. Sep 2011, 20:27
von Strunz
F3K Total hat geschrieben:Hallo Strunz,
warum liest Du nicht, was ich geschrieben habe?
sheets ist ein Objekt, und
thisComponent.getByIndex(0) geht nicht, weil unter ThisComponent nix per Index anzusprechen ist!
Erst eine Ebene tiefer, "thisComponent.sheets", kannst Du per Index auf die Tabellen zugreifen, wie ich es eben ausführlich beschrieben habe.
Gruß R
Danke erstmal!
Re: Verständnisfrage zum Objektmodell?
Verfasst: Sa 10. Sep 2011, 23:26
von Freelancer
Hallo Strunz,
ich versuche es mal mit einer einfachen Beschreibung:
ThisComponent ist das Fundament eines Hauses in dem sich mehrere Zimmer befinden.
Mit
betrittst Du das Haus (Dokument).
Im angezeigten xray-Fenster schaltest Du mal zunächst oben die Details aus.
Wenn Du jetzt nach unten scrollst steht neben "Sheets" > "
object".
Wenn Du jetzt einen Doppelklick auf "Sheets" machst betrittst Du das Zimmer "Sheets".
In dem Zimmer Sheets steht ein Schrank mit vielen Türen.
Auf einer Tür steht "ElementNames" die wir mit einem Doppelklick öffnen.
Hinter dieser Tür finden wir ein paar Schubladen mit den Namen der Tabellen die sich in diesem Dokument befinden.
Bei den Schubladen liegt ein Zettel auf dem die Methoden stehen, wie man auf die Tabellen zugreifen kann.
Um den Zettel lesen zu können klickt man oben auf "Methods" und es werden Dir die Möglichkeiten angezeigt. Zum Beispiel "getByName(
aName as string) " oder "getByIndex(
Index as long)
Zusammengesetzt sieht das dann so aus:
Ist es jetzt etwas verständlicher?
Freelancer