ABOUT Visual Basic Programmieren Programmierung Download Downloads Tips & Tricks Tipps & Tricks Know-How Praxis VB VBA Visual Basic for Applications VBS VBScript Scripting Windows ActiveX COM OLE API ComputerPC Microsoft Office Microsoft Office 97 Office 2000 Access Word Winword Excel Outlook Addins ASP Active Server Pages COMAddIns ActiveX-Controls OCX UserControl UserDocument Komponenten DLL EXE
Diese Seite wurde zuletzt aktualisiert am 15.02.2000

Diese Seite wurde zuletzt aktualisiert am 15.02.2000
Aktuell im ABOUT Visual Basic-MagazinGrundlagenwissen und TechnologienKnow How, Tipps und Tricks rund um Visual BasicActiveX-Komponenten, Controls, Klassen und mehr...AddIns für die Visual Basic-IDE und die VBA-IDEVBA-Programmierung in MS-Office und anderen AnwendungenScripting-Praxis für den Windows Scripting Host und das Scripting-ControlTools, Komponenten und Dienstleistungen des MarktesRessourcen für Programmierer (Bücher, Job-Börse)Dies&Das...

Themen und Stichwörter im ABOUT Visual Basic-Magazin
Code, Beispiele, Komponenten, Tools im Überblick, Shareware, Freeware
Ihre Service-Seite, Termine, Job-Börse
Melden Sie sich an, um in den vollen Genuss des ABOUT Visual Basic-Magazins zu kommen!
Informationen zum ABOUT Visual Basic-Magazin, Kontakt und Impressum

Zurück...

Rettet die Schreibmarke!

Zurück...


Anzeige

(-hg) mailto:hg_textboxaddtext@aboutvb.de

Es ist keine große Sache, Text in eine TextBox (oder auch eine RichTextBox) bereits vorhandenem Text hinzuzufügen. In ersterem Fall erfolgt die Einfügung an der Position der Schreibmarke (Wert der Eigenschaft MSDN Library - VB SelStart, SelLength, SelTextSelStart). Ist bereits Text markiert (Wert der Eigenschaft MSDN Library - VB SelStart, SelLength, SelTextSelLength > 0), wird dieser ersetzt, wenn Sie den Text der Eigenschaft MSDN Library - VB SelStart, SelLength, SelTextSelText zuweisen. Ist kein Text markiert, wird der Text an der Position der Schreibmarke eingefügt. Wenn Sie den neuen Text an den bereits vorhandenen Text anhängen wollen, ist es naheliegend, diesen der Text-Eigenschaft hinzufügen. Bei einzeiligen TextBoxen oder bei mehrzeiligen TextBoxen, die nur wenig Text enthalten, ist das sicher der einfachste Weg. Bei TextBoxen oder RichTextBoxen, die schon sehr viel Text enthalten, kostet dies jedoch Zeit, da dazu der gesamte Textinhalt intern hin und her kopiert werden muss.

Unter Ausnutzung der Steuerelement-eigenen Optimierung geht das schneller vonstatten, wenn Sie statt dessen die Schreibmarke ans Textende setzen und den anzuhängenden Text der Eigenschaft SelText zuweisen. Dabei gehen jedoch die vorherige Position der Schreibmarke und auch die vorherige Markierung verloren. Sie können diese natürlich vor dem Einfügen oder Anhängen in Variablen sichern und danach wieder zuweisen.

Die Hilfs-Prozedur TextBoxAddText (bzw. RichTextBoxAddText) bietet Ihnen die Möglichkeit, Text an beliebiger Stelle einzufügen oder ihn anzuhängen, danach die Schreibmarke auf vorher gewählte Positionen zu setzen und die Länge der anschließenden Markierung zu steuern.

Sie übergeben der Prozedur in den ersten beiden Parametern das Text-Steuerelement und den einzufügenden bzw. anzuhängenden Text-String. Im optionalen dritten Parameter legen Sie anhand von enumerierten Konstantwerten fest, an welcher Stelle sich die Schreibmarke anschließend befinden und wie lang die Markierung sein soll.

Voreingestellt ist der Wert tbaSelectAddText. Hierbei wird die Schreibmarke an den Beginn des eingefügtes oder angehängten Texts gesetzt und dieser markiert. Bei tbaScrollToEndOfAddText wir die Schreibmarke ans Ende des eingefügten oder angehängten Texts (im letzteren Fall also ans Ende des gesamten Inhalts) gesetzt, jedoch kein Text markiert. Der Wert tbaRestoreSelStart sorgt dafür, dass die Schreibmarke an der ursprünglichen Position stehen bleibt. Und tbaRestoreSelection sorgt darüber hinaus sogar dafür, dass die alte Markierung wieder hergestellt wird.

Im letzten, ebenfalls optionalen Parameter SelStart geben Sie an, an welcher Stelle der Text eingefügt werden soll. Entweder übergeben Sie hier die aktuelle Position der Schreibmarke (Eigenschaft SelStart der TextBox). Oder Sie geben nichts an bzw. Sie übernehmen die Voreinstellung - dann wird der Text ans Ende des Inhalts angehängt.

Die Prozeduren TextBoxAddText und RichTextBoxAddText sind im Inneren identisch - sie unterscheiden sich lediglich im Objekt-Datentyp des im ersten Parameter übergebenen Steuerelements. Wenn Sie statt dieser beiden spezialisierten Prozeduren lieber eine allgemeine für beide Steuerelement-Typen hätten, ändern Sie einfach den Datentyp in Object.

Public Enum tbaSelModeConstants
  tbaScrollToEndOfAddText
  tbaSelectAddText
  tbaRestoreSelStart
  tbaRestoreSelection
End Enum

Public Sub TextBoxAddText(TextBox As TextBox, _
 AddText As String, _
 Optional ByVal SelMode As tbaSelModeConstants = tbaSelectAddText, _
 Optional ByVal SelStart = -1)

  Dim nSelStart As Long
  Dim nSelLength As Long
  Dim nInsertSelStart As Long
  
  With TextBox
    nSelStart = .SelStart
    nSelLength = .SelLength
    If SelStart = -1 Then
      nInsertSelStart = Len(.Text)
    Else
      nInsertSelStart = SelStart
    End If
    .SelStart = nInsertSelStart
    .SelText = AddText
    Select Case SelMode
      Case tbaScrollToEndOfAddText
        .SelStart = nInsertSelStart + Len(AddText)
        .SelLength = 0
      Case tbaSelectAddText
        .SelStart = nInsertSelStart
        .SelLength = Len(AddText)
      Case tbaRestoreSelStart
        .SelStart = nSelStart
        .SelLength = 0
      Case tbaRestoreSelection
        .SelStart = nSelStart
        .SelLength = nSelLength
    End Select
  End With
End Sub

Die Hilfs-Prozedur TextBoxAddText für Text an beliebiger Stelle in eine TextBox ein oder hängt Text an und kontrolliert die Position der Schreibmarke und der Markierung

Public Sub RichTextBoxAddText(TextBox As RichTextBox, _
 AddText As String, _
 Optional ByVal SelMode As tbaSelModeConstants = tbaSelectAddText, _
 Optional ByVal SelStart = -1)

  Dim nSelStart As Long
  Dim nSelLength As Long
  Dim nInsertSelStart As Long
  
  With TextBox
    nSelStart = .SelStart
    nSelLength = .SelLength
    If SelStart = -1 Then
      nInsertSelStart = Len(.Text)
    Else
      nInsertSelStart = SelStart
    End If
    .SelStart = nInsertSelStart
    .SelText = AddText
    Select Case SelMode
      Case tbaScrollToEndOfAddText
        .SelStart = nInsertSelStart + Len(AddText)
        .SelLength = 0
      Case tbaSelectAddText
        .SelStart = nInsertSelStart
        .SelLength = Len(AddText)
      Case tbaRestoreSelStart
        .SelStart = nSelStart
        .SelLength = 0
      Case tbaRestoreSelection
        .SelStart = nSelStart
        .SelLength = nSelLength
    End Select
  End With
End Sub

Die Hilfs-Prozedur TextBoxAddText für Text an beliebiger Stelle in eine RichTextBox ein oder hängt Text an und kontrolliert die Position der Schreibmarke und der Markierung


Beispiel-Projekt TextBoxAddText (textboxaddtext.zip - ca. 3 KB)


Artikel
Zum Download-Bereich dieses Artikel
Mail an den Autor dieses Artikel

KnowHow
Zur KnowHow-Übersicht

KnowHow-Themen
Themen - Allgemeines
Themen - Entwicklungsumgebung (VB-IDE)
Themen - Forms
Themen - Steuerelemente (Controls)
Themen - Grafik
Themen - Dateien
Themen - UserControls
Themen - Einsteiger-Tipps
Themen - Wussten Sie...?

Übersicht nach Titeln in alphabetischer Reihenfolge
Übersicht nach Erscheinungsdatum

Schnellsuche



Zum Seitenanfang

Copyright © 1999 - 2017 Harald M. Genauck, ip-pro gmbh  /  Impressum

Zum Seitenanfang

Zurück...

Zurück...

Download Internet Explorer