Komplexen Inhalt von Tabellenzellen vertauschen

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Komplexen Inhalt von Tabellenzellen vertauschen

von texol » Di, 14.03.2006 18:19

Eckhardt, in jedem Falle danke für deine Mühe!

Allerdings arbeite ich nicht mit einem Tabellendokument, sondern mit einem Textdokument, und eine XTextTable ist anders aufgebaut als ein Sheet (oder wie auch immer das entsprechende Objekt heißt).

Bei einer TextTable kann man über getColumns auf die Spalten zugreifen. XTableColumns.getByIndex liefert aber nur ein Objekt vom Typ XInterface zurück - das keine Eigenschaft IsVisible hat :(

Ich habe gerade mal ein bisschen mit Calc herumgespielt, aber für die Textverarbeitungsaufgaben, die ich für eine Karteikarte benötige, ist das zu eingeschränkt bzw. unkomfortabel, man kann zB. nur für die gesamte Zelle die Ausrichtung festlegen, nicht für eine einzelne Zeile darin...

Aber deine Idee hat mich auf einen anderen Gedanken gebracht: das Ergebnis der Ausblendung einer Spalte erreiche ich auch, indem ich den Inhalt dieser Spalte ganz einfach lösche: Spalte selektieren - entfernen. Dann wird diese Spalte faktisch auch nicht gedruckt. Anschließend rückgängig machen und umgekehrt.

Und wenn man Papier sparen will, kann man auf der Hälfte der Seiten die (im Verhältnis zur aktuellen Druckseite) umgekehrte Seite löschen und nochmal auf die bereits links bedruckten Seiten die rechte Seite anderer Karten drucken.

Viele Grüße,
texol.

von Eckhardt » Di, 14.03.2006 12:56

Entschuldigung. Ich habe da vorhin Spalten und Zeilen verwechselt. Es muss im Codebeispiel nicht oSheet.Rows sondern oSheet.Columns heißen.

von Eckhardt » Di, 14.03.2006 12:47

Hallo texol,
nun, das ist relativ simpel.
Wenn Du Vorder- und Rückseite der Karteikarte in 2 Spalten organisiert hast, z.B. Spalte B und C, dann kannst Du beim Druckaufruf per Makro die Spalte, die Du für den Druck nicht gebrauchen kannst, ausblenden (entspricht dem Menübefehl Format-Spalte-Ausblenden). Die ausgeblendete Spalte wird nicht mit ausgedruckt. Nach dem Druckaufruf wird die Spalte dann einfach wieder eingeblendet. Den jeweiligen Bereich benennst Du mit "Vorderseite" bzw. "Rueckseite".
Der Code sieht dann für die Vorderseite wie folgt aus:

oNRange = oSheet.getCellRangeByName("Rueckseite") 'Spalte Rückseite ausblenden
oRangeAddress = oNRange.getRangeAddress
oCol = oSheet.Rows(oRangeAddress.StartCol)
oCol = oSheet.Rows(gewünschte Spalte)
oCol.IsVisible = False 'blendet die Spalte aus
'hier erfolgt der Druckaufruf
oCol.IsVisible = True 'blendet die Spalte wieder ein

von texol » Mo, 13.03.2006 16:10

Könntest du das näher erklären?

texol.

von Eckhardt » Mo, 13.03.2006 15:55

Hallo texol,
warum blendest Du die gerade nicht benötigte Spalte nicht einfach aus; dann kannst Du Dir die Arbeit mit dem vertauschen sparen.

von texol » Mo, 13.03.2006 15:45

Code: Alles auswählen

myString=mycell.string
myString2=mycell2.string

mycell.string=myString2
mycell2.string=myString 
Dadurch wird leider nur der reine Text kopiert, nicht aber eventuelle Styles, geschweige denn Objekte, die in der Zelle enthalten sind. :(

Habe mal ein bisschen in den englischsprachigen Foren gestöbert: Kann es sein, dass das, was ich vorhabe, gar nicht oder nur sehr schwierig möglich ist?

Per Zwischenablage, die man dann in eine leere Zelle zwischenspeichert, wäre es vielleicht auch machbar...

von ykcim » Mo, 13.03.2006 14:42

Hi,

lies bitte die Informationen im aller ersten Thema dieses Forums. Dort findest Du viele Links zu Starbasic.


Inhalt von Zellen tauschen:

Code: Alles auswählen

myDoc = thisComponent
mySheet = myDoc.sheets(0)
mycell = mysheet.getCellByPosition(0,0)
mycell2 = mysheet.getCellByPosition(0,1)

myString=mycell.string
myString2=mycell2.string

mycell.string=myString2
mycell2.string=myString
mfg
Michael

Komplexen Inhalt von Tabellenzellen vertauschen

von texol » Mo, 13.03.2006 13:01

Hallo,

ich habe gestern angefangen, mich in die Programmierung mit OOBasic einzuarbeiten. Die Unterstützung durch die "IDE" ist ja nicht gerade sehr komfortabel ausgefallen. Kann man bei der Programmierung in Java eigentlich Eclipse nutzen (mit seinen Vorteilen, versteht sich)?

Zur Sache: Grund für mein Interesse ist, dass ich gerne komfortabel Karteikarten drucken möchte.

Dazu benutze ich eine 2-spaltige Tabelle mit 8 Zeilen pro Seite (A7-Karten). Die jeweilige Rückseite einer Karte finde ich also in (Zeile + 8, Spalte + 1 LOGISCHES-UND 1).

Es ist aber bei der Eingabe der Karten nicht besonders komfortabel, die Rückseite immer erst suchen zu müssen. Deshalb möchte ich die Rückseite neben die Vorderseite setzen, also in die rechte Spalte. Dann muss ich später nur noch ein Makro drüberlaufen lassen, das die entsprechenden Vertauschungen vornimmt.

Weil ich aber beliebige Formatierungen in einer Zelle zulassen möchte und insbesondere auch Tabellen in der Zelle, geht das nicht einfach mit der setString-Methode der Zelle, weil dann bereits die Styles verlorengehen, von Unterobjekten mal ganz zu schweigen.

Wie kann ich den kompletten komplexen Inhalt einer Zelle in eine andere kopieren?

Ich wurschtele zur Zeit mit Enumerations-Objekten herum, aber die Klassenhierarchien sind nicht gerade einfach zu verstehen. Leider ist ja nicht einmal eine komplette Reflection von Objekten möglich, sonst würde ich vielleicht begreifen, womit ich es bei einer Zelle / ihrem Inhalt genau zu tun habe.

Danke für eure Hilfe,
texol.

Nach oben