Date: prev next · Thread: first prev next last
2011 Archives by date, by thread · List index


Hallo Liste,

(nein, ich suche kein Debugger-Programm) aber jemanden, der LibreOffice Writer debuggen kann.

Ich arbeite an dem Formatvorlagen - Ersetzungsmakro.
Nun hänge ich fest, weil der Suchen&Ersetzen Dialog scheinbar nur Absatzvorlagen austauscht?!

Ich habe im Netz so viel herausgefunden, das es eine StyleFamily - Variable gibt, die scheinbar binär mit Werten gesetzt werden kann.

Folgendes Listing ersetzt mit dem Absatzformat "Text" formatierte Zeilen mit dem Absatzformat "Textkörper".
Dieses Makro funktioniert!

________________________ CODE ______________________
sub Change_Text_Absatzformat
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
oDoc = thisComponent
document   = odoc.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(18) as new com.sun.star.beans.PropertyValue
' Hier die Stelle, die scheinbar für die Art der Vorlage bestimmt ist.
' Value 1 = Zeichen  2 = Absatz 4 = Seite 8 = Rahmen 16 = Liste
args1(0).Name = "SearchItem.StyleFamily"
args1(0).Value = 2
args1(1).Name = "SearchItem.CellType"
args1(1).Value = 0
args1(2).Name = "SearchItem.RowDirection"
args1(2).Value = true
args1(3).Name = "SearchItem.AllTables"
args1(3).Value = false
args1(4).Name = "SearchItem.Backward"
args1(4).Value = false
args1(5).Name = "SearchItem.Pattern"
args1(5).Value = true
args1(6).Name = "SearchItem.Content"
args1(6).Value = false
args1(7).Name = "SearchItem.AsianOptions"
args1(7).Value = false
args1(8).Name = "SearchItem.AlgorithmType"
args1(8).Value = 0
args1(9).Name = "SearchItem.SearchFlags"
args1(9).Value = 65536
args1(10).Name = "SearchItem.SearchString"
args1(10).Value = "Text"
args1(11).Name = "SearchItem.ReplaceString"
args1(11).Value = "Textkörper"
args1(12).Name = "SearchItem.Locale"
args1(12).Value = 255
args1(13).Name = "SearchItem.ChangedChars"
args1(13).Value = 2
args1(14).Name = "SearchItem.DeletedChars"
args1(14).Value = 2
args1(15).Name = "SearchItem.InsertedChars"
args1(15).Value = 2
args1(16).Name = "SearchItem.TransliterateFlags"
args1(16).Value = 1280
args1(17).Name = "SearchItem.Command"
args1(17).Value = 3
args1(18).Name = "Quiet"
args1(18).Value = true
dispatcher.executeDispatch(document, ".uno:ExecuteSearch", "", 0, args1())
end sub
__________________________ Code Ende ______________________


Das gleiche Listing, allerdings soll nun die ZEICHEN Formatvorlage "Betont" gegen die Vorlage "Stark betont" ersetzt werden.
Dieses Makro funktioniert nicht!

___________________________ Code _______________________
sub Change_Betont_Zeichenformat
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
oDoc = thisComponent
document   = odoc.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(18) as new com.sun.star.beans.PropertyValue
' Value 1 = Zeichen  2 = Absatz 4 = Seite 8 = Rahmen 16 = Liste
args1(0).Name = "SearchItem.StyleFamily"
args1(0).Value = 1
args1(1).Name = "SearchItem.CellType"
args1(1).Value = 0
args1(2).Name = "SearchItem.RowDirection"
args1(2).Value = true
args1(3).Name = "SearchItem.AllTables"
args1(3).Value = false
args1(4).Name = "SearchItem.Backward"
args1(4).Value = false
args1(5).Name = "SearchItem.Pattern"
args1(5).Value = true
args1(6).Name = "SearchItem.Content"
args1(6).Value = false
args1(7).Name = "SearchItem.AsianOptions"
args1(7).Value = false
args1(8).Name = "SearchItem.AlgorithmType"
args1(8).Value = 0
args1(9).Name = "SearchItem.SearchFlags"
args1(9).Value = 65536
args1(10).Name = "SearchItem.SearchString"
args1(10).Value = "Betont"
args1(11).Name = "SearchItem.ReplaceString"
args1(11).Value = "Start betont"
args1(12).Name = "SearchItem.Locale"
args1(12).Value = 255
args1(13).Name = "SearchItem.ChangedChars"
args1(13).Value = 2
args1(14).Name = "SearchItem.DeletedChars"
args1(14).Value = 2
args1(15).Name = "SearchItem.InsertedChars"
args1(15).Value = 2
args1(16).Name = "SearchItem.TransliterateFlags"
args1(16).Value = 1280
args1(17).Name = "SearchItem.Command"
args1(17).Value = 3
args1(18).Name = "Quiet"
args1(18).Value = true
dispatcher.executeDispatch(document, ".uno:ExecuteSearch", "", 0, args1())
end sub
______________________ Code Ende _____________________

Warum funktioniert das nicht? Oder gibt es ggf. einen UNO.API Aufruf dafür, der in dem gesamten Dokument alles Vorkommen von entsprechend formatierten Zeichen austauscht?

(Bitte keine Verweise auf diverse Suchen&Ersetzen Extensions, die habe ich schon probiert und nichts brauchbares gefunden.)


Gruß
Volker

--
Informationen zur Abmeldung: E-Mail an discuss+help@de.libreoffice.org
Listenarchiv: http://listarchives.libreoffice.org/de/discuss/
Alle E-Mails an diese Liste werden unlöschbar öffentlich archiviert

Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.