🙏 Bitte helfen Sie uns das LibreOffice Forum zu erhalten. 🙏
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.
🍀 Wir hoffen auf Ihre Unterstützung - vielen Dank!🍀
>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗
Verständnisfrage zum Objektmodell?
Verständnisfrage zum Objektmodell?
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
-
- Beiträge: 185
- Registriert: Sa 13. Aug 2011, 10:01
- Wohnort: Chonburi Thailand Asia
- Kontaktdaten:
Re: Verständnisfrage zum Objektmodell?
Ja.Strunz hat geschrieben:Wie kann ich das in der "API" herausfinden bzw. mit dem Tool "X-Ray"?
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!
Winfried
aktuell: openSuse 13.1 mit LO 4.3.7.2
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als Extension)
Re: Verständnisfrage zum Objektmodell?
Wenn ich das XRay-Tool benutze steht nachdem Aufruf (Calc) folgendes:komma4 hat geschrieben:Willkommen im Forum
Ja.Strunz hat geschrieben:Wie kann ich das in der "API" herausfinden bzw. mit dem Tool "X-Ray"?
Viel Erfolg!
ScModelObj
wenn ich jetzt die Methoden aufrufe kommt aber nicht "getbyname()"!
Was habe ich falsch gemacht?
Gruss
Strunz
-
- Beiträge: 185
- Registriert: Sa 13. Aug 2011, 10:01
- Wohnort: Chonburi Thailand Asia
- Kontaktdaten:
Re: Verständnisfrage zum Objektmodell?
Du hastStrunz hat geschrieben:ScModelObj
wenn ich jetzt die Methoden aufrufe kommt aber nicht "getbyname()"!
Code: Alles auswählen
xray ThisComponent
Code: Alles auswählen
xray ThisComponent.Sheets()
Winfried
aktuell: openSuse 13.1 mit LO 4.3.7.2
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als Extension)
Re: Verständnisfrage zum Objektmodell?
Hallo,komma4 hat geschrieben:Du hastStrunz hat geschrieben:ScModelObj
wenn ich jetzt die Methoden aufrufe kommt aber nicht "getbyname()"!Probiere malCode: Alles auswählen
xray ThisComponent
Code: Alles auswählen
xray ThisComponent.Sheets()
danke erstmal!
Woher weißt du das bzw. wo kann ich das nachlesen?
cu
Strunz
Re: Verständnisfrage zum Objektmodell?
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.)
Code: Alles auswählen
getByName("Tabelle1")
Code: Alles auswählen
getByIndex(0)
Code: Alles auswählen
thisComponent.sheets.getByIndex(0)
Code: Alles auswählen
thisComponent.sheets.getByName("Tabelle1")
Code: Alles auswählen
thisComponent.sheets(0)
Code: Alles auswählen
thisComponent.sheets.Tabelle1
z.B.
Code: Alles auswählen
Dim osheets as Object
und
Code: Alles auswählen
Dim osheet as Object
Code: Alles auswählen
oSheets=ThisComponent.sheets
osheet=oSheets.getbyIndex(0)
Code: Alles auswählen
osheet=oSheets(0)
Code: Alles auswählen
oSheet=oSheets.getByName("Tabelle1")
Code: Alles auswählen
oSheet=oSheets.Tabelle1
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
Code: Alles auswählen
ocell=osheet.getCellrangebyName("A1") 'Zelle A1
Code: Alles auswählen
orange=osheet.getCellrangebyName("A1:B4")'Zellen im Rechteck A1 bis B4 also A1, A1, A3 ... B3, B4)
Gruß R
edit: hatte fälschlicherweise statt "getCellByPosition" "getByPosition" geschrieben.
Re: Verständnisfrage zum Objektmodell?
Meine Frage zu diesem Codeschnipsel ist: sheets ein Objekt oder eine Eigenschaft?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.)Code: Alles auswählen
getByName("Tabelle1")
d.h. der Aufruf auf Tabelle1 lautet:Code: Alles auswählen
getByIndex(0)
Code: Alles auswählen
thisComponent.sheets.getByIndex(0)
Warum geht folgender Codeschnipsel nicht:
thisComponent.getByIndex(0)
Kurzform:Code: Alles auswählen
thisComponent.sheets.getByName("Tabelle1")
oder (nur wenn Tabellenname ohne Leerzeichen usw.)Code: Alles auswählen
thisComponent.sheets(0)
Wenn Du vorher eigene Objekte dimensionierstCode: Alles auswählen
thisComponent.sheets.Tabelle1
z.B.'MehrzahlCode: Alles auswählen
Dim osheets as Object
und'Einzahl, dann kannst Du sie so, sinnfällig zuweisen:Code: Alles auswählen
Dim osheet as Object
oderCode: Alles auswählen
oSheets=ThisComponent.sheets osheet=oSheets.getbyIndex(0)
oderCode: Alles auswählen
osheet=oSheets(0)
oderCode: Alles auswählen
oSheet=oSheets.getByName("Tabelle1")
... und in der Tabelle1 gibt es Zellen, auf die Du wieder mit mehreren Methoden zugreifen kannst, z.B.Code: Alles auswählen
oSheet=oSheets.Tabelle1
oderCode: Alles auswählen
ocell=osheet.getByPosition(0,0)' Zelle A1 ocell=osheet.getByPosition(2,0)' Zelle C1 ocell=osheet.getByPosition(2,2)' Zelle C3
oderCode: Alles auswählen
ocell=osheet.getCellrangebyName("A1") 'Zelle A1
HTHCode: Alles auswählen
orange=osheet.getCellrangebyName("A1:B4")'Zellen im Rechteck A1 bis B4 also A1, A1, A3 ... B3, B4)
Gruß R
Re: Verständnisfrage zum Objektmodell?
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?
Danke erstmal!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
-
- Beiträge: 35
- Registriert: Sa 28. Mai 2011, 15:30
Re: Verständnisfrage zum Objektmodell?
ich versuche es mal mit einer einfachen Beschreibung:
ThisComponent ist das Fundament eines Hauses in dem sich mehrere Zimmer befinden.
Mit
Code: Alles auswählen
xray ThisComponent
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".
Code: Alles auswählen
ThisComponent.sheets
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:
Code: Alles auswählen
ThisComponent.sheets.getbyName("Tabelle1")
Freelancer
An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:
Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.