Hallo,
in Writer befindet sich der sichtbare Cursor in einem Absatz des Fließtextes welcher eine Absatzumrandung hat.
Gibt es eine einfache Vorgehensweise alle Folgeabsätze zu ermitteln, welche ohne Unterbrechung ebenfalls umrandet sind?
Nebenbedingungen:
-wenn Umrandungen vorhanden sind, so sind diese verschmolzen
-Innerhalb der Absätze kann beliebig formatierter Text vorhanden sein, d.h. die Zeichenformatierung kann wechseln auch können Feldbefehle vorhanden sein
Mir fällt bisher nur ein bei jedem Absatz zu prüfen ob für Top-, Bottom-, Left- und Right-Border der Wert für OuterLineWidth ungleich Null ist.
Gruß
Stephan
ZUsammenhängenden Textbereich ermitteln welcher umrandet ist
Moderator: Moderatoren
Re: ZUsammenhängenden Textbereich ermitteln welcher umrandet ist
Moin Stephan,
an sich reicht die Absatzeigenschaft "ParaIsConnectBorder" - steht sie auf True und der davorliegende Absatz besitzt einen Rahmen (links oder Rechts, oben oder unten) - so ist der Absatz ebenfalls "umrahmt" - also der Rahmen verschmolzen.
An sich ist die Iteration über die Absätze aber korrekt. Da wirst Du wohl jeden einzelnen prüfen müssen hinsichtlich des Rahmens. Wenn Du den ersten umrahmten Absatz gefunden hast (vielleicht, weil dort sowieso der Viewcursor steht?) . Ansonsten: Schleifen sind dein Freund *hihi*
VG
Tom
an sich reicht die Absatzeigenschaft "ParaIsConnectBorder" - steht sie auf True und der davorliegende Absatz besitzt einen Rahmen (links oder Rechts, oben oder unten) - so ist der Absatz ebenfalls "umrahmt" - also der Rahmen verschmolzen.
An sich ist die Iteration über die Absätze aber korrekt. Da wirst Du wohl jeden einzelnen prüfen müssen hinsichtlich des Rahmens. Wenn Du den ersten umrahmten Absatz gefunden hast (vielleicht, weil dort sowieso der Viewcursor steht?) . Ansonsten: Schleifen sind dein Freund *hihi*
VG
Tom
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Re: ZUsammenhängenden Textbereich ermitteln welcher umrandet ist
Hallo Tom,
Aber meine Überlegung das ich überhaupt alle Absätze ermitteln muss ist unnötig, denn die Situation ist so:
es gibt einen nicht-umrandeten Absatz, dort steht der V-Cursor, nach diesem Absatz kommt mindestens ein umrandeter Absatz. Der erste Absatz soll nun umrandet und mit möglichen Folgeabsätzen verschmolzen werden. Dazu muss ich ja garnicht wissen wieviele Folgeabsätze umrandet sind, sondern es genügt den Absatz mit dem unmittelbaren Folgeabsatz zu verschmelzen (so wie es Dir offensichtlich gleich klar war).
Der für meine Zwecke funktionierende Code ist:
Gruß
Stephan
Stimmt. Ich war ungenau mit meiner Frage (es KÖNNTE nämlich auch nur ein Absatz umrandet sein, d.h. nach dem Absatz in welchem der Cursor steht folgt kein Umrandeter mehr).an sich reicht die Absatzeigenschaft "ParaIsConnectBorder" - steht sie auf True und der davorliegende Absatz besitzt einen Rahmen (links oder Rechts, oben oder unten) - so ist der Absatz ebenfalls "umrahmt" - also der Rahmen verschmolzen.
Aber meine Überlegung das ich überhaupt alle Absätze ermitteln muss ist unnötig, denn die Situation ist so:
es gibt einen nicht-umrandeten Absatz, dort steht der V-Cursor, nach diesem Absatz kommt mindestens ein umrandeter Absatz. Der erste Absatz soll nun umrandet und mit möglichen Folgeabsätzen verschmolzen werden. Dazu muss ich ja garnicht wissen wieviele Folgeabsätze umrandet sind, sondern es genügt den Absatz mit dem unmittelbaren Folgeabsatz zu verschmelzen (so wie es Dir offensichtlich gleich klar war).
Der für meine Zwecke funktionierende Code ist:
Code: Alles auswählen
v_cur = ThisComponent.GetCurrentController.ViewCursor
t_cur = ThisComponent.Text.CreateTextCursor
t_cur.GotoRange(v_cur, False)
t_cur.gotoNextParagraph(False)
'der nachfolgende Absatz enthält die passenden Werte für die Umrandung
v_cur.TopBorder = t_cur.TopBorder
v_cur.LeftBorder = t_cur.LeftBorder
v_cur.RightBorder = t_cur.RightBorder
v_cur.BottomBorder = t_cur.BottomBorder
v_cur.TopBorderDistance = t_cur.TopBorderDistance
v_cur.LeftBorderDistance = t_cur.LeftBorderDistance
v_cur.RightBorderDistance = t_cur.RightBorderDistance
v_cur.BottomBorderDistance = t_cur.BottomBorderDistance
v_cur.ParaShadowFormat = t_cur.ParaShadowFormat
'falls hinter dem ersten Absatz nur ein umrandeter Absatz ist
'KÖNNTE es sein das 'Verschmelzen' nicht aktiviert ist
'Deshalb nicht auslesen, sondern direkt auf True setzen
v_cur.ParaIsConnectBorder = True
Gruß
Stephan