Autom. Textbereich schützen/Zeilenfilter o.Ä.

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: Autom. Textbereich schützen/Zeilenfilter o.Ä.

Re: Autom. Textbereich schützen/Zeilenfilter o.Ä.

von F3K Total » Do, 28.11.2013 22:07

Hi,
folgende Methode zum erzeugen schreibgeschützter Textbereiche ist mir bekannt:
  • Textbereich markieren
  • Einfügen->Bereich->Haken bei Schreibschutz
Das ist dir zu aufwendig, daher habe ich ein Makro geschrieben, dass das Anlegen geschützter Bereiche übernimmt.
Vorgehen:
  • Erzeuge eine neue Absatzvorlage (F11/Absatzvorlagen/Rechtsklick auf Standard -> Neu ... und gebe ihr den Namen GESCHÜTZT
  • markiere deine zu schützenden Texte mit deiner RegEx-Suche
  • Doppelklicke auf GESCHÜTZT um den markierten Absätzen die neue Absatzvorlage zuzuweisen
  • Lasse das folgende Makro einmal laufen

Code: Alles auswählen

Sub S_Protect_ParaStyle
    otext = ThisComponent.Text
    oTextCursor = otext.createTextCursor
    oTextCursor.collapseToStart
    ncounter = 1
    do
    bfound = false
       do while oTextCursor.ParaStyleName = "GESCHÜTZT"
           oTextCursor.gotonextparagraph(true)
           bfound = true
       loop 
       if bfound then
       oTextCursor.gotoPreviousWord(true)
       oTextsection = Thiscomponent.createInstance("com.sun.star.text.TextSection")
       oTextsection = Thiscomponent.createInstance("com.sun.star.text.TextSection")
       oTextsection.isProtected = TRUE
       oTextsection.Name = "Ges_B_"+nCounter
       oText.insertTextContent(oTextCursor, oTextsection, TRUE)
       ncounter = ncounter + 1
       end if
    loop while oTextCursor.gotonextparagraph(false)  = true 
End Sub
Überprüfe das Ergebnis unter Format/Bereiche ...
EDIT: Habe das Makro verbessert, zusammenhängende Paragraphen werden jetzt in einem Bereich zusammengefaßt.
Mit diesem Makro können die geschützen Bereiche in einem Rutsch wieder entfernt werden.

Code: Alles auswählen

Sub S_remove_TextSections
    otext = ThisComponent.Text
    for i = thiscomponent.Textsections.count - 1 to 0 step - 1
        oSection = thiscomponent.Textsections(i)
        otext.removeTextContent(oSection)
    next i
end sub
Gruß R

Nach oben