Es werden folgende Libraries zusätzlich benötigt: RichString, Reflection, StringUtils, Clipboard (optional). Mit RtfLabel kann Text formatiert und scrollbar angezeigt werden.
Allgemein
Events
Members - Überblick
Members - Erklärungen
Siehe auch:
Textformatierung / Hyperlinks / Anker
Absatzformatierung
Textformatierung:
Fett, kursiv, farbig, kleinere Schriftgröße, Hyperlinks, Anker
Absatzformatierung:
Texteinzug links / rechts, Erstzeileneinzug, Aufzählungszeichen, Zentrierung, Schriftgröße, farbiger Hintergrund, Bilder zentriert oder mit Fließtext
Textauswahl durch Benutzer:
Wenn die Funktion bereitgestellt wird (RtfLabel1.MarkFunction = True) kann der Benutzer Text markieren (automatisch wortweise) und kopieren.
Um die Markierung über den sichtbaren Bereich hinaus zu erweitern, muss die Markierung über der obersten bzw. untersten Zeile gehalten werden - der Text wird dann automatisch gescrollt.
RtfLabel ist ein "Activity Object", und darf nicht in Sub Process_Globals deklariert werden. Die Textformatierung geschieht über Formatierungszeichen, die in geschweiften Klammern {...} stehen und sonst im Text nicht vorkommen dürfen. RtfLabel hat eine Funktion zur Überprüfung des Textes auf Formatierungsfehler. Fehlerhafte Absätze werden im Label selbst mit entsprechenden Hinweisen angezeigt (für die Entwicklungszeit gedacht):
RtfLabel1.Text = "Das {i}ist{i} ein {b}Text{b} mit {h/MeinLink}Hyperlink{h}! " | RtfLabel1.Text = "Das {i}ist{i} ein {b}Text mit Fehler in der Formatierung! " | |
Textanzeige ohne Fehlerüberprüfung: RtfLabel1.TextShow(False) |
Textanzeige mit Fehlerüberprüfung: RtfLabel1.TextShow(True) |
|
![]() |
![]() |
|
(Formatierungszeichen {b} nicht paarweise vorhanden) |
LinkClick(LinkEventText As String)
Wird ausgelöst, wenn der Benutzer einen Hyperlink betätigt - übergeben wird der im Anzeigetext unsichtbare EventText.
Sub RtfLabel1_LinkClick(LinkEventText As String) Log("LinkClick: " & LinkEventText) End Sub |
PageUpDownAvailable(PageUp As Boolean, PageDown As Boolean)
Wird ausgelöst, wenn sich die Verfügbarkeit der Funktionen PageUp und PageDown (Seite hoch / runter bei scrollbarem Text) geändert hat.
Sub RtfLabel1_PageUpDownAvailable(PageUp As Boolean, PageDown As Boolean) 'z.B. Steuerung zweier Button für die Funktionen PageUp und PageDown: ButtonUp.Enabled = PageUp ButtonDown.Enabled = PageDown End Sub |
Die folgenden zwei Events können z.B. zur Steuerung eines ToggleButton "ButtonMark" verwendet werden, mit dem der Benutzer die Markierfunktion ein- und ausschalten kann:
Sub ButtonMark_CheckedChange(Checked As Boolean) If Checked = True Then If RtfLabel1.AvailableMarkOn = True Then RtfLabel1.MarkOn Else ButtonMark.Checked = False End If Else RtfLabel1.MarkOff End If End Sub |
MarkOff()
Wird ausgelöst, wenn der Markiermodus von RtfLabel intern ausgeschaltet wurde.
Sub RtfLabel1_MarkOff() If ButtonMark.Checked = True Then ButtonMark.Checked = False End Sub |
MarkOnAvailable(MarkOn As Boolean)
Wird ausgelöst, wenn sich die Verfügbarkeit der Funktion geändert hat
Sub RtfLabel1_MarkOnAvailable(MarkOn As Boolean) ButtonMark.Enabled = MarkOn End Sub |
MarkComplete(MarkText As String)
Wird ausgelöst, wenn der Benutzer Text markiert hat - übergeben wird der markierte Text, ohne Formatierungszeichen
Sub RtfLabel1_MarkComplete(MarkText As String) 'z.B. automatisch kopieren: (Clipboard-Library notwendig!) Clipboard.setText(MarkText) 'z.B. Hinweis einblenden: ToastMessageShow("Text wurde in die Zwischenablage kopiert", False) End Sub |
Nach dem Ändern der mit (*) gekennzeichneten Eigenschaften, muss am Ende "TextShow" erneut aufgerufen werden, falls schon Text angezeigt wird!
Initialisierung / Position / Größe:
Initialize(CallbackModule As Object, EventName As String, Parent As Object, Left As Int, Top As Int, Width As Int, Height As Int) As Boolean
IsInitialized As Boolean
SetLayout(Left As Int, Top As Int, Width As Int, Height As Int) As Boolean (*)
Left As Int
Top As Int
Width As Int (*)
Height As Int
TextHeight As Int [read only]
BringToFront As Boolean
SendToBack As Boolean
RemoveView As Boolean
Aussehen:
Color As Int [write only]
BackGround As Object
SetBackgroundImage(Bitmap As Bitmap) As Boolean
TextBorder As Int [write only] (*)
Visible As Boolean
Scrollen:
AvailablePageDown As Boolean [read only]
AvailablePageUp As Boolean [read only]
GoToAnchor(Anchor As String) As Boolean
GoToFirstRow As Boolean
GoToLastRow As Boolean
PageDown As Boolean
PageUp As Boolean
TextPositionTop As Object
Textanzeige:
Text As String [write only]
TextShow(CheckBefore As Boolean) As Boolean
TextClear As Boolean
Textformatierung: (*)
SetTextColors(ColorId As Int, Color As Int) As Boolean
TextColor As Int [write only]
TextSize As Float [write only]
TextSizeSmall As Float [write only]
Typeface As Typeface [write only]
Absatzformatierung: (*)
IndentWidth As String [write only]
SetFrameColors(ColorId As Int, Color As Int) As Boolean
Bilder: (*)
SetImages(Name As String, Image As Bitmap) As Boolean
ClearImages As Boolean
ImagesBorder As Int [write only]
Markierfunktion:
MarkFunction As Boolean [write only] (*)
AvailableMarkOn As Boolean [read only]
MarkOn As Boolean
MarkOff As Boolean
MarkColor As Int [write only] (*)
Hyperlinks: (*)
LinkFormat As Int [write only]
LinkPressedColor As Int [write only]
LinkPressedCornerRadius As Int [write only]
LinkTextColor As Int [write only]
Sonstiges:
Enabled As Boolean
Tag As Object
Initialisierung / Position / Größe:
Initialize(CallbackModule As Object, EventName As String, Parent As Object, Left As Int, Top As Int, Width As Int, Height As Int) As Boolean
Initialisiert das Label und fügt es zur Activity hinzu.
EventName: Name für die Ereignis-Subs - z.B. "RtfLabel1": RtfLabel1_LinkClick(LinkEvenText As String) | |
Parent: Activity oder Panel | |
Left, Top, Width, Height: Position und Größe | |
Beispiel - Parent ist die Activity: | |
RtfLabel1.Initialize(Me, "RtfLabel1", Activity, 0, 0, 100%x, 80%y) | |
Beispiel - Parent ist ein Panel: | |
RtfLabel1.Initialize(Me, "RtfLabel1", Panel1, 0, 0, 100%x, 100%y) |
IsInitialized As Boolean
(Wie beim Standard-Label)
SetLayout(Left As Int, Top As Int, Width As Int, Height As Int) As Boolean
Legt die Position und die Größe für das Label neu fest (wie beim Standard-Label).
RtfLabel1.SetLayout(0, 0, 100%x, 50%y) |
Left As Int
Holt oder setzt die linke Position des Labels (wie beim Standard-Label).
Top As Int
Holt oder setzt die obere Position des Labels (wie beim Standard-Label).
Width As Int
Holt oder setzt die Breite des Labels (wie beim Standard-Label).
Height As Int
Holt oder setzt die Höhe des Labels (wie beim Standard-Label).
TextHeight As Int [read only]
Gibt die Gesamthöhe des Anzeigetextes zurück - damit kann z.B. eine Auto-Size-Funktion realisiert werden:
RtfLabel1.SetLayout(0, 0, 50%x, 10dip) ' RtfLabel z.B. halb so breit wie das Display RtfLabel1.Text = "Das {b}ist{b} ein Text mit {h/Link1}Hyperlink{h}!" RtfLabel1.TextShow(False) RtfLabel1.Height = RtfLabel1.TextHeight 'das Label ist nun so hoch, wie der (ggf. mehrzeilige) Text |
BringToFront As Boolean
Ändert die Z-Reihenfolge und bringt das Label in den Vordergrund (wie beim Standard-Label).
SendToBack As Boolean
Ändert die Z-Reihenfolge und bringt das Label in den Hintergrund (wie beim Standard-Label).
RemoveView As Boolean
Entfernt das Label von seiner Elternview - also von der Activity oder einem Panel (wie beim Standard-Label).
Aussehen:
Color As Int [write only]
Setzt die Hintergrundfarbe (wie beim Standard-Label).
BackGround As Object
Holt oder setzt die Hintergrund-Zeichenfläche (wie beim Standard-Label).
SetBackgroundImage(Bitmap As Bitmap) As Boolean
Setzt das Hintergrundbild für das Label (wie beim Standard-Label).
TextBorder As Int [write only]
Setzt den linken und rechten Rand zwischen Label und Anzeigetext (Wert 0 bis 12dip - default 2dip).
RtfLabel1.TextBorder = 0 'kein Rand: | |
![]() |
|
RtfLabel1.TextBorder = 10dip 'Rand links 10dip / Rand rechts 10dip:: | |
![]() |
Visible As Boolean
Holt oder setzt die Sichtbarkeit des Labels (wie beim Standard-Label).
Scrollen:
AvailablePageDown As Boolean [read only]
Gibt die Verfügbarkeit der Funktion "PageDown" zurück.
AvailablePageUp As Boolean [read only]
Gibt die Verfügbarkeit der Funktion "PageUp" zurück.
Wenn RtfLabel in der Sub Activity_Create eingerichtet wird, dann werden die Events PageUpDownAvailable und MarkOnAvailable noch nicht empfangen - deshalb diese ergänzenden Eigenschaften (siehe die Verwendung im Example in der Sub Activity_Create).
GoToAnchor(Anchor As String) As Boolean
Bringt die Textstelle mit dem Anker in den sichtbaren Bereich.
RtfLabel1.Text = "... {a/paragraph3}§3 - Hier folgt der Text zu Paragraph 3 ... | |
RtfLabel1.GoToAnchor("paragraph3") |
GoToFirstRow As Boolean
Scrollt den Text ganz nach oben.
GoToLastRow As Boolean
Scrollt den Text ganz nach unten.
PageDown As Boolean
Scrollt den Text eine Seite nach unten (Seite = die Labelhöhe minus abgeblendeter Rand oben/unten).
PageUp As Boolean
Scrollt den Text eine Seite nach oben.
TextPositionTop As Object
Gibt die Daten zur Textposition des ersten Zeichens der ersten voll sichtbaren Zeile zurück oder bringt die Zeile mit der Textposition in den sichtbaren Bereich (siehe im Example die Variable "Restore").
Dim Pos As Object Pos = RtfLabel1.TextPositionTop 'Position sichern |
|
'nach Neuanzeige des Textes z.B. wegen Änderung der Eigenschaften / Orientation: | |
RtfLabel1.TextPositionTop = Pos 'bringt die Textstelle wieder in den sichtbaren Bereich |
Textanzeige:
Text As String [write only]
Setzt den Text (mit Formatierungszeichen), der im Label angezeigt werden soll.
RtfLabel1.Text = "Das {b}ist{b} ein Text mit {h/Link1}Hyperlink{h}!" |
TextShow(CheckBefore As Boolean) As Boolean
Zeigt den Text im Label an. Wenn CheckBefore = True ist, dann wird der Text vor der Anzeige auf Formatierungsfehler überprüft (siehe Beispiel oben).
RtfLabel1.Text = "Das {b}ist{b} ein Text mit {h/Link1}Hyperlink{h}!" | |
RtfLabel1.TextShow(False) | |
![]() |
|
Werden nach "TextShow" die Eigenschaften geändert, muss die Funktion erneut aufgerufen werden: (siehe Hinweis oben) | |
RtfLabel1.Color = Colors.Black 'die Hintergrundfarbe kann ohne Neuanzeige geändert werden ... | |
RtfLabel1.TextColor = Colors.Yellow '... die Schriftfarbe nicht! | |
RtfLabel1.TextShow(False) | |
![]() |
TextClear As Boolean
Löscht die Textanzeige und den Text. Die Einstellungen und die mit SetTextColors, SetFrameColors und SetImages zugewiesenen Daten bleiben erhalten.
Textformatierung:
SetTextColors(ColorId As Int, Color As Int) As Boolean
Setzt die Schriftfarben für die Textformatierung mit {tc0} bis {tc9} und die Absatzformatierung mit {ptc...}. Es können bis zu 10 Farben definiert werden (ColorId 0 bis 9), falls benötigt. Bei den Formatierungszeichen im Text wird nur der Farb-Index angegeben:
RtfLabel1.TextColor = Colors.Black 'Standard-Schriftfarbe | |
RtfLabel1.SetTextColors(0, Colors.Red) 'Farbe für ColorId 0 | |
RtfLabel1.SetTextColors(1, Colors.Blue) 'Farbe für ColorId 1 | |
'... | |
RtfLabel1.Text = "Das {tc0}Wort{tc0} ist rot, dieses {tc1}{b}blau{b}{tc1}, der Rest ist schwarz. " | |
![]() |
TextColor As Int [write only]
Setzt die Standard-Textfarbe für den Anzeigetext (wie beim Standard-Label).
TextSize As Float [write only]
Setzt die Standard-Schriftgröße für den Anzeigetext - Wert >= 8 (wie beim Standard-Label).
TextSizeSmall As Float [write only]
Setzt die relative Schriftgröße für verkleinert dargestellten Text bei der Textformatierung mit {s}. Der Faktor (Wert 0.5 bis 0.9) bezieht sich auf die Standardschriftgröße bzw. auf die Absatzschriftgröße:
RtfLabel1.TextSize = 20 'Standard-Schriftgröße | |
RtfLabel1.TextSizeSmall = 0.8 'Faktor für kleine Schrift | |
RtfLabel1.Text = "Dieses {s}Wort{s} ist kleiner als der Rest . " 'Schriftgröße: 20 * 0.8 = 16 |
|
![]() |
|
Wurde die Schriftgröße für den Absatz festgelegt, bezieht sich der Faktor auf diese Größe: ({pts = ParagraphTextSize) | |
RtfLabel1.Text = "{pts/1.5}Dieses {s}Wort{s} ist kleiner als der Rest . " 'Schriftgröße: 20 * 1.5 * 0.8 = 24 |
|
![]() |
Typeface As Typeface [write only]
Setzt die Schriftart für den Anzeigetext (wie beim Standard-Label).
Dim MyFont As Typeface | |
MyFont = Typeface.LoadFromAssets("times.ttf") | |
RtfLabel1.Typeface = MyFont |
Absatzformatierung:
IndentWidth As String [write only]
Übergibt den String, der zur Berechnung der Einzugsbreite pro Ebene für die Absatzformatierung verwendet wird. Die etwas ungewöhnliche Art der Angabe zur Einzugsbreite hat den Vorteil, dass die Maße unabhängig von der letztlich verwendeten Schriftart und Schriftgröße immer stimmen.
RtfLabel1.IndentWidth = "XXX" |
SetFrameColors(ColorId As Int, Color As Int) As Boolean
Setzt die Hintergrundfarben für die Absatzformatierung mit Frames. Es können bis zu 10 Farben definiert werden (ColorId 0 bis 9), falls benötigt. Beim Formatierungszeichen im Text wird nur der Farb-Index angegeben:
RtfLabel1.SetFrameColors(0, Colors.Yellow) 'Farbe für ColorId 0 | |
RtfLabel1.SetFrameColors(1, Colors.LightGray) 'Farbe für ColorId 1 | |
'... | |
RtfLabel1.Text = "{pf/Indent:1/RIndent:1/ColorId:1/Border:0.5}{pi/2/0}{pri/2}Das ist ein Text mit Frame, als Gestaltungselement. " | |
![]() |
Bilder:
SetImages(Name As String, Image As Bitmap) As Boolean
Übergibt die Bilder an das Label, die (ggf. mehrfach) im Text angezeigt werden sollen. "Name" muss eine eindeutige Bezeichnung sein (Groß-/Kleinschreibung wird nicht unterschieden - kein Punkt, keine Leerzeichen). Beim Formatierungszeichen PragraphImage kann das Bild direkt als Dateiname angegeben werden, oder es wird aus den mit SetImages vorgeladenen Bildern über den Namen ermittelt und verwendet:
RtfLabel1.SetImages("PfeilL", LoadBitmap(File.DirAssets,"PfeilLinks.bmp")) | |
RtfLabel1.SetImages("PfeilR", LoadBitmap(File.DirAssets,"PfeilRechts.bmp")) | |
RtfLabel1.Text = "{pc}{pimage/PfeilL/22/22}{pimage/PfeilR/22/22}" '{pc} ist die Absatzzentrierung | |
![]() |
ClearImages As Boolean
Löscht alle mit "SetImages" zugewiesenen Bilder.
ImagesBorder As Int [write only]
Setzt den rechten und unteren Rand zwischen Bild und Fließtext bzw. den Abstand zwischen zwei Bildern für die Absatzformatierung. Die Einstellung gilt für alle im Text angezeigten Bilder.
RtfLabel1.ImagesBorder = 6dip | |
RtfLabel1.Text = "{pimage/PfeilL/22/22}{pimage/PfeilR/22/22}Hier folgt der Text zum Bild ..." | |
![]() |
Markierfunktion:
MarkFunction As Boolean [write only]
Legt fest, ob die Funktionalität zur Textmarkierung im Label bereitgestellt wird (MarkFunction = False beschleunigt die Textanzeige).
AvailableMarkOn As Boolean [read only]
Gibt die Verfügbarkeit der Funktion "MarkOn" zurück.
MarkOn As Boolean
Schaltet den Markiermodus ein - der Benutzer kann Text markieren. Die Funktion ist nur verfügbar, wenn MarkFunction = True.
MarkOff As Boolean
Schaltet den Markiermodus aus. Die Funktion ist nur verfügbar, wenn MarkFunction = True.
MarkColor As Int [write only]
Setzt die Farbe, mit der der vom Benutzer markierte Text unterlegt wird.
Hyperlinks:
LinkFormat As Int [write only]
Setzt die für alle Hyperlinks geltende Formatierung: 1 = unterstrichen | 2 = farbig | 3 = unterstrichen und farbig
RtfLabel1.LinkFormat = 1 RtfLabel1.Text = "Das {b}ist{b} ein Text mit {h/MeinLink1}Hyperlink{h}. " |
|
![]() |
|
RtfLabel1.LinkTextColor = Colors.Blue RtfLabel1.LinkFormat = 2 |
|
![]() |
|
RtfLabel1.LinkTextColor = Colors.Blue RtfLabel1.LinkFormat = 3 |
|
![]() |
LinkPressedColor As Int [write only]
Setzt die Farbe für die Hyperlinks für den gedrückten Zustand.
RtfLabel1.LinkPressedColor = Colors.Cyan RtfLabel1.Text = "Das {b}ist{b} ein Text mit {h/MeinLink1}Hyperlink{h}. " |
|
![]() |
LinkPressedCornerRadius As Int [write only]
Setzt den Radius für LinkPressedColor mit abgerundeten Ecken (0 = keine).
RtfLabel1.LinkPressedColor = Colors.Cyan RtfLabel1.LinkPressedCornerRadius = 5 RtfLabel1.Text = "Das {b}ist{b} ein Text mit {h/MeinLink1}Hyperlink{h}. " |
|
![]() |
LinkTextColor As Int [write only]
Setzt die Textfarbe für die Hyperlinks bei LinkFormat = 2 oder 3.
Sonstiges:
Enabled As Boolean
Sperrt das Label für Benutzeraktionen (Text scrollen, markieren) oder gibt es dafür frei.
Tag As Object
Holt oder setzt den Tag-Wert. Tag ist ein "Platzhalter" der für zusätzliche Informationen benutzt werden kann (wie beim Standard-Label).