Calc - Zell-Rahmen einfügen

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

Moderator: Moderatoren

theindless
*****
Beiträge: 355
Registriert: So, 09.05.2010 12:37

Calc - Zell-Rahmen einfügen

Beitrag von theindless »

Hallo miteinander,

ich habe (mit Hilfe von Dannenhöfer und Pitonyak) in einem Macro per nachfolgendem Code einen Zell-Rahmen eingefügt:

Code: Alles auswählen

oBorder = oCell.Tableborder
	oBorderline = oBorder.TopLine
	oBorderline.outerlinewidth = 80
	oBorderline.innerlinewidth = 0
	oBorderline.linedistance = 0
	oBorderline.color = &H00000CCC

With oCell
	.topBorder = oBorderline
	.leftBorder = oBorderline
	.rightBorder = oBorderline
	.bottomBorder = oBorderline
	end with
Next i
Das funktioniert so auch, jedoch kapiere ich 1 Code-Zeile nicht wirklich.

Was bewirkt

Code: Alles auswählen

oBorderline = oBorder.TopLine
?

Insbesondere, da es auch keine sichtbare Veränderung gibt, wenn ich "TopLine" durch "BottomLine" ersetze.

Kann mich da bitte einer aufklären!?

theindless
Lernbegieriger Nutzer mit (hoffentlich) steigendem Wissen
Benutzeravatar
balu
********
Beiträge: 3812
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: Calc - Zell-Rahmen einfügen

Beitrag von balu »

Hallo theindless,

eins vorweg, ich habe mir jetzt nicht die Mühe gemacht deinen Code anzuwenden, da ich ja nicht weiß ob Du in Calc oder im Writer Zellen Formatierst. So was solltest Du uns schon mitteilen.
ich habe (mit Hilfe von Dannenhöfer und Pitonyak)
Pitonyak ist ja ganz gut und schön, blos mit welcher Version arbeitest Du, die deutsche oder die englische? Denn ich weiß ja nicht wie gut dein englisch ist, und folglich ob Du auch alles richtig verstanden hast was dort im Original zu lesen ist.

Insbesondere, da es auch keine sichtbare Veränderung gibt, wenn ich "TopLine" durch "BottomLine" ersetze.
Und dann gibt es da auch noch die LeftLine, RightLine, HorizontalLine und die VerticalLine.
Nein, ich mache mich jetzt nicht über dich Lustig, und es ist auch keine Haarspalterei. Es ist nun mal halt Fakt das es auch noch diese Linien gibt.

Und nun komme ich noch mal auf Pitonyak zurück. Denn in der deutschen Version die ich habe ist nämlich folgendes zu nachzulesen.
Andrew Pitonyak OOME_3_0_deutsch.pdf hat geschrieben: Wenn man in einem TableBorder-Struct Werte einstellt, werden nicht immer alle Werte benötigt.
Wenn zum Beispiel die Umrandung einer Zelle konfiguriert wird, werden die einzelnen Werte nur
genutzt, wenn auch die entsprechende „Is...Valid“-Eigenschaft gesetzt ist.
Wie gesagt, da ich deinen Code nicht angewendet habe, kann ich jetzt auch nur mutmaßen was das alles zu bedeuten hat.
Ich denke mir mal, so lange keine "Is...Valid"-Eigenschaft gesetzt wird, spielt es keine Rolle ob Du TopLine oder BottomLine nimmst, da die Einstellungen für alle 4 Richtungen gelten. Nur wenn Du eine ganz bestimmte Linie anders Formatieren willst, z.B. Farbe und Dicke, dann musst Du sie dementsprechend ansprechen und die Eigenschaft mittels "Is...Valid" setzen.

Und wenn ich mich nicht vertue, dann ist das auch im groben im unteren Beispiel bei Dannenhöfer zu sehen.


Sollte ich mit meinen Gedankengängen, Mutmaßungen, irgendwie falsch liegen, so möge man mich doch bitte korrigieren.



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
theindless
*****
Beiträge: 355
Registriert: So, 09.05.2010 12:37

Re: Calc - Zell-Rahmen einfügen

Beitrag von theindless »

Hallo,
balu hat geschrieben:ins vorweg, ich habe mir jetzt nicht die Mühe gemacht deinen Code anzuwenden, da ich ja nicht weiß ob Du in Calc oder im Writer Zellen Formatierst. So was solltest Du uns schon mitteilen.
:shock:

Isch hab doch extra "Calc" in die Überschrift geschrieben.... :)
Pitonyak ist ja ganz gut und schön, blos mit welcher Version arbeitest Du, die deutsche oder die englische?
Beides :) aber ich habe in der deutschen nachgelesen...

Aus Dannenhöfer habe ich ".Topline", da es dort so steht.... aber warum, lese ich da nicht raus.

Deine Erklärung klingt aber schlüssig für mich.

theindless
Lernbegieriger Nutzer mit (hoffentlich) steigendem Wissen
Benutzeravatar
balu
********
Beiträge: 3812
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: Calc - Zell-Rahmen einfügen

Beitrag von balu »

Hallo theindless,
Isch hab doch extra "Calc" in die Überschrift geschrieben....
Oooooh Backe! Peinlich, peinlich!
Sorry, hat ich jetzt echt mal übersehen :oops: .

Deine Erklärung klingt aber schlüssig für mich.
Danke! Das muntert mich jetzt doch wieder etwas auf :).



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
Karolus
********
Beiträge: 7535
Registriert: Mo, 02.01.2006 19:48

Re: Calc - Zell-Rahmen einfügen

Beitrag von Karolus »

Hallo
Es geht erst mal darum ein Struct mit den Eigenschaften zu haben die man setzen möchte.
oCell.TableBorder ist "erst" das Elternobject

Anschaulicher wirds evtl. mit diesem Beispiel:

Code: Alles auswählen

Sub Beispiel

Dim Linestyle As New com.sun.star.table.BorderLine

  with Linestyle
      .Color = rgb(200,0,0)
      .InnerLineWidth = 0
      .OuterlineWidth = 100
      .LineDistance = 0
  end with
  
  with thisComponent.currentSelection()
      .BottomBorder = Linestyle
      .LeftBorder = Linestyle
      .RightBorder = Linestyle
      .TopBorder = Linestyle
  end with
End Sub
Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
theindless
*****
Beiträge: 355
Registriert: So, 09.05.2010 12:37

Re: Calc - Zell-Rahmen einfügen

Beitrag von theindless »

Hallo,

verstehe ich das richtig, dass ich die Codezeilen

Code: Alles auswählen

oBorder = oCell.Tableborder
oBorderline = oBorder.TopLine
durch das von dir angeführte

Code: Alles auswählen

Dim oBorderline as new com.sun.star.table.borderline
ersetzen könnte?

Zumindest funktioniert es...

theindless
Lernbegieriger Nutzer mit (hoffentlich) steigendem Wissen
Antworten