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
- [de-discuss] Programmierer (besser Debugger) gesucht. · Volker Heggemann
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.