Gelöst: Texttabelle getRows() getColumns() Spaltenbreite
Moderator: Moderatoren
Gelöst: Texttabelle getRows() getColumns() Spaltenbreite
Hi,
ich versuche gerade eine Spalte einer Texttabelle zu adressieren mit dem Ziel sie später in der Breite anzupassen.
Die Zuweisung von oSpalten im Code (s.u.) geht.
Die Zuweisung von oSpalte liefert NULL bei der Zuweisung und somit eine Fehlermeldung beim Versuch, die Spalte einzufärben.
oSpalten=oTextTable.getColumns
oSpalte=oSpalten.getByIndex(0)
oSpalte.backColor=RGB(215,255,255)
Ersetze ich getColumns durch getRows und lasse alles andere unverändert kann ich die erste Zeile prima einfärben.
Das kann doch nicht sein, oder?
Gruß
Andreas
ich versuche gerade eine Spalte einer Texttabelle zu adressieren mit dem Ziel sie später in der Breite anzupassen.
Die Zuweisung von oSpalten im Code (s.u.) geht.
Die Zuweisung von oSpalte liefert NULL bei der Zuweisung und somit eine Fehlermeldung beim Versuch, die Spalte einzufärben.
oSpalten=oTextTable.getColumns
oSpalte=oSpalten.getByIndex(0)
oSpalte.backColor=RGB(215,255,255)
Ersetze ich getColumns durch getRows und lasse alles andere unverändert kann ich die erste Zeile prima einfärben.
Das kann doch nicht sein, oder?
Gruß
Andreas
Zuletzt geändert von agrupe am Fr, 01.06.2007 14:00, insgesamt 3-mal geändert.
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
getColumns() liefert Dir nicht das gesuchte Objekt - sondern "nur" einen Container, der das Einfügen und Löschen von Spalten erlaubt.
Hole Dir die Anzahl der Spalten mitund zum Färben dann sowas wie
Hilft das weiter?
Hole Dir die Anzahl der Spalten mit
Code: Alles auswählen
iAnzahlSpalten = oTextTable.getColumns().getCount()
Code: Alles auswählen
oSpalte=oTextTable.getCellRangeByName( "B1:B" & iAnzahlSpalten )
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Hi,
eigentlich such ich eine Möglichkeit, die Breite einer Spalte zu ändern, das Färben war nur ein Beispiel (das bei Zeilen einwandfrei läuft).
Ich verstehe dennoch nicht, warum ich mit getRows eine Zeile adressieren kann, getColumns aber einen Fehler erzeugt, wenn ich eine Spalte ansprechen will.
Wie auch immer - kannst du mir sagen, wie ich die Spaltenbreite ändern kann?
Merci
Andreas
eigentlich such ich eine Möglichkeit, die Breite einer Spalte zu ändern, das Färben war nur ein Beispiel (das bei Zeilen einwandfrei läuft).
Ich verstehe dennoch nicht, warum ich mit getRows eine Zeile adressieren kann, getColumns aber einen Fehler erzeugt, wenn ich eine Spalte ansprechen will.
Wie auch immer - kannst du mir sagen, wie ich die Spaltenbreite ändern kann?
Merci
Andreas
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Mit getRows() bekommst Du ein anders geartetes Objekt zum Arbeiten zurück: deswegen geht es mit Zeilen.
Spaltengrösse geht über ein gesondertes Objekt: TableColumnSeparators
Ein Beispiel findest Du in ATL2 - AutoTextListe2, Auszug:
Viel Erfolg!
Spaltengrösse geht über ein gesondertes Objekt: TableColumnSeparators
Ein Beispiel findest Du in ATL2 - AutoTextListe2, Auszug:
Code: Alles auswählen
oTabTrenner = oTable.TableColumnSeparators
oTabTrenner( 0 ).Position = 2500
oTabTrenner( 1 ).Position = 3500
oTable.TableColumnSeparators = oTabTrenner
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
ist aus der Ferne schwierig zu beurteilen: kannst Du mehr Code zeigen, damit wir die Definiton / Verwendung der beteiligten Variablen sehen...
Hast Du xray im Einsatz und kannst die Objekte näher untersuchen....?
Hast Du xray im Einsatz und kannst die Objekte näher untersuchen....?
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Hi,
klar kann ich mehr zeigen. Der Code lief bislang einwandfrei; ich habe lediglich die DIM Zeile eingebaut und die letzte zeile, in der das Programm dann auch den Fehler meldet.
Danke schon mal für die Hilfe!
Andreas
--------------------
...
Dim oTabTrenner as Object
sURL=convertToURL("home/OO/Documents/SalesDB/Rechnungsformular.odt")
oDoc = StarDesktop.loadComponentFromURL(sURL, "_blank",0, Arg())
oText=oDoc.Text ' Text des Dokuments
oTextCursor = oText.createTextCursor() ' Textcursor im Textteil des Dokuments erzeugen
oTextCursor.gotoEnd(False) ' Textcursor ans Dokumentende setzen
oTextTable = oDoc.createInstance("com.sun.star.text.TextTable")
With oTextTable
.HoriOrient = 0
.leftMargin=1000
.rightMargin=1000
.Name="Überschrift"
.initialize (iMaxZeilen+1,5) '# (Zeilen, Spalten ab 1 gezählt)
End with
oText.insertTextContent( oTextCursor, oTextTable, FALSE) 'tabelle wird ins Dokument geschrieben
'tabellenzellen füllen
oTextTable.setDataArray(aTabinh()) ' das gefüllte Array wird nun angezeigt
oTabTrenner = oTextTable.TableColumnSeparators
klar kann ich mehr zeigen. Der Code lief bislang einwandfrei; ich habe lediglich die DIM Zeile eingebaut und die letzte zeile, in der das Programm dann auch den Fehler meldet.
Danke schon mal für die Hilfe!
Andreas
--------------------
...
Dim oTabTrenner as Object
sURL=convertToURL("home/OO/Documents/SalesDB/Rechnungsformular.odt")
oDoc = StarDesktop.loadComponentFromURL(sURL, "_blank",0, Arg())
oText=oDoc.Text ' Text des Dokuments
oTextCursor = oText.createTextCursor() ' Textcursor im Textteil des Dokuments erzeugen
oTextCursor.gotoEnd(False) ' Textcursor ans Dokumentende setzen
oTextTable = oDoc.createInstance("com.sun.star.text.TextTable")
With oTextTable
.HoriOrient = 0
.leftMargin=1000
.rightMargin=1000
.Name="Überschrift"
.initialize (iMaxZeilen+1,5) '# (Zeilen, Spalten ab 1 gezählt)
End with
oText.insertTextContent( oTextCursor, oTextTable, FALSE) 'tabelle wird ins Dokument geschrieben
'tabellenzellen füllen
oTextTable.setDataArray(aTabinh()) ' das gefüllte Array wird nun angezeigt
oTabTrenner = oTextTable.TableColumnSeparators
... eines noch - im normalen Variableninspektor in der IDE kann ich auf das Tabellenelement zugreifen und auch die Werte prima lesen; es sind 4 mit den Werten 2000, 4000, 6000 und 8000 bei Position sowie jeweils dem Wert "True" bei IsVisible.
Für mich sieht es so aus, als muesste ich eine Funktion aufrufen, um die Werte auszulesen und nicht einfach eine Zuweisung auf ein Objekt machen ...
Für mich sieht es so aus, als muesste ich eine Funktion aufrufen, um die Werte auszulesen und nicht einfach eine Zuweisung auf ein Objekt machen ...
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
oTabTrenner ist kein Object, sondern es wird ein Array von Tabellentrenn-Objekten zurück gegeben.
Leider läuft der Code hier nicht (mehr?): muss das genauer untersuchen, ich vermute aber mal einen Fehler der 2.2.0 ("Früher ging's noch").
Leider läuft der Code hier nicht (mehr?): muss das genauer untersuchen, ich vermute aber mal einen Fehler der 2.2.0 ("Früher ging's noch").
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Ich nehme das mit dem Bug zurück: nach dem Posting liess ich ATL2 auf der Kiste (XPpro/2.2.0) laufen, da ging's.
Ich schau' mit das nochmal jetzt hier (Linux/2.2.0) an.... l'8ter
Ich schau' mit das nochmal jetzt hier (Linux/2.2.0) an.... l'8ter
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
sorry: auch Dein Beispielcode (ohne das Füllen) läuft nun einwandfrei.
Allerdings habe ich andere Variablennamen verwendet. In einem Modul meiner Test-Bibliothek, war ein OPTION EXPLICIT, welches die Definition der verwendeten Variablen erforderte. Einige -wie oTable- waren anderswo definiert, andere nicht: deshalb der Namenswechsel.
Dieses Beispiel nun habei ch in die (fast leere) STANDARD-Bibliothek eingetragen und auf ein manuell (STRG+N) erzeugtes, leeres Dokument angewendet: OK
Checke doch mal, ob die von Dir verwendeten Variablen anderswo definiert werden.
this one is working with OOo2.2.0
Viel Spass!
Allerdings habe ich andere Variablennamen verwendet. In einem Modul meiner Test-Bibliothek, war ein OPTION EXPLICIT, welches die Definition der verwendeten Variablen erforderte. Einige -wie oTable- waren anderswo definiert, andere nicht: deshalb der Namenswechsel.
Dieses Beispiel nun habei ch in die (fast leere) STANDARD-Bibliothek eingetragen und auf ein manuell (STRG+N) erzeugtes, leeres Dokument angewendet: OK
Checke doch mal, ob die von Dir verwendeten Variablen anderswo definiert werden.
this one is working with OOo2.2.0
Code: Alles auswählen
Sub TTS_TextTabellenSpalten
oTTS_Dokument = ThisComponent
oTTS_Text = ThisComponent.Text
oTTS_Cursor = oTTS_Text.createTextCursor()
oTTS_Cursor.gotoEnd(False) ' Textcursor ans Dokumentende setzen
oTTS_Tabelle = ThisComponent.createInstance("com.sun.star.text.TextTable")
With oTTS_Tabelle
.HoriOrient = 0
.leftMargin=1000
.rightMargin=1000
.Name="Überschrift"
.initialize (125,5) '# (Zeilen, Spalten ab 1 gezählt)
End with
oTTS_Text.insertTextContent( oTTS_Cursor, oTTS_Tabelle, FALSE) 'tabelle wird ins Dokument geschrieben
'tabellenzellen füllen
'oTextTable.setDataArray(aTabinh()) ' das gefüllte Array wird nun angezeigt
oTTS_TabTrenner = oTTS_Tabelle.TableColumnSeparators
' Trennposition in 10-Tausendstel
oTTS_TabTrenner( 0 ).Position = 2500
oTTS_TabTrenner( 1 ).Position = 3500
oTTS_Tabelle.TableColumnSeparators = oTTS_TabTrenner
End Sub
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Danke für die Hinweise.
Der Fehler war, dass ich den oTabTrenner per
DIM oTabTrenner as Object
definiert habe.
Richtig ist:
DIM oTabTrenner()
da (wie du bereits in einer vorhergehenden Antwort geschrieben hast) kein Objekt sondern ein Array von Objekten zurück gegeben wird.
Nun klappt es auch mit option explicit.
Da soll man drauf kommen ...
Andreas
P.S. Wie setzt man den Titel auf gelöst (und benennt ihn um, denn das eigentliche Problem lag ja woanders)
Schön, dass ich keine Krätze kriegen muss
Der Fehler war, dass ich den oTabTrenner per
DIM oTabTrenner as Object
definiert habe.
Richtig ist:
DIM oTabTrenner()
da (wie du bereits in einer vorhergehenden Antwort geschrieben hast) kein Objekt sondern ein Array von Objekten zurück gegeben wird.
Nun klappt es auch mit option explicit.
Da soll man drauf kommen ...
Andreas
P.S. Wie setzt man den Titel auf gelöst (und benennt ihn um, denn das eigentliche Problem lag ja woanders)
Schön, dass ich keine Krätze kriegen muss

OO 3.2 unter OpenSuse 11
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Du (aus Author) kannst wohl das erste posting über die entsprechende Schaltfläche editieren....
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)