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 SelStart).
Ist bereits Text markiert (Wert der Eigenschaft SelLength
> 0), wird dieser ersetzt, wenn Sie den Text der Eigenschaft SelText
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

|

|