[gelöst] SetPropertyValue - BorderLine

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: [gelöst] SetPropertyValue - BorderLine

Re: [gelöst] SetPropertyValue - BorderLine

von TrueColor » Do, 18.07.2013 09:14

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

Re: SetPropertyValue - BorderLine

von TrueColor » Di, 16.07.2013 08:33

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

Re: SetPropertyValue - BorderLine

von TrueColor » Mo, 08.07.2013 08:38

[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

Re: SetPropertyValue - BorderLine

von balu » Sa, 06.07.2013 12:13

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

Re: SetPropertyValue - BorderLine

von Stephan » Sa, 06.07.2013 11:27

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

Re: SetPropertyValue - BorderLine

von TrueColor » Sa, 06.07.2013 11:14

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

Re: SetPropertyValue - BorderLine

von TrueColor » Sa, 06.07.2013 11:06

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 ;-)

Re: SetPropertyValue - BorderLine

von Stephan » Fr, 05.07.2013 14:06

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) 3177 mal betrachtet
Gruß
Stephan

Re: SetPropertyValue - BorderLine

von balu » Fr, 05.07.2013 13:25

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

Re: SetPropertyValue - BorderLine

von Karolus » Fr, 05.07.2013 12:49

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

Re: SetPropertyValue - BorderLine

von TrueColor » Fr, 05.07.2013 11:05

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

Re: SetPropertyValue - BorderLine

von Karolus » Fr, 05.07.2013 10:09

Hallo

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

Karolus

[gelöst] SetPropertyValue - BorderLine

von TrueColor » Fr, 05.07.2013 08:37

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

Nach oben