Gilt ab List & Label 20
Um eine Silbentrennung mit List & Label zu erreichen kann man sich mit dem Open Source-Projekt NHunspell behelfen. Hierfür ist es lediglich notwendig an trennbaren Stellen eines Wortes das bedingte Trennzeichen Chr$(173)
einzufügen. Dies kann über das Ereignis AutoDefineField
vorgenommen werden.
Ab Version 25 kann dies in genau der gleichen Weise auch im ProcessText
-Ereignis gemacht werden. Dann werden auch vom Benutzer eingegebene statische Texte erfasst und können silbengetrennt werden.
Fügen Sie Ihrem Projekt zunächst eine Abhängigkeit zum NuGet-Paket “NHunspell” hinzu (Lizenzbedingungen beachten!).
Beispielcode C#:
using NHunspell;
// hier kann z.B. ein Trennungswörterbuch von OpenOffice verwendet werden
Hyphen hyphen = new Hyphen(@"...\hyph_en_US.dic");
ListLabel LL = new ListLabel()
LL.AutoDefineField += new AutoDefineElementHandler(LL_AutoDefineField);
void LL_AutoDefineField(object sender, AutoDefineElementEventArgs element)
{
string word = element.Value.ToString();
if ((word != "System.Byte[]") && !string.IsNullOrEmpty(word))
{
HyphenResult hyphenated = hyphen.Hyphenate(word);
// Hunspell ergänzt ein "=" an den Trennstellen, das muss noch angepasst werden
element.Value = hyphenated.HyphenatedWord.Replace('=', (char)173);
}
}
Beispielcode VB.NET:
Imports NHunspell
Using LL As New ListLabel()
Using hyphen As New Hyphen("...\hyph_en_US.dic")
LL.AutoDefineField += New AutoDefineElementHandler(AddressOf LL_AutoDefineField)
Private Sub LL_AutoDefineField(sender As Object, element As AutoDefineElementEventArgs)
Dim word As String = element.Value.ToString()
If (word <> "System.Byte[]") AndAlso Not String.IsNullOrEmpty(word) Then
Dim hyphenated As HyphenResult = hyphen.Hyphenate(word)
element.Value = hyphenated.HyphenatedWord.Replace("="C, CChar(173))
End If
End Sub
Links:
https://hunspell.github.io/https://www.nuget.org/packages/NHunspell/
IDKBTD000878 KBTD000878