Markierung in Writer sichern & wiederherstellen

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Blumenkübel
Beiträge: 4
Registriert: Mi, 15.06.2016 14:30

Markierung in Writer sichern & wiederherstellen

Beitrag von Blumenkübel »

Hallo zusammen :)
ich möchte mithilfe des Dispatchers ein Search&Find durchführen. Leider ist nach der ersten Ausführung die Markierung weg, weshalb das nächste Search&Find nicht wie gewünscht durchläuft. Gibt es eine Möglichkeit nach dem Ausführen des Dispatchers die Markierung wieder einzufügen?

Habe bisher nur eine Möglichkeit gefunden die Markierung auszulesen, jedoch nicht wieder neu zu setzen.

Freue mich auf Antworten.
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: Markierung in Writer sichern & wiederherstellen

Beitrag von clag »

Hallo Blumenkübel,
Blumenkübel hat geschrieben:Habe bisher nur eine Möglichkeit gefunden die Markierung auszulesen, jedoch nicht wieder neu zu setzen.
wie?

Dein Wunsch wird sich so wie du es beschreibst nicht realisieren lassen.
Denn du kannst doch auch beobachten, das nach einem manuellen erfolglosen suchen & ersetzen die Markierung bestehen bleibt und nach erfolgreichen suchen & ersetzen die Markierung weg ist, was auch logisch ist, denn der ursprüngliche markierte Bereich existiert ja so nicht mehr.
Du wirst dir wohl eine andere Vorgehensweise überlegen müssen.

Den markierten Text per Makro einlesen, mit Basic Funktionen entsprechend bearbeiten und dann den "alten Text durch den "neuen Text" ersetzen.
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Toxitom
********
Beiträge: 3768
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Re: Markierung in Writer sichern & wiederherstellen

Beitrag von Toxitom »

Hey Blumenkübel,

also, wenn ich das lese kommen mir so meine Bedenken. Der Dispatcher Code ist für die Aufgabe nicht wirklich geeignet.

Lösbar wäre es zwar (auch wenn clag das so nicht sieht) - der Aufwand erscheint mir aber viel zu groß.

Du kannst die Markierung auslesen (ViewCursor) und die Position zwischenspeichern.
Und Du kannst den ViewCursor selbstverständlich auch frei im Dokument setzen (und somit die Markierung wieder erzeugen). Aber das ist sehr aufwendig!

Wenn Du schon Makros nutzt, nimm doch gleich die API Methode - die ist sehr perform und schnell.

Vom Grundgerüst sieht die wie folgt aus:

Code: Alles auswählen

 oSuche = oDoc.createSearchDescriptor()
 oSuche.setSearchString(sSuchText)
 oSuchErg = oDoc.findfirst(oSuche)
 Do while not isNull(oSuchErg)
    oSuchErg.string = sNeuerString
    oSuchErg = oDoc.findNext(oSuchErg.End, oSuche)
 loop
wobei der sSuchstring dein zu suchender Begriff ist und sNeuerString das dafür einzusetzende Wort / Text darstellt.

Makros laufen dann unabhängig vom Viewcursur und Du kannst Dir den ganzen Aufwand sparen.

VG Tom
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Antworten