Hi Ihr,
wieder ein Problem.
Ich habe mir mit viel Mühe (Recherche und Konstruktion) eine Sub gebaut, mit welcher ich versteckte Hyperlinks in die RTFBox einfügen kann:
Die Konstruktion und das Einfügen des Links klappt inzwischen auch prima.
Allerdings bleibt die Eigenschaft SelectionStart immer auf currentPosition +1, anstatt dass SelectionStart mit currentPosition + My.Settings.Texteditor_Hotlink_Text.Length + 2 (+2, wegen der zusätzlich eingefügten sGrösser-/Kleiner-Zeichen) ans Ende des Hyperlinks gesetzt wird.
Woran kann das liegen?
Ich hätte das Caret nach dem Einfügen natürlich gerne auch am Ende der Einfügung.
Das richtig fette Problem ist aber:
Ich baue eine Test-RTF mit vier normalen Links.
Egal, wo ich dann mit meiner o.g. Funktion den versteckten Link einfüge, wird dann in der RTFBox beim Anklicken der, dem versteckten Link folgenden normalen Links kein TextEditor_RTFBox_LinkClicked mehr ausgeführt.
Öffne ich die RTF aber im Wordpad, funktionieren alle Links.
Hier ein Beispiel-Quelltext des RTF:
Zwei normale Links, dann der eingefügte versteckte Link mit dem Beschreibungs-Text "Test", dann zwei weitere normale Links:
Die ersten beiden normalen Links funktionieren. Auch der versteckte "Test"-Link.
Aber die folgenden zwei normalen Links haben keine Funktion mehr, sobald ich den versteckten Link einfüge.
Ohne dem versteckten Link funktionieren alle vier normalen Links.
Weiss jemand von Euch vielleicht, woran das liegt und wie das zum Funktionieren gebracht werden kann?
Als weiteres Problem mit den versteckten Links:
Wie bekomme ich diese LinkURLs beim MouseOver ausgelesen, damit ich diese in der Statuszeile anzeigen kann?
Finde dafür absolut keine Lösung.
Es müsste doch m.E. in etwa so funktionieren:
- Feststellen der Textpos im Quelltext, über welcher sich der Mauszeiger befindet.
- Ab dieser Textstelle im Quelltext rückwärts suchen, bis der Text "<{{\field{\*\fldinst{HYPERLINK" + chr(34) auftaucht - die Textpos abdem chr(34)+1 als Startpos sichern.
- Von dieser Stelle aus vorwärts suchen, bis ein weiteres Hockkomma erscheint die Textpos vor dem chr(34) als Endpos sichern.
- Alles zwischen diesen beiden Punkten ist der Hyperlink
Nur, wie setze ich das um?
Schönes Rest-Weekend @all
wieder ein Problem.
Ich habe mir mit viel Mühe (Recherche und Konstruktion) eine Sub gebaut, mit welcher ich versteckte Hyperlinks in die RTFBox einfügen kann:
VB.NET-Quellcode
- If tsc_TextEditor_RTFBox.SelectionFont IsNot Nothing Then
- fontName = tsc_TextEditor_RTFBox.SelectionFont.Name
- Else
- fontName = sym_TextEditor_Format_cob_Schriftart.Text
- End If
- Dim linkURL As String = My.Settings.Texteditor_Hotlink_Link
- Dim linkText As String = My.Settings.Texteditor_Hotlink_Text
- Dim rtflink As String = "{\rtf1\ansi{\fonttbl{\f0\fcharset0 " & fontName & ";}}<" & "{\field{\*\fldinst{HYPERLINK """ & linkURL & """}}" & "{\fldrslt{" & linkText & "\ul0\cf0}}}>}"
- Dim currentPosition As Integer = tsc_TextEditor_RTFBox.SelectionStart
- Dim insertedTextLength As Integer = My.Settings.Texteditor_Hotlink_Text.Length
- tsc_TextEditor_RTFBox.SelectedRtf = rtflink
- tsc_TextEditor_RTFBox.SelectionStart = currentPosition + My.Settings.Texteditor_Hotlink_Text.Length + 2
- tsc_TextEditor_RTFBox.SelectionLength = 0 '
- tsc_TextEditor_RTFBox.ScrollToCaret()
Die Konstruktion und das Einfügen des Links klappt inzwischen auch prima.
Allerdings bleibt die Eigenschaft SelectionStart immer auf currentPosition +1, anstatt dass SelectionStart mit currentPosition + My.Settings.Texteditor_Hotlink_Text.Length + 2 (+2, wegen der zusätzlich eingefügten sGrösser-/Kleiner-Zeichen) ans Ende des Hyperlinks gesetzt wird.
Woran kann das liegen?
Ich hätte das Caret nach dem Einfügen natürlich gerne auch am Ende der Einfügung.
Das richtig fette Problem ist aber:
Ich baue eine Test-RTF mit vier normalen Links.
Egal, wo ich dann mit meiner o.g. Funktion den versteckten Link einfüge, wird dann in der RTFBox beim Anklicken der, dem versteckten Link folgenden normalen Links kein TextEditor_RTFBox_LinkClicked mehr ausgeführt.
Öffne ich die RTF aber im Wordpad, funktionieren alle Links.
Hier ein Beispiel-Quelltext des RTF:
Zwei normale Links, dann der eingefügte versteckte Link mit dem Beschreibungs-Text "Test", dann zwei weitere normale Links:
VB.NET-Quellcode
- {\rtf1\ansi\ansicpg1252\deff0\nouicompat\deflang1031{\fonttbl{\f0\fnil\fcharset0 Bahnschrift SemiBold;}{\f1\fswiss Arial;}}
- {\colortbl ;\red0\green0\blue255;}
- {\*\generator Riched20 10.0.19041}{\*\mmathPr\mdispDef1\mwrapIndent1440 }\viewkind4\uc1
- \pard\f0\fs24 <{{\field{\*\fldinst{HYPERLINK "http://www.welt.de"}}{\fldrslt{http://www.welt.de\ul0\cf0}}}}\f0\fs24 >\par
- \par
- <{{\field{\*\fldinst{HYPERLINK "http://www.welt.de"}}{\fldrslt{http://www.welt.de\ul0\cf0}}}}\f0\fs24 >\par
- \par
- <{{\field{\*\fldinst{HYPERLINK "http://www.welt.de"}}{\fldrslt{\ul\cf1\cf1\ul Test}}}}\f0\fs24 >\par
- \par
- <{{\field{\*\fldinst{HYPERLINK "http://www.welt.de"}}{\fldrslt{http://www.welt.de\ul0\cf0}}}}\f0\fs24 >\par
- \par
- <{{\field{\*\fldinst{HYPERLINK "http://www.welt.de"}}{\fldrslt{http://www.welt.de\ul0\cf0}}}}\f0\fs24 >\par
- \par
- \f1\par
- }
Die ersten beiden normalen Links funktionieren. Auch der versteckte "Test"-Link.
Aber die folgenden zwei normalen Links haben keine Funktion mehr, sobald ich den versteckten Link einfüge.
Ohne dem versteckten Link funktionieren alle vier normalen Links.
Weiss jemand von Euch vielleicht, woran das liegt und wie das zum Funktionieren gebracht werden kann?
Als weiteres Problem mit den versteckten Links:
Wie bekomme ich diese LinkURLs beim MouseOver ausgelesen, damit ich diese in der Statuszeile anzeigen kann?
Finde dafür absolut keine Lösung.
Es müsste doch m.E. in etwa so funktionieren:
- Feststellen der Textpos im Quelltext, über welcher sich der Mauszeiger befindet.
- Ab dieser Textstelle im Quelltext rückwärts suchen, bis der Text "<{{\field{\*\fldinst{HYPERLINK" + chr(34) auftaucht - die Textpos abdem chr(34)+1 als Startpos sichern.
- Von dieser Stelle aus vorwärts suchen, bis ein weiteres Hockkomma erscheint die Textpos vor dem chr(34) als Endpos sichern.
- Alles zwischen diesen beiden Punkten ist der Hyperlink
Nur, wie setze ich das um?
Schönes Rest-Weekend @all