Mehrteilige Selektion in Textdokument, Index vs. physische Reihenfolge

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

Moderator: Moderatoren

Stephan
********
Beiträge: 10974
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Mehrteilige Selektion in Textdokument, Index vs. physische Reihenfolge

Beitrag von Stephan » Di, 16.04.2019 09:38

Hallo,

in einem Textdokument gibt es eine mehrteilige Markierung im Fließtext (also STRG-Taste festhalten und mehrere, nicht zusammenhängende Textstellen markieren), welche aber nicht in der Reihenfolge markiert wurde wie der Text im Dokument steht, sondern in beliebiger Reihenfolge.

Beim folgenden Code entspricht deshalb der Index der Teilmarkierungen, der Auswahlreihenfolge beim Markieren und nicht der der physischen Reihenfolge der Textteile im Dokument.

Code: Alles auswählen

Sub Main()
	akt_sel = ThisComponent.getCurrentSelection
	
	On Error Resume Next
	
	sel_count = akt_sel.getCount()
	For i = 0 To sel_count-1
		Msgbox ThisComponent.Text.createTextCursorByRange(akt_sel.getByIndex(i)).String
	Next i

End Sub

Gibt es eine einfache Vorgehensweise die physische Reihenfolge der markierten Textteile im Dokument zu bestimmen?


Irgendwie habe ich den Verdacht ich stelle mich blöd an, denn was mir einfällt ist eigentlich nur in den Textteilen eine Eigenschaft zu setzen die sonst im Dokument nicht vorkommt (z.B. Zeichenhintergrund RGB(0,0,1)) und dann per Cursor von vorne nach hinten durch das komplette Dokument zu 'wandern'.


Gruß
Stephan

Stephan
********
Beiträge: 10974
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Mehrteilige Selektion in Textdokument, Index vs. physische Reihenfolge

Beitrag von Stephan » Do, 18.04.2019 11:03

Lösung ist:

Code: Alles auswählen

Sub Main()
	vc = ThisComponent.GetCurrentController.ViewCursor
	enum = vc.getText.CreateEnumeration
	Do While enum.hasMoreElements()
		akt_enum = enum.NextElement
		Msgbox akt_enum.String
	Loop
End Sub
Gruß
Stephan

Antworten