von Stephan » Do, 17.05.2007 12:59
Ich komme mit einem Makro bis zur Selektion, aber weiß nicht, wie es geht, das nächste Wort zu "überspringen".
im Prinzip mit:
es kommt aber darauf an (ggf. wo der Cursor innerhalb der Selektion steht - abhängig davon wie Du es löst) und was selektiert ist, 3 Fällen treten auf:
*die Markierung umfasst am Anfang und Ende kein Leerzeichen zum 'umgebenden' Text
*die Markierung umfasst rechts ein Leerzeichen zum 'umgebenden' Text
*die Markierung umfasst links ein Leerzeichen zum 'umgebenden' Text
Etwas Probleme bereiten auch mögliche enthaltene Satzzeichen, deshalb schau mal ob das Dir schon reicht:
Code: Alles auswählen
Sub markierten_text_verschieben()
x = ThisComponent.getCurrentSelection
tmp = x(0).String
cursor = ThisComponent.Text.CreateTextCursorByRange(x(0))
v_cursor=ThisComponent.GetCurrentController.ViewCursor
If LEFT(tmp, 1) <> " " AND RIGHT(tmp, 1) <> " " Then
cursor.goRight(1,true)
v_cursor.gotoRange(cursor,true)
v_cursor.String = ""
x = ThisComponent.getCurrentSelection
cursor = ThisComponent.Text.CreateTextCursorByRange(x(0))
cursor.GotoEndOfWord(false)
cursor.GoRight(1,false)
v_cursor.gotoRange(cursor,false)
v_cursor.String = tmp & " "
Elseif Right(tmp, 1) = " " Then
v_cursor.gotoRange(cursor,true)
v_cursor.String = ""
x = ThisComponent.getCurrentSelection
cursor = ThisComponent.Text.CreateTextCursorByRange(x(0))
cursor.GotoEndOfWord(false)
cursor.GoRight(1,false)
v_cursor.gotoRange(cursor,false)
v_cursor.String = tmp
Else
v_cursor.gotoRange(cursor,true)
v_cursor.String = ""
x = ThisComponent.getCurrentSelection
cursor = ThisComponent.Text.CreateTextCursorByRange(x(0))
cursor.GotoNextWord(false)
cursor.GotoEndOfWord(false)
v_cursor.gotoRange(cursor,false)
v_cursor.String = tmp
End If
End Sub
Gruß
Stephan
[quote]Ich komme mit einem Makro bis zur Selektion, aber weiß nicht, wie es geht, das nächste Wort zu "überspringen".[/quote]
im Prinzip mit:
[code].GotoNextWord[/code]
es kommt aber darauf an (ggf. wo der Cursor innerhalb der Selektion steht - abhängig davon wie Du es löst) und was selektiert ist, 3 Fällen treten auf:
*die Markierung umfasst am Anfang und Ende kein Leerzeichen zum 'umgebenden' Text
*die Markierung umfasst rechts ein Leerzeichen zum 'umgebenden' Text
*die Markierung umfasst links ein Leerzeichen zum 'umgebenden' Text
Etwas Probleme bereiten auch mögliche enthaltene Satzzeichen, deshalb schau mal ob das Dir schon reicht:
[code]Sub markierten_text_verschieben()
x = ThisComponent.getCurrentSelection
tmp = x(0).String
cursor = ThisComponent.Text.CreateTextCursorByRange(x(0))
v_cursor=ThisComponent.GetCurrentController.ViewCursor
If LEFT(tmp, 1) <> " " AND RIGHT(tmp, 1) <> " " Then
cursor.goRight(1,true)
v_cursor.gotoRange(cursor,true)
v_cursor.String = ""
x = ThisComponent.getCurrentSelection
cursor = ThisComponent.Text.CreateTextCursorByRange(x(0))
cursor.GotoEndOfWord(false)
cursor.GoRight(1,false)
v_cursor.gotoRange(cursor,false)
v_cursor.String = tmp & " "
Elseif Right(tmp, 1) = " " Then
v_cursor.gotoRange(cursor,true)
v_cursor.String = ""
x = ThisComponent.getCurrentSelection
cursor = ThisComponent.Text.CreateTextCursorByRange(x(0))
cursor.GotoEndOfWord(false)
cursor.GoRight(1,false)
v_cursor.gotoRange(cursor,false)
v_cursor.String = tmp
Else
v_cursor.gotoRange(cursor,true)
v_cursor.String = ""
x = ThisComponent.getCurrentSelection
cursor = ThisComponent.Text.CreateTextCursorByRange(x(0))
cursor.GotoNextWord(false)
cursor.GotoEndOfWord(false)
v_cursor.gotoRange(cursor,false)
v_cursor.String = tmp
End If
End Sub[/code]
Gruß
Stephan