[gelöst] SetPropertyValue - BorderLine

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

Moderator: Moderatoren

TrueColor
******
Beiträge: 547
Registriert: Do, 11.03.2010 11:23

[gelöst] SetPropertyValue - BorderLine

Beitrag von TrueColor »

Hallo,

wie arbeite ich richtig mit den BorderLines? Ich habe da bisher keine tauglichen Informationen gefunden.

oRange.setPropertyValue("BorderLine.Color", RGB(255,255,255)) funktioniert nicht, ebensowenig
oRange.setPropertyValue.BorderLine("Color", RGB(255,255,255))

Wie wird das richtig angewendet? (Alternativ: Wie bekomme ich es hin, dass die Zellumrandungen bei "für Ausdruck ausblenden" mit ausgeblendet werden?)

Vielen Dank!
TrueColor
Zuletzt geändert von TrueColor am Do, 18.07.2013 09:10, insgesamt 1-mal geändert.
System:
LibO 6 + LibO 7
Karolus
********
Beiträge: 7533
Registriert: Mo, 02.01.2006 19:48

Re: SetPropertyValue - BorderLine

Beitrag von Karolus »

Hallo

Dann nimm mal die Hilfe von Mri in Anspruch, statt irgendwelchen Pseudocode zu posten.

Karolus
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
TrueColor
******
Beiträge: 547
Registriert: Do, 11.03.2010 11:23

Re: SetPropertyValue - BorderLine

Beitrag von TrueColor »

Hallo Karolus,

danke, ich werd's mal testen, kann ich aber nicht von hier aus machen.

Aber wie kommst du auf Pseudo-Code? Das ist hier beschrieben:

http://www.openoffice.org/api/docs/comm ... rties.html

Und CellBackColor fkt. doch auch, das hat aber auch keine Unterkategorien. Für BorderLine bzw. TopBorder etc. habe ich keine Anwendungsbeispiele gefunden, für die Hintergrundfarbe dagegen massenhaft.

Grüße
Robert
System:
LibO 6 + LibO 7
Karolus
********
Beiträge: 7533
Registriert: Mo, 02.01.2006 19:48

Re: SetPropertyValue - BorderLine

Beitrag von Karolus »

Hallo
Aber wie kommst du auf Pseudo-Code? Das ist hier beschrieben:

http://www.openoffice.org/api/docs/comm ... rties.html
Genau -- deshalb schrieb ich "Pseudocode" 8)


Hier ein funktionierendes Beispiel:

Code: Alles auswählen

Sub Main
	dim linestyle as new com.sun.star.table.BorderLine
	linestyle.Color = 111111
	linestyle.OuterLineWidth = 100
	sel = thisComponent.CurrentSelection
	borders = array("TopBorder", "LeftBorder", "RightBorder", "BottomBorder")
	styles = array(linestyle,linestyle,linestyle,linestyle)
	sel.setPropertyValues(borders , styles)

End Sub
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Benutzeravatar
balu
********
Beiträge: 3812
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: SetPropertyValue - BorderLine

Beitrag von balu »

Hallo Robert,
wie arbeite ich richtig mit den BorderLines? Ich habe da bisher keine tauglichen Informationen gefunden.
Ich glaube Du suchst wohl mit den falschen Suchparametern, denn ich hatte auf anhieb einen Thread gefunden der für dich wohl Licht ins Dunkel bringen kann: Guckst Du hier.
Dort geht es wohl um Tabellen im Writer, aber das gilt auch uneingeschränkt für Calc.

Und ferner findest Du bei Dannenhöfer auch sehr nützliche Informationen dazu. Ich sage jetzt aber nicht genau wo Du diese Informationen finden wirst, ich gebe dir nur den Suchbegriff vor, der da lautet: BorderLine
Und mit diesem Suchbegriff hatte ich auch im Forum gesucht.


Und CellBackColor fkt. doch auch, das hat aber auch keine Unterkategorien.
Badelatschen und Winterstiefel kann man wahrlich nicht gut miteinander vergleichen :lol:.

CellBackColor hat ja nur die eine Eigenschaft; Farbe für eine Zelle zuweisen. (Badelatschen)
Borderline jedoch hat mehrere Eigenschaften; Rahmenfarbe, Dicke, Position....(Winterstiefel) Und deshalb muss ein Stuct erzeugt werden womit die gewünschten Einstellungen angewendet werden können.


Für BorderLine bzw. TopBorder etc. habe ich keine Anwendungsbeispiele gefunden,
Wie schon gesagt, da hattest Du irgendwie falsch gesucht. Das soll jetzt aber nichts böses gegen dich sein. Denn ich vermute mal sehr stark das dir schlicht ergreifend der richtige Suchbegriff fehlte.

Ich hoffe ich konnt dir ein wenig weiterhelfen, auch wenn Karo schneller war und eine sehr schöne Array-Lösung präsentiert hat *Daumen-hoch*. Werd ich mir merken.
Viel Glück beim Probieren ;-)

[EDITH]
Alternativ: Wie bekomme ich es hin, dass die Zellumrandungen bei "für Ausdruck ausblenden" mit ausgeblendet werden?
Das habe ich jetzt nicht getestet, aber wenn Du dir Mri besorgt hast, oder schon mit Xray arbeitest, dann versuchs mal mit dem Struct: .CellProtection
[/EDITH]


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
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: SetPropertyValue - BorderLine

Beitrag von Stephan »

Und CellBackColor fkt. doch auch, das hat aber auch keine Unterkategorien.


ja, nur gibt es ja auch nur jeweils eine mögliche Farbe für den Zellhintergrund, bei der Zellumrandung sind hingegen 4 Farben gleichzeitig möglich.
4Farben_bei Zellumrandung.gif
4Farben_bei Zellumrandung.gif (1.45 KiB) 3176 mal betrachtet
Gruß
Stephan
TrueColor
******
Beiträge: 547
Registriert: Do, 11.03.2010 11:23

Re: SetPropertyValue - BorderLine

Beitrag von TrueColor »

Und deshalb muss ein Stuct erzeugt werden womit die gewünschten Einstellungen angewendet werden können.
Oh... das war wohl die Schlüssel-Information, die mir fehlte.

Und bei Dannenhöfer hab ich diesmal ganz vergessen nachzuschauen.

Danke erstmal an alle. MRI muss ich mir noch anschauen

Schönes Wochenende,
Robert

p.s.:
Badelatschen und Winterstiefel kann man wahrlich nicht gut miteinander vergleichen
Doch, man muss nur die Gemeinsamkeiten finden, zählt beides als Fußbekleidung ;-)
System:
LibO 6 + LibO 7
TrueColor
******
Beiträge: 547
Registriert: Do, 11.03.2010 11:23

Re: SetPropertyValue - BorderLine

Beitrag von TrueColor »

Hallo balu,
[EDITH]
Alternativ: Wie bekomme ich es hin, dass die Zellumrandungen bei "für Ausdruck ausblenden" mit ausgeblendet werden?
Das habe ich jetzt nicht getestet, aber wenn Du dir Mri besorgt hast, oder schon mit Xray arbeitest, dann versuchs mal mit dem Struct: .CellProtection
[/EDITH]
Ich hab's jetzt noch nicht mit dem Struct probiert, sondern gehe jetzt nur vom Namen aus (probieren werde ich's noch), aber ich glaube nicht, dass das hilft. Wenn ich manuell (also übers Menü, nicht per Macro) Zeilleigenschaften --> Zellschutz --> für Ausdruck ausblenden aktiviere, wird alles (also Inhalt, Hintergrundfarben) ausgeblendet, Rahmen bleiben sichtbar.

Grüße
Robert
System:
LibO 6 + LibO 7
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: SetPropertyValue - BorderLine

Beitrag von Stephan »

Wenn ich manuell (also übers Menü, nicht per Macro) Zeilleigenschaften --> Zellschutz --> für Ausdruck ausblenden aktiviere, wird alles (also Inhalt, Hintergrundfarben) ausgeblendet, Rahmen bleiben sichtbar.
Und so soll es auch sein.

Entschuldigung, nur bitte dazu keine Diskussion, denn die bringt nichts. Ein Programm kann man immer nur so nutzen wie es funktioniert und nicht so wie man sich wünschen würde das es funktioniert, weswegen die Frage nach ein er Funktion die nicht existiert irgendwie nicht zielführend ist.

Ich würde die Frage "Wie bekomme ich es hin, dass die Zellumrandungen bei "für Ausdruck ausblenden" mit ausgeblendet werden?" stellen als:

Wie kann ich beim Ausdrucken einer Tabelle vorübergehend dafür sorgen das die Zellumrandungen nicht angezeigt werden?

und eine mögliche Antwort wäre dann: Weise vor dem Drucken eine andere Zellvorlage zu, die Du danach wieder gegen die ursprüngliche Zellvorlage ersetzt.


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

Re: SetPropertyValue - BorderLine

Beitrag von balu »

Hallo,
TrueColor hat geschrieben: Ich hab's jetzt noch nicht mit dem Struct probiert, sondern gehe jetzt nur vom Namen aus (probieren werde ich's noch), aber ich glaube nicht, dass das hilft.
Stimmt! Das hilft nicht. Fehler meinerseits.


Stephan hat geschrieben: Entschuldigung, nur bitte dazu keine Diskussion
Keine Angst, meinerseits wird es nicht dazu kommen.



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
TrueColor
******
Beiträge: 547
Registriert: Do, 11.03.2010 11:23

Re: SetPropertyValue - BorderLine

Beitrag von TrueColor »

[quote="StephanEntschuldigung, nur bitte dazu keine Diskussion, denn die bringt nichts. Ein Programm kann man immer nur so nutzen wie es funktioniert und nicht so wie man sich wünschen würde das es funktioniert, weswegen die Frage nach ein er Funktion die nicht existiert irgendwie nicht zielführend ist.[/quote]

Kein Problem, ich hab befürchtet, dass da keine Lösung existiert. Aber die Hoffnung war da, weil ich hatte schon einige Male auf diesem Wege Möglichkeiten, die das GUI nicht zur Verfügung stellte (nicht nur auf OOo bezogen).
und eine mögliche Antwort wäre dann: Weise vor dem Drucken eine andere Zellvorlage zu, die Du danach wieder gegen die ursprüngliche Zellvorlage ersetzt.
Deswegen mein Ansatz mit der Rahmenfarbe. Aber Zellvorlage wechseln klingt noch etwas eleganter.

Danke & Grüße
Robert
System:
LibO 6 + LibO 7
TrueColor
******
Beiträge: 547
Registriert: Do, 11.03.2010 11:23

Re: SetPropertyValue - BorderLine

Beitrag von TrueColor »

Hallo Balu,
balu hat geschrieben:
TrueColor hat geschrieben: Ich hab's jetzt noch nicht mit dem Struct probiert, sondern gehe jetzt nur vom Namen aus (probieren werde ich's noch), aber ich glaube nicht, dass das hilft.
Stimmt! Das hilft nicht. Fehler meinerseits.
Ganz so falsch war das nicht.

Code: Alles auswählen

    Dim myProtectionOn as new com.sun.star.util.CellProtection
    with myProtectionOn
       .isPrintHidden = True
    end with

    Dim myProtectionOff as new com.sun.star.util.CellProtection
    with myProtectionOff
       .isPrintHidden = False
    end with

[...]

                    oCell.CellProtection = myProtectionOn

[...]

                    oCell.CellProtection = myProtectionOff
Allerdings finde ich das arg umständlich bzw. der Lesbarkeit nicht sonderlich zuträglich, besonders, wenn man nur eine Eigenschaft aus .CellProtection benötigt.

Grüße
Robert
System:
LibO 6 + LibO 7
TrueColor
******
Beiträge: 547
Registriert: Do, 11.03.2010 11:23

Re: [gelöst] SetPropertyValue - BorderLine

Beitrag von TrueColor »

So, jetzt fkt. alles so, wie ich's mir vorgestellt hab. Danke nochmal an alle Beteiligten.

Code: Alles auswählen

Sub Druckauswahl(Event)

    Dim oChkBox as Object
    Dim i as Integer
    Dim j as Integer
    Dim k as Integer
    Dim myLineStyle as new com.sun.star.table.BorderLine
    Dim myProtection as new com.sun.star.util.CellProtection

    oChkBox = Event.Source.Model
    oSheet = ThisComponent.getCurrentController.getActiveSheet

    Select Case oChkBox.State
        Case 0
            i = right(oChkBox.Name,1) 'Ranges
            oRange = oSheet.getCellRangeByName("schmal_" & i)

            for j = 0 to ubound(oRange.data) 'Y-Axis/Rows

                    Select Case j
                        Case 2, 4, 6, 8, 10
                            myLineStyle.Color = rgb(255,255,255)
                            myLineStyle.outerLineWidth = 0
                            oCell.topBorder = myLineStyle
                    End Select

                for k = 0 to ubound (oRange.data(0)) 'X-Axis/Colums

                    oCell = oRange.getcellbyposition(k,j)
                    oCell.CharColor = rgb (200,200,200)
                    myProtection.isPrintHidden = True
                    oCell.CellProtection = myProtection

                next k
            next j

        Case 1
            i = right(oChkBox.Name,1) 'Ranges
            oRange = oSheet.getCellRangeByName("schmal_" & i)

            for j = 0 to ubound(oRange.data) 'Y-Axis/Rows

                    Select Case j
                        Case 2, 4, 6, 8, 10
                            myLineStyle.Color = rgb(0,0,0)
                            myLineStyle.outerLineWidth = 5
                            oCell.topBorder = myLineStyle
                    End Select

                for k = 0 to ubound (oRange.data(0)) 'X-Axis/Colums

                    oCell = oRange.getcellbyposition(k,j)
                    oCell.CharColor = rgb (0,0,0)
                    myProtection.isPrintHidden = False
                    oCell.CellProtection = myProtection

                next k
            next j

    End Select
    
End Sub
System:
LibO 6 + LibO 7
Antworten