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.