Hallo!
Ich möchte per Makro das Wort direkt vor dem Cursor auswählen (und dann weiterverarbeiten). Leider werden (auch bei [Umsch]+[Strg]+[Links]) als Wort nur die Buchstaben bis zu einem auftretenden anderen Zeichen, etwa + oder =, ausgewählt. Ich hätte aber lieber die Auswahl bis zum ersten auftretenden Leerzeichen o. ä., auch wenn Punkte oder sonstwas in der Zeichenkette stehen. Wie bekomme ich das hin?
Vielen Dank!
[gelöst] Zeichenkette auswählen, wie?
Moderator: Moderatoren
-
- Beiträge: 5
- Registriert: Mo, 10.07.2006 13:14
[gelöst] Zeichenkette auswählen, wie?
Zuletzt geändert von gunther.oo am Mi, 12.07.2006 11:38, insgesamt 1-mal geändert.
Hey Gunther,
wie machst du es denn jetzt? Bei so speziellen Fragen ist es immer wichtig, den schon bestehenden Code mit zu posten - dann können wir helfen.
Oder war es eher eine allgemeine Frage ob das geht?
Darauf gibt es eine einfache Antwort: Ja.
Je genauer du deine Wünsche und den Weg beschreiben kannst, um so eher gibt es eine Lösung.
Schuss ins "Blaue" da nicht ausprobiert:
Viewcursor holen, Methode gotoStartOfWord(true) aufrufen, schon sollte das Wort markiert sein.
Sollte die Methode jedoch auch bei einem Pluszeichen etc stoppen, dann bleibt nur Zeichen für Zeichen zu vergleichen, bis du ein Leerzeiche gefunden hast - per Schleife.
Gruss
Thomas
wie machst du es denn jetzt? Bei so speziellen Fragen ist es immer wichtig, den schon bestehenden Code mit zu posten - dann können wir helfen.
Oder war es eher eine allgemeine Frage ob das geht?
Darauf gibt es eine einfache Antwort: Ja.
Je genauer du deine Wünsche und den Weg beschreiben kannst, um so eher gibt es eine Lösung.
Schuss ins "Blaue" da nicht ausprobiert:
Viewcursor holen, Methode gotoStartOfWord(true) aufrufen, schon sollte das Wort markiert sein.
Sollte die Methode jedoch auch bei einem Pluszeichen etc stoppen, dann bleibt nur Zeichen für Zeichen zu vergleichen, bis du ein Leerzeiche gefunden hast - per Schleife.
Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
-
- Beiträge: 5
- Registriert: Mo, 10.07.2006 13:14
Hallo Thomas!
Danke für die schnelle Reaktion!
Wie mache ich's bis jetzt? Nur mit dem Makro-Recorder...
Hab noch nie Makros selber geschrieben, höchstens mal angepasst.
Ich habe diverse Dokumentaionen zu Makro-Code und OpenOffice Basic im Netz gefunden. Da ich aber nicht weiß, wie etwa passende Funktionen heißen, finde ich keine Hilfe.
Insofern wäre mir genau so wohl am besten geholfen, wie Du es bereits versucht hast:
Ich brauche ein paar Tips, womit es gehen könnte. Wie heißen z. B. die String-Funktionen oder -methoden, die ich benutzen könnte? Ich suche mir die Syntax dann schon zusammen.
Konkret habe ich folgendes vor: In meinem Text tauchen sehr viele verschiedene Formatierungen auf, die ich gern per Tastenkürzel zuweisen möchte. Als einfaches Beispiel habe ich etwa Makros für Indizes oben und unten per Makrorecorder erstellt:
Nach dem Schema: Zeichen nach links markieren - toggle Format tiefgestellt (an) - Schritt nach rechts - toggle Format tiefgestellt (aus).
Funktioniert prima, der Makro liegt direkt auf einer Funktionstaste; ich kann also super flüssig schreiben, ohne irgendwelche Schaltflächen oder Menüs anklicken zu müssen. Davon hätte ich jetzt gern mehr, muss aber nicht nur einzelne Zeichen, sondern zusammenhängende Zeichenfolgen auswählen.
Hier mal der Makro für einen unteren Index:
Vielen Dank für weitere Tips!
Gruß, Gunther
Danke für die schnelle Reaktion!
Wie mache ich's bis jetzt? Nur mit dem Makro-Recorder...

Hab noch nie Makros selber geschrieben, höchstens mal angepasst.
Ich habe diverse Dokumentaionen zu Makro-Code und OpenOffice Basic im Netz gefunden. Da ich aber nicht weiß, wie etwa passende Funktionen heißen, finde ich keine Hilfe.
Insofern wäre mir genau so wohl am besten geholfen, wie Du es bereits versucht hast:
Ich brauche ein paar Tips, womit es gehen könnte. Wie heißen z. B. die String-Funktionen oder -methoden, die ich benutzen könnte? Ich suche mir die Syntax dann schon zusammen.
Konkret habe ich folgendes vor: In meinem Text tauchen sehr viele verschiedene Formatierungen auf, die ich gern per Tastenkürzel zuweisen möchte. Als einfaches Beispiel habe ich etwa Makros für Indizes oben und unten per Makrorecorder erstellt:
Nach dem Schema: Zeichen nach links markieren - toggle Format tiefgestellt (an) - Schritt nach rechts - toggle Format tiefgestellt (aus).
Funktioniert prima, der Makro liegt direkt auf einer Funktionstaste; ich kann also super flüssig schreiben, ohne irgendwelche Schaltflächen oder Menüs anklicken zu müssen. Davon hätte ich jetzt gern mehr, muss aber nicht nur einzelne Zeichen, sondern zusammenhängende Zeichenfolgen auswählen.
Hier mal der Makro für einen unteren Index:
Code: Alles auswählen
sub IndexUnten
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
dim args1(1) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Count"
args1(0).Value = 1
args1(1).Name = "Select"
args1(1).Value = true
dispatcher.executeDispatch(document, ".uno:GoLeft", "", 0, args1())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:SubScript", "", 0, Array())
rem ----------------------------------------------------------------------
dim args3(1) as new com.sun.star.beans.PropertyValue
args3(0).Name = "Count"
args3(0).Value = 1
args3(1).Name = "Select"
args3(1).Value = false
dispatcher.executeDispatch(document, ".uno:GoRight", "", 0, args3())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:SubScript", "", 0, Array())
end sub
Gruß, Gunther
-
- Beiträge: 5
- Registriert: Mo, 10.07.2006 13:14
Hallo Welt!
Habe mich aufgrund des Tips "Viewcursor/Textcursor" danach umgesehen und habe mir nun folgenden Code zusammengebastelt:
Wie in den Komentarzeilen vermerkt, kriege ich aber keine Ergebnisse, wenn .SearchBackwards auf True steht. Steht dort False, läuft die Suche und das Markieren fast wie gewünscht, allerdings wird die Suche am Anfang des Dokuments gestartet und ich bekomme entsprechend lange Strings...
Daraus ergibt sich meine Frage, wie kann ich den Startpunkt der Suche festlegen? Oder sollte ich hier ganz anders rangehen?
Danke für Tips! Gruß, Gunther
Habe mich aufgrund des Tips "Viewcursor/Textcursor" danach umgesehen und habe mir nun folgenden Code zusammengebastelt:
Code: Alles auswählen
sub SucheBisLeerzeichen
dim myDoc As Object
dim mySuche as Object
dim myTrefferPos as Object
myDoc=thisComponent
myViewCursor=myDoc.GetCurrentController.ViewCursor 'da bin ich beim Tippen
myTC=myDoc.text.createtextcursor() 'wo steht der denn nach dem Erzeugen?
myTC.gotoRange(myViewCursor,False) 'egal, stellen wir ihn dahin, wo wir ihn brauchen
mySuche = myDoc.createSearchDescriptor()
With mySuche ' SearchDescriptor konfigurieren
.SearchString = " "
.SearchBackwards = False 'tja, ich will ab da suchen, wo ich gerade bin, und zwar rückwärts
rem Funktioniert aber nicht! Suche klappt nur, wenn hier False steht
.SearchCaseSensitive = False
.SearchWords = False
.SearchRegularExpression = False
.SearchStyles = False
.SearchSimilarity = False
End With
myTrefferPos = myDoc.findFirst( mySuche ) ' nach erstem Treffer suchen
myTC.gotoRange(myTrefferPos,True) ' von Schreibposition bis Fundstelle markieren
msgbox myTC.String ' jetzt etwas mit dem markierten Text anstellen; zu Testzwecken erstmal anzeigen...
end sub
Daraus ergibt sich meine Frage, wie kann ich den Startpunkt der Suche festlegen? Oder sollte ich hier ganz anders rangehen?
Danke für Tips! Gruß, Gunther
-
- Beiträge: 5
- Registriert: Mo, 10.07.2006 13:14
Hab jetzt eine Idee
Hallo, hatte gerade eine Idee, welche auf den ersten Blick gut aussieht:
Wenn ich statt findFirst findNext verwende, kann ich als Startposition den Viewcursor angeben, und dann läuft die Suche auch schön rückwärts!
Erste Tests sehen, wie gesagt, richtig gut aus.
Gruß, Gunther
Wenn ich statt findFirst findNext verwende, kann ich als Startposition den Viewcursor angeben, und dann läuft die Suche auch schön rückwärts!
Erste Tests sehen, wie gesagt, richtig gut aus.

Gruß, Gunther
hey Gunther,
na, sieht doch schon gut aus. Deine Fragen hast du ja alle schon selbst beantwortet - klasse
Gruss
Thomas
na, sieht doch schon gut aus. Deine Fragen hast du ja alle schon selbst beantwortet - klasse

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