von DPunch » Mi, 17.08.2011 08:47
Aloha
rittergig hat geschrieben:Gibt es auch eine Möglichkeit, diese Suche auf eine zuvor markierten Bereich durchzuführen.
Solange es sich dabei nur um reinen Text handelt, nach dem Motto:
Code: Alles auswählen
oDoc = thisComponent
oSelection = oDoc.CurrentSelection
If NOT oSelection.supportsService("com.sun.star.text.TextRanges") Then
MsgBox "Bitte einen Text selektieren",48,"Selektion"
Exit Sub
End If
oText = oDoc.Text
oSearchDesc = oDoc.createSearchDescriptor
oSearchDesc.SearchString = "[a-z]+://[^ ]+(\.[^ ]+)+"
oSearchDesc.SearchRegularExpression = True
oResult = oDoc.findFirst(oSearchDesc)
Do While NOT isNull(oResult)
For i = 0 To oSelection.Count -1
oEnd = oSelection(i).End
oStart = oSelection(i).Start
If oText.compareRegionStarts(oEnd,oResult) <= 0 AND oText.compareRegionStarts(oStart,oResult) >= 0 Then
sURL = oResult.String
oResult.HyperLinkURL = sURL
End If
Next i
oResult = oDoc.findNext(oResult,oSearchDesc)
Loop
Bei Selektion über Text und zum Beispiel auch noch Tabellen wird das schon komplizierter.
Aloha
[quote="rittergig"]Gibt es auch eine Möglichkeit, diese Suche auf eine zuvor markierten Bereich durchzuführen.[/quote]
Solange es sich dabei nur um reinen Text handelt, nach dem Motto:
[code] oDoc = thisComponent
oSelection = oDoc.CurrentSelection
If NOT oSelection.supportsService("com.sun.star.text.TextRanges") Then
MsgBox "Bitte einen Text selektieren",48,"Selektion"
Exit Sub
End If
oText = oDoc.Text
oSearchDesc = oDoc.createSearchDescriptor
oSearchDesc.SearchString = "[a-z]+://[^ ]+(\.[^ ]+)+"
oSearchDesc.SearchRegularExpression = True
oResult = oDoc.findFirst(oSearchDesc)
Do While NOT isNull(oResult)
For i = 0 To oSelection.Count -1
oEnd = oSelection(i).End
oStart = oSelection(i).Start
If oText.compareRegionStarts(oEnd,oResult) <= 0 AND oText.compareRegionStarts(oStart,oResult) >= 0 Then
sURL = oResult.String
oResult.HyperLinkURL = sURL
End If
Next i
oResult = oDoc.findNext(oResult,oSearchDesc)
Loop [/code]
Bei Selektion über Text und zum Beispiel auch noch Tabellen wird das schon komplizierter.