Die Community zu .NET und Classic VB.
Menü

VB 5/6-Tipp 0473: Farbigen Text in RichTextBox einfügen

 von 

Beschreibung 

Einer der Vorteile gegenüber der normalen Textbox ist es, daß die RichTextBox freie Textformatierungen erlaubt. Dazu gehört natürlich auch eine Textfarbe. Hier wird eine einfache Routine vorgestellt, wie man farbigen Text an die aktuelle Cursorposition einfügt.

Ergänzung am 15. Oktober 2002:
Die länge des Textes wir am Anfang einmal gespeichert, das erspart rechenzeit, da es schneller ist, als überall len(strText) auszufürhen

Schwierigkeitsgrad:

Schwierigkeitsgrad 1

Verwendete API-Aufrufe:

keine

Download:

Download des Beispielprojektes [2,46 KB]

'Dieser Quellcode stammt von http://www.activevb.de
'und kann frei verwendet werden. Für eventuelle Schäden
'wird nicht gehaftet.

'Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum.
'Ansonsten viel Spaß und Erfolg mit diesem Source!

'------------- Anfang Projektdatei Projekt1.vbp -------------
' Die Komponente 'Microsoft Rich Textbox Control 6.0 (RICHTX32.OCX)' wird benötigt.

'--------- Anfang Formular "Form1" alias Form1.frm  ---------
' Steuerelement: Schaltfläche "Command4"
' Steuerelement: Schaltfläche "Command3"
' Steuerelement: Schaltfläche "Command2"
' Steuerelement: Schaltfläche "Command1"
' Steuerelement: Textfeld "Text1"
' Steuerelement: RichTextBox "RichTextBox1"
Option Explicit
'Copyright by Florian Rittmeier '01 & '02 @ ActiveVB.de

Private Sub AddText(ByRef RTFBox As RichTextBox, ByVal strText As String, ByVal tColor As Long)
    Dim lngLength As Long
    Dim lngSelStart As Long
    Dim lngTLength As Long
    
    lngLength = Len(strText)
    
    'Ergänzung am 15. Oktober 2002:
    'Die länge des Textes wir am Anfang einmal gespeichert,
    'das erspart rechenzeit, da es schneller ist, als überall
    'len(strText) auszufürhen
    lngTLength = Len(strText)
    
    lngSelStart = RTFBox.SelStart 'Cursorposition merken
    RTFBox.SelLength = 0 'Nichts markieren
    RTFBox.SelText = strText 'Den Text einfügen
    RTFBox.SelStart = lngSelStart 'Cursorposition zurückstellen
    RTFBox.SelLength = lngTLength 'Den eingefügten Text markieren
    RTFBox.SelColor = tColor 'Farbe setzen
    RTFBox.SelLength = 0 'Nichts markieren
    RTFBox.SelStart = lngSelStart + lngTLength   'Cursor ans Ende des _
                                                 'eingefügten Textes setzen
End Sub

Private Sub Command1_Click()
    AddText RichTextBox1, Text1.Text, vbBlack
End Sub

Private Sub Command2_Click()
    AddText RichTextBox1, Text1.Text, vbRed
End Sub

Private Sub Command3_Click()
    AddText RichTextBox1, Text1.Text, vbGreen
End Sub

Private Sub Command4_Click()
    AddText RichTextBox1, Text1.Text, vbBlue
End Sub

'---------- Ende Formular "Form1" alias Form1.frm  ----------
'-------------- Ende Projektdatei Projekt1.vbp --------------

Tipp-Kompatibilität:

Windows/VB-VersionWin32sWin95Win98WinMEWinNT4Win2000WinXP
VB4
VB5
VB6

Hat dieser Tipp auf Ihrem Betriebsystem und mit Ihrer VB-Version funktioniert?

Ja, funktioniert!

Nein, funktioniert nicht bei mir!

VB-Version:

Windows-Version:

Ihre Meinung  

Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.

Archivierte Nutzerkommentare 

Klicken Sie diesen Text an, wenn Sie die 6 archivierten Kommentare ansehen möchten.
Diese stammen noch von der Zeit, als es noch keine direkte Forenunterstützung für Fragen und Kommentare zu einzelnen Artikeln gab.
Aus Gründen der Vollständigkeit können Sie sich die ausgeblendeten Kommentare zu diesem Artikel aber gerne weiterhin ansehen.

Kommentar von Semml am 05.03.2009 um 21:31

Hi !

Bekomme folgende fehlermeldung: "SelStart" ist kein Member von "System.Windows.Forms.Rich TextBox".

mfg

Semml

Kommentar von Tim Hartig am 23.04.2008 um 01:44

Bei mir kann er nichts mit der TextBox-Eigenschaft "SelColor"
anfangen. also hier so RTFBox.SelColor heißts, "Benutzerdefinierter Typ nicht definiert!"

HILFE !! :/

Kommentar von Gebhard am 25.02.2003 um 15:36

Hat prima funktioniert.
Kann man auf diese Weise auch die Background color setzen?

Kommentar von Marco Stielow am 25.01.2003 um 11:49

Wie kann ich die Hintergrundfarbe eines bestimmten Bereiches (nicht der gesamten RT-Box) setzem?

Kommentar von Tobi am 23.10.2002 um 10:02

Bekomm dauernd die Fehlermeldung "Variable nicht definiert".

Kommentar von Ausbrecher am 15.05.2002 um 17:29

Wie mache ich das aber jetzt, das wenn ich direkt in die RTB einen text eingebe, das dieser dann sich rot färbt. es darf sich aber nur bei speziellen wörtern rot färben, ansonsten soll er schwarz sein
(Wie bei VB wenn ich 'public' eingebe, das färbt sich ja auch blau)
ich hoffe ihr könnt mir weisterhelfen