[gelöst]Einfärben der Zellenränder einer Writer Texttabelle

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

[gelöst]Einfärben der Zellenränder einer Writer Texttabelle

Beitrag von F3K Total »

Guten Abend zusammen,

mit meinem Makro habe ich folgendes Problem:
Ich öffne per Makro einen mit dem Reportbuilder erzeugten Bericht. Dieser Bericht ist ein reines Writer-Dokument.
Es enthält anstelle der Kontrollfelder, die im Bearbeitungsmodus des Berichts plaziert werden, Writer Tabellen, die z.B über

Code: Alles auswählen

otable = oReport.TextTables.getbyindex(2)
angesprochen werden können.
Einem Zellbereich einer Tabelle kann z.B. über

Code: Alles auswählen

dim oborder as new com.sun.star.table.BorderLine
ocellrange = otable.getcellrangebyposition(0,j,1,k)
    with oborder
        .Color = 13421772
        .OuterLineWidth = 25
    end with
    with ocellrange
        .TopBorder = oborder
        .LeftBorder = oborder
        .RightBorder = oborder
        .BottomBorder = oborder
    end with
die Farbe der Bereichsränder sowie die Strichstärke zugeordnet werden.
Das klappt wunderbar, wenn ich das Dokument sichtbar öffne.

Wenn ich es aber unsichtbar, im Hintergrund öffne, fehlen Randabschnitte, aber nur auf der ersten Seite des Berichtes.
Baue ich ein XRAY ein, oder schalte ich das Dokument einmal per

Code: Alles auswählen

oFrame = oreport.currentcontroller.frame
owindow = oframe.containerwindow
owindow.setVisible(true)
sichtbar, sind alle gewünschten Zellränder eingefärbt.
Der Fehler hängt irgendwie mit der nicht erzeugten Ansicht zusammen.
Hat jemand dazu eine Idee?

Anbei zwei Beispieldokumente, die mit dem gleichen Makro formatiert und gespeichert wurden.

Beste Grüße von Rik
Dateianhänge
unsichtbar_geladen.odt
(13.83 KiB) 69-mal heruntergeladen
sichtbar_geladen.odt
(13.58 KiB) 63-mal heruntergeladen
Zuletzt geändert von F3K Total am Mi, 31.10.2012 21:12, insgesamt 1-mal geändert.
Karolus
********
Beiträge: 7535
Registriert: Mo, 02.01.2006 19:48

Re: Einfärben der Zellenränder einer Writer Texttabelle

Beitrag von Karolus »

Hallo
Ich hab da ein Verständnissproblem - warum will man unsichtbaren Dingen irgendwelche optische Attribute zuordnen?

Kannst du das nicht zu dem Zeitpunkt machen wenn das Dok tatsächlich sichtbar geöffnet wird?

Karolus
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: Einfärben der Zellenränder einer Writer Texttabelle

Beitrag von F3K Total »

Hallo Karolus,
es handelt sich um den automatischen Export von etwa 20 Dateien, die direkt als .pdf gespeichert werden.
Wenn ich sie sichtbar öffne, flackern sie nacheinander auf den Schirm, werden gespeichert und wieder geschlossen.
Das sieht nicht schön aus. Darum möchte ich sie im Hintergrund öffen und bearbeiten. Sichtbar ist nur der wachsende Statusbalken: Datei 1/21, Datei 2/21 usw.

Gruß Rik
Benutzeravatar
balu
********
Beiträge: 3812
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: Einfärben der Zellenränder einer Writer Texttabelle

Beitrag von balu »

Hallo Rik,

nein, ich hab mir deine Dateien nicht angeschaut. Das nur am Rande.

Wenn ich dich jetzt richtg versteh, hast Du ein Problem mit der "ViewData", siehe auch meinen Thread dazu: Hidden-Datei kein Fenster fixierbar?. Dort hatten mir DPunch und Karolus mitgeteilt das dies nicht direkt geht, sondern eventuell nur mittels Stream-Zugriff auf die settings.xml.
Wie das allerdings mit dem streamen geht, weiß ich nicht, keine Ahnung. Aber da können dir wohl andere helfen, z.B. Karolus oder DPunch.

Es kann aber auch sein, das ich mit meiner Vermutung "ViewData" vollkommen daneben liege.

Vielleicht solltest Du mal anstatt mit Hidden lieber mit Minimized testen.



Gruß
balu
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: Einfärben der Zellenränder einer Writer Texttabelle

Beitrag von F3K Total »

Hallo Balu,
balu hat geschrieben:Wenn ich dich jetzt richtg versteh, hast Du ein Problem mit der "ViewData"
Das weiss ich eben leider nicht. Ich kann nur beobachten, dass die Zellränder dann komplett eingefärbt werden, wenn ich zwischendurch z.B. Xray oder eine Messagebox öffne. Versuche mit dem ViewCursor ala

Code: Alles auswählen

    oViewCursor.jumpToFirstPage
    oViewCursor.jumpToStartOfPage
    oViewCursor.jumpToEndOfPage
    oViewCursor.jumpToLastPage
bringen insoweit eine Verbesserung, als dass nun alle Ränder richtig eingefärbt werden, wenn die Tabelle länger als die erste Seite ist. Befindet sich die Tabelle nur auf der ersten Seite, bleibt der Fehler.

Beste Grüße von Rik
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: [gelöst]Einfärben der Zellenränder einer Writer Texttabe

Beitrag von F3K Total »

Hallo zusammen,
ich habe eine Lösung gefunden. Wenn ich statt des Cellranges wie hier

Code: Alles auswählen

dim oborder as new com.sun.star.table.BorderLine
ocellrange = otable.getcellrangebyposition(0,j,1,k)
    with oborder
        .Color = 13421772
        .OuterLineWidth = 25
    end with
    with ocellrange
        .TopBorder = oborder
        .LeftBorder = oborder
        .RightBorder = oborder
        .BottomBorder = oborder
    end with
die einzelnen Zellen direkt anspreche:

Code: Alles auswählen

for m = 0 to 1
   for n = 0 to 6
     ocell = onewcellrange.getcellbyposition(m,n)
      if n = 0 then ocell.TopBorder = oborder
      if m = 0 then ocell.LeftBorder = oborder
      if m = 1 then ocell.RightBorder = oborder
      if n = 6 then ocell.BottomBorder = oborder
   next n
next m
ist alles wie gewünscht.
Grüße von Rik
Antworten