User Tools

Site Tools


k16:k16.14:start

16.14.0 TextArea

The class TextArea (gb. qt4) implements a multiline text field.

WT

Figure 16.14.0.1: Value table in a TextArea

16.14.0.1 Properties

Selected properties of the TextArea class are described in the following table:

PropertyTypeDescription
AlignmentIntegerReturns or sets the text alignment. The following constants can be used: Align.Normal (0), Align.Left (1), Align.Right (2) or Align.Center (3).
BackgroundIntegerSets the background color or reads the color value.
ForegroundIntegerSets the text color or reads the current text color.
FontFontSets the text font or reads the current text font.
ColumnIntegerReturns the text column in the current text line or sets the defined text column.
LineIntegerReturns the current text line or sets the defined text line.
PosIntegerReturns the current cursor position or sets the cursor to the defined position in the text. If the text was saved in UTF-8, you must use the string class to convert the position to the byte index in the string.
DropBooleanDetermines or specifies whether the TextArea accepts the insertion of text by drag & drop.
LengthIntegerReturns the length of the text as the number of characters in the text.
ReadOnlyBooleanDetermines or determines whether the user can change the text.
SelectedBooleanReturns True if text is selected.
TextStringReturns or sets the text displayed in the TextArea.
WrapBooleanDetermines or determines whether the text is wrapped depending on the width of the TextArea. There is no hyphenation!

Table 16.14.0.1.1.1: Overview of selected properties of the TextArea class (gb. qt4)

Hints:

  • The properties Pos, Column and Line are easier to access if you imagine the text in a TextArea as a character string into which “\n” or gb. NewLine end-of-line characters (EOL) have been inserted.
  • The Column property is a relative size and always refers to the current text line! If you see the Column property as a cursor position in a text line, you are right.
  • The counting of rows, columns and the cursor position starts at 0.

Only the two properties Foreground and Font are available for marking the text in a TextArea. They always apply globally for the entire TextArea!

  txaArea.Foreground = Color.RGB(0, 0, 0) ' Font color black
  txaArea.Font = Font["Monospace, 10"]    ' calligraphic font
' Zur Kontrolle:
' Print txaArea.Font.ToString()

The overview of the selected methods of the TextArea class contains three methods for reciprocal conversion of values of the properties Pos, Column and Line.

  Print "Zeile = "; txaTest.ToLine(91)
  Print "Spalte = "; txaTest.ToColumn(91)
  Print "Cursor-Position = "; txaTest.ToPos(1, 30)

The property TextArea. ReadOnly = True is used if text is only to be displayed and manual text changes in the text field are not allowed. Examples: Help texts, display of measured values, console outputs or similar…

16.14.0.2 Methods

A description of selected methods of the class TextArea can be found here:

MethodDescription
ClearDeletes the entire text.
CopyThe selected text is copied to the ClipBoard.
CutThe selected text is cut out and inserted into the ClipBoard.
PasteInserts the (text) content of the ClipBoard at the cursor position.
Insert (text As String)Inserts the specified text from the current cursor position into the TextArea.
Select ([ Start As Integer, Length As Integer])Marks text from cursor position Start in the length of Length.“ Start is the position of the first selected character in the text.” Length is the length of the text to be selected. If no argument is specified, the entire text is selected.
SelectAllSelects the entire text.
UnselectResets the selection of the text.
ToColumn (Pos As Integer) As IntegerConverts a cursor position to a column number in a text line? method ToLine (..).
ToLine (Pos As Integer) As IntegerConverts a cursor position into a line number.
ToPos (Line As Integer, Column As Integer) As IntegerConverts a combination of text line number and text column number (in this text line!) into a cursor position.
UndoReverses the last action.
RedoResets the last undone action.

Table 16.14.0.2.1: Selected methods of the TextArea class (gb. qt4)

Hint:

  • You will find interesting information about the methods Copy(), Cut() and Paste() in the chapters 20.4.0' Clipboard' and 20.4.1' Project 1 - Demonstration program Clipboard Text'.

16.14.0.3 Events

These two events are particularly important for the practical work with a TextArea:

EventDescription
ChangeIs triggered when the text has been changed.
CursorThe event is triggered when the cursor position has changed.

Table 16.14.0.3.1: Overview of selected events of the TextArea class (gb. qt4)

Hints:

Note that changing the text does not necessarily change the cursor position, but the example Gambas program Notepad (text editor) implements the above mentioned properties, methods and events very well, so that it will be worthwhile for you to test this example intensively in any case.

16.14.0.4 Context menu

The context menu of a TextArea, together with the short cuts - even without menus and toolbars - guarantees a fast working with texts:

KM

Figure 16.14.0.4.1: Context menu

16.14.0.5 Inserting text

You can insert text into a TextArea at any cursor position in several ways:

  1. Text input via keyboard
  2. Insert text from the ClipBoard → context menu
  3. Insert text via drag&drop from other suitable (text) sources
  4. Import the content of a text file (text import)
  5. Modify the TextArea.Text text property
  6. Use the TextArea. insert (“text”) method

Inserting Text Using Drag&Drop

Inserting text using drag & drop was successfully tested in the editors 'gedit', 'bluefish' and in the Internet browser 'firefox'. The selected text in the source is dragged over the text field while holding the mouse button down. Then the mouse button is released and the selected text is located in the TextArea and can be edited there.

Text import from a text file

Minisini said on this topic in a forum that you can only enter UTF-8 strings in a TextArea and emphasized: “If another character set works…, then the benevolence of QT or coincidence.

With this section of source code you are always on the right page:

[1]   ...
[2]   Dim sMimeTypeCharSet, sCharSet, sMime As String 
[3]   Dim sFilePath As String
[4] 
[5]   Dialog.Title = "Wählen Sie eine Text-Datei aus!"
[6]   Dialog.Filter = ["*.ini", "INI-Dateien", "*.txt", "Text-Dateien", "*", "Alle Dateien"]
[7]   Dialog.Path = "/etc/odbcinst.ini"
[8]   If Dialog.OpenFile() Then Return
[9]   sFilePath = Dialog.Path
[10]   
[11]   Exec ["file", "-bi", sFilePath] To sMimeTypeCharSet ' Ermittlung MimeTyp und Zeichensatz 
[12]   Wait
[13]   Print sMimeTypeCharSet
[14]   sMime = Split(sMimeTypeCharSet, ";")[0]
[15]   Print "Mime-Typ = "; Trim(sMime)  
[16]   sCharSet = Trim(Split(Split(sMimeTypeCharSet, ";")[1], "=")[1])
[17]   Print "CharSet  = "; Trim(sCharSet)
[18]   
[19]   If sCharSet <> "utf-8" Then
[20]      Try txaArea.Text = Conv(File.Load(sFilePath), sCharSet, "UTF-8")
[21]    ' Try txaArea.Insert(Conv(File.Load(sFilePath), sCharSet, "UTF-8"))
[22]   Else
[23]      txaArea.Text = File.Load(sFilePath) 
[24]    ' txaArea.Insert(File.Load(sFilePath))
[25]   Endif
[26]   
[27]   txaArea.Pos = 0
[28]   ...

Comment:

  • The text file to be imported is selected in lines 5-9 of a dialog.
  • In line 11 the combined MimeType character set value of the imported text file is read and stored in the variable sMimeTypeCharSet.
  • Line 16 extracts the character set needed in line 20 to convert the character set - if necessary.
  • Attention: The imported text in line 20 or 23 may replace the already existing text.
  • However, the imported text is appended to the end of the text by default if you use lines 21 or 24.
  • The blue highlighted lines are for control purposes only and can be commented out.

The configuration file odbcinst. ini provided the following combined value from mime type and character set:

text/plain; charset=us-ascii

The character set of the file was therefore converted to UTF-8 according to the requirement in line 19. This was not necessary in the case of us-ascii because ASCII is included in UTF-8.

Text changes using the Text Property and the Insert(..) method

In this section, on the one hand, text is inserted into a TextArea, in which a change of the property TextArea.Text = text string the old text is completely overwritten by the new text and on the other hand, it is shown how to add text at the current text cursor position:

TextArea.Text = "Ich bin der neue Text!"
TextArea.Text = TextArea.Text & "Ich bin weiterer Text!"
TextArea.Text &= "Ich bin weiterer Text!"
TextArea.Text &= gb.NewLine ' erzwingt einen Zeilenwechsel
TextArea.Text &= gb.NewLine & gb.NewLine ' erzeugt eine Leerzeile nach dem Text 
TextArea.Insert("Ich bin Text – an der aktuellen Cursor-Position eingefügt!")

Text export

If you want to save text via the ClipBoard, this only creates an apparent security, because the content of the ClipBoard is automatically deleted when you exit the program with the TextArea!

The easiest way to save the contents of a TextArea is to use a file save dialog:

Public Sub btnTextToFile_Click() 
  Dialog.Filter = ["*.txt", "Text-Dateien"] 
  If Dialog.SaveFile() Then Return 
  File.Save(Dialog.Path, txaArea.Text) 
  CATCH 
    Message.Info(Error.Text) 
END

Useful information

The following commented source code sections are helpful when working with a TextArea:

Print "Number of characters = "; txaTest.Length
Print "Number of lines = "; Split(txaTest.Text, gb.NewLine).Count
Print "Number of lines = "; txaTest.ToLine(txaTest.Length) + 1
Public Sub btnSetWrapping_Click()
  txaTest.Wrap = Not txaTest.Wrap ' Alternative change of the wrap property (line break)
End
TextArea.Text = "" ' deletes the entire text 
TextArea.Clear ' deletes the entire text 
Public Sub txaTest_Cursor()
  Print "Zeile = "; txaTest.Line
  Print "Spalte = "; txaTest.Column
  Print "Position = "; txaTest.Pos
  Print "Cursor in row "; txaTest.Line; " in column "; txaTest.Column; " at position "; txaTest.Pos
End
txaTest.Pos = 0 ' Jump to the first line (physical 1) to column 0
txaTest.Pos = txaTest.Length ' Jump to the last line 
Public Sub txaTest_Cursor()
  lblAktuelleZeile.Text = "Z: " & txaTest.Line     ' Display of the current line 
  lblAktuelleSpalte.Text = "S: " & txaTest.Column  ' Display of the current column (in the row)
  lblCursorPosition.Text = "P: " & txaTest.Pos     ' Display of the current cursor position
End

Limited Text

An SMS normally comprises a maximum of 160 characters. You can guarantee this number of characters with this section of the source code. Also the case that there is too much text in the TextArea by copying and pasting has been taken into account:

Public Const MAX_CHAR As Integer = 160
 
Public Sub txaTest_Change()
 
' If Len(Last.Text) < MAX_CHAR Then ' Alternative
  If txaTest.Length < MAX_CHAR Then
     txaTest.Foreground = &00007FFF&
     If MAX_CHAR - txaTest.Length = 1 Then
        FMain.Text = Subst$("Exactly 1 character is still available!") 
     Else
        FMain.Text = Subst$("There are still &1 characters available!", MAX_CHAR - txaTest.Length) 
     Endif
  Else If txaTest.Length = MAX_CHAR
     txaTest.Foreground = &00007FFF&
     txaTest.ReadOnly = True
     FMain.Text = Subst$("The maximum number of characters " & Str(MAX_CHAR) & " has been reached!") 
  Else
    txaTest.Foreground = Color.Red
    FMain.Text = Subst$("&1 characters are inserted too many.", - MAX_CHAR + txaTest.Length) 
  Endif
 
End ' txaTest_Change()
...
Public Sub txaTest_KeyPress()
  If Key.Code = Key.BackSpace Or Key.Code = Key.Delete Then txaTest.ReadOnly = False  
End ' txaTest_KeyPress()

The topic 'Finding and replacing text in a TextArea' is dealt with in the next chapter.

Download

Articles

Download


16.14.0 TextArea

Die Klasse TextArea (gb.qt4) implementiert ein mehrzeiliges Textfeld.

WT

Abbildung 16.14.0.1: Wertetabelle in einer TextArea

16.14.0.1 Eigenschaften

Ausgewählte Eigenschaften der Klasse TextArea werden in der folgenden Tabelle beschrieben:

EigenschaftTypBeschreibung
AlignmentIntegerGibt die Text-Ausrichtung zurück oder setzt diesen Wert. Folgende Konstanten sind einsetzbar: Align.Normal (0), Align.Left (1), Align.Right (2) oder Align.Center (3).
BackgroundIntegerSetzt die Hintergrund-Farbe oder liest den Farbwert aus.
ForegroundIntegerSetzt die Text-Farbe oder liest die aktuelle Text-Farbe aus.
FontFontSetzt die Text-Schrift oder liest die aktuelle Text-Schrift aus.
ColumnIntegerGibt die Text-Spalte in der aktuellen Text-Zeile zurück oder setzt die definierte Text-Spalte.
LineIntegerGibt die aktuelle Text-Zeile zurück oder setzt die definierte Text-Zeile.
PosIntegerGibt die aktuelle Cursor-Position zurück oder setzt den Cursor an die definierte Position im Text. Wenn der Text in UTF-8 gespeichert wurde, so müssen Sie die String-Klasse verwenden, um die Position in den Byte-Index im String zu konvertieren.
DropBooleanErmittelt oder legt fest, ob die TextArea das Einfügen von Text per Drag & Drop akzeptiert.
LengthIntegerGibt die Länge des Textes als Anzahl der Zeichen im Text zurück.
ReadOnlyBooleanErmittelt oder legt fest, ob der Benutzer den Text ändern kann.
SelectedBooleanGibt True zurück, wenn Text markiert ist.
TextStringGibt den Text zurück oder setzt den Text, der in der TextArea angezeigt wird.
WrapBooleanErmittelt oder legt fest, ob der Text – in Abhängigkeit von der Breite der TextArea – umgebrochen wird. Es erfolgt keine Silbentrennung!

Tabelle 16.14.0.1.1: Übersicht zu ausgewählten Eigenschaften der Klasse TextArea (gb.qt4)

Hinweise:

  • Die Eigenschaften Pos, Column und Line erschließen sich Ihnen besser, wenn Sie sich den Text in einer TextArea als eine Zeichenkette vorstellen, in die mit “\n” oder gb.NewLine Zeilenende-Zeichen (EOL) eingefügt wurden.
  • Die Eigenschaft Column ist eine relative Größe und bezieht sich immer auf die aktuelle Textzeile! Fassen Sie die Column-Eigenschaft als Cursor-Position in einer Text-Zeile auf, dann liegen Sie damit richtig.
  • Die Zählung von Zeilen, Spalten und der Cursor-Position beginnt jeweils bei 0.

Für die Auszeichnung des Textes in einer TextArea stehen Ihnen nur die zwei Eigenschaften Foreground und Font zur Verfügung. Sie gelten stets global für die gesamte TextArea!

  txaArea.Foreground = Color.RGB(0, 0, 0) ' Schrift-Farbe schwarz
  txaArea.Font = Font["Monospace, 10"]    ' dicktengleiche Schrift
' Zur Kontrolle:
' Print txaArea.Font.ToString()

In der Übersicht zu den ausgewählten Methoden der Klasse TextArea finden Sie drei Methoden zur wechselseitigen Konvertierung von Werten der Eigenschaften Pos, Column und Line.

  Print "Zeile = "; txaTest.ToLine(91)
  Print "Spalte = "; txaTest.ToColumn(91)
  Print "Cursor-Position = "; txaTest.ToPos(1, 30)

Die Eigenschaft TextArea.ReadOnly = True wird dann genutzt, wenn Text nur angezeigt werden soll und manuelle Text-Änderungen im Textfeld nicht zugelassen werden. Beispiele: Hilfe-Texte, Anzeige von Messwerten, Konsolen-Ausgaben o.ä..

16.14.0.2 Methoden

Eine Beschreibung ausgewählter Methoden der Klasse TextArea finden Sie hier:

1x1MethodeBeschreibung
ClearLöscht den gesamten Text.
CopyDer markierte Text wird in das ClipBoard kopiert.
CutDer markierte Text wird ausgeschnitten und in das ClipBoard eingefügt.
PasteFügt den (Text-)Inhalt des ClipBoards an der Cursor-Position ein.
Insert ( Text As String )Fügt ab der aktuellen Cursor-Position den spezifizierten Text in die TextArea ein.
Select ( [ Start As Integer, Length As Integer ] )Markiert Text ab Cursor-Position Start in der Länge von Length.» Start ist die Position des ersten markierten Zeichens im Text.» Länge ist die Länge des zu markierenden Textes. Ist kein Argument angegeben, so wird der gesamte Text markiert.
SelectAllMarkiert den gesamten Text.
UnselectSetzt die Markierung des Textes zurück.
ToColumn ( Pos As Integer ) As IntegerKonvertiert eine Cursor-Position in eine Spalten-Nummer in einer Text-Zeile → Methode ToLine(..).
ToLine ( Pos As Integer ) As IntegerKonvertiert eine Cursor-Position in eine Zeilen-Nummer.
ToPos ( Line As Integer, Column As Integer ) As IntegerKonvertiert eine Kombination aus Text-Zeilen-Nummer und Text-Spalten-Nummer (in dieser Text-Zeile!) in eine Cursor-Position.
UndoMacht die letzte Aktion rückgängig.
RedoNimmt die letzte rückgängig gemachte Aktion zurück.

Tabelle 16.14.0.2.1 : Ausgewählte Methoden der Klasse TextArea (gb.qt4)

Hinweis:

  • Zu den Methoden Copy(), Cut() und Paste() finden Sie interessante Informationen in den Kapiteln 20.4.0 'Clipboard' und 20.4.1 'Projekt 1 – Demonstrationsprogramm Clipboard Text'.

16.14.0.3 Ereignisse

Für die praktische Arbeit mit einer TextArea sind vor allem diese zwei Ereignisse wichtig:

EreignisBeschreibung
ChangeWird ausgelöst, wenn der Text geändert wurde.
CursorDas Ereignis wird ausgelöst, wenn sich die Cursor-Position geändert hat.

Tabelle 16.14.0.3.1: Übersicht zu ausgewählten Ereignissen der Klasse TextArea (gb.qt4)

Hinweise:

Beachten Sie, dass eine Änderung des Textes nicht notwendigerweise auch eine Änderung der Cursorposition zur Folge hat. Das Gambas-Beispiel-Programm Notepad (Text-Editor) setzt die o.a. Eigenschaften, Methoden sowie Ereignisse sehr gut um, so dass es sich für Sie in jedem Fall lohnen wird, dieses Beispiel intensiv zu erproben.

16.14.0.4 Kontext-Menü

Das Kontext-Menü einer TextArea bietet zusammen mit den Short-Cuts – auch ohne Menüs und Toolbars – die Gewähr für ein flottes Arbeiten mit Texten:

KM

Abbildung 16.14.0.4.1: Kontext-Menü

16.14.0.5 Einfügen von Text

Das Einfügen von Text in eine TextArea an einer beliebigen Cursor-Position können Sie auf mehrere Arten vornehmen:

  1. Eingeben von Text über die Tastatur
  2. Einfügen von Text aus dem ClipBoard → Kontext-Menü
  3. Einfügen von Text über Drag&Drop aus anderen, geeigneten (Text-)Quellen
  4. Einlesen des Inhalts einer Text-Datei (Text-Import)
  5. Änderung der Text-Eigenschaft TextArea.Text
  6. Einsatz der Methode TextArea.Insert(“text”)

Einfügen von Text über Drag&Drop

Das Einfügen von Text über Drag&Drop wurde erfolgreich bei den Editoren 'gedit', 'bluefish' und beim Internet-Browser 'firefox' getestet. Der markierte Text in der Quelle wird bei gedrückter Maustaste über das Textfeld gezogen. Dann wird die Maustaste losgelassen und der markierte Text befindet sich in der TextArea und kann dort weiter bearbeitet werden.

Text-Import aus einer Text-Datei

Minisini sagte zu diesem Thema in einem Forum, dass man in eine TextArea nur UTF-8-Strings eingeben darf und betont: Wenn ein anderer Zeichensatz funktioniert … , dann ist das Kulanz von QT oder Zufall.

Mit diesem Quelltext-Ausschnitt sind Sie immer auf der richtigen Seite:

[1]   ...
[2]   Dim sMimeTypeCharSet, sCharSet, sMime As String 
[3]   Dim sFilePath As String
[4] 
[5]   Dialog.Title = "Wählen Sie eine Text-Datei aus!"
[6]   Dialog.Filter = ["*.ini", "INI-Dateien", "*.txt", "Text-Dateien", "*", "Alle Dateien"]
[7]   Dialog.Path = "/etc/odbcinst.ini"
[8]   If Dialog.OpenFile() Then Return
[9]   sFilePath = Dialog.Path
[10]   
[11]   Exec ["file", "-bi", sFilePath] To sMimeTypeCharSet ' Ermittlung MimeTyp und Zeichensatz 
[12]   Wait
[13]   Print sMimeTypeCharSet
[14]   sMime = Split(sMimeTypeCharSet, ";")[0]
[15]   Print "Mime-Typ = "; Trim(sMime)  
[16]   sCharSet = Trim(Split(Split(sMimeTypeCharSet, ";")[1], "=")[1])
[17]   Print "CharSet  = "; Trim(sCharSet)
[18]   
[19]   If sCharSet <> "utf-8" Then
[20]      Try txaArea.Text = Conv(File.Load(sFilePath), sCharSet, "UTF-8")
[21]    ' Try txaArea.Insert(Conv(File.Load(sFilePath), sCharSet, "UTF-8"))
[22]   Else
[23]      txaArea.Text = File.Load(sFilePath) 
[24]    ' txaArea.Insert(File.Load(sFilePath))
[25]   Endif
[26]   
[27]   txaArea.Pos = 0
[28]   ...

Kommentar:

  • Die zu importierende Text-Datei wird in den Zeilen 5-9 in einem Dialog ausgewählt.
  • In der Zeile 11 wird der kombinierte MimeTyp-Zeichensatz-Wert der importierten Text-Datei ausgelesen und in der Variablen sMimeTypeCharSet gespeichert.
  • Die Zeile 16 übernimmt die Extraktion des Zeichensatzes, der in der Zeile 20 benötigt wird, um den Zeichensatz zu konvertieren – falls das notwendig sein wird.
  • Achtung: Der importierte Text in der Zeile 20 oder 23 ersetzt den u.U. schon vorhandenen Text.
  • Der importierte Text wird jedoch standardmäßig an das Text-Ende angehängt, wenn Sie die Zeilen 21 oder 24 verwenden.
  • Die blau hervorgehobenen Zeilen dienen nur zur Kontrolle und können auskommentiert werden.

Die Konfigurationsdatei odbcinst.ini lieferte folgenden kombinierten Wert aus MimeTyp und Zeichensatz:

text/plain; charset=us-ascii

Der Zeichensatz der Datei wurde entsprechend der Forderung in der Zeile 19 deshalb in UTF-8 konvertiert. Notwendig war das im Falle von us-ascii nicht, weil ASCII in UTF-8 enthalten ist.

Textänderungen über die Text-Eigenschaft und die Insert(..)-Methode

In diesem Abschnitt wird einerseits Text in eine TextArea eingefügt, in dem über eine Änderung der Eigenschaft TextArea.Text = Text-String der alte Text komplett durch den neuen Text überschrieben wird und andererseits gezeigt, wie man Text an der aktuellen Text-Cursor-Position hinzufügt:

TextArea.Text = "Ich bin der neue Text!"
TextArea.Text = TextArea.Text & "Ich bin weiterer Text!"
TextArea.Text &= "Ich bin weiterer Text!"
TextArea.Text &= gb.NewLine ' erzwingt einen Zeilenwechsel
TextArea.Text &= gb.NewLine & gb.NewLine ' erzeugt eine Leerzeile nach dem Text 
TextArea.Insert("Ich bin Text – an der aktuellen Cursor-Position eingefügt!")

Text-Export

Wenn Sie Text über das ClipBoard sichern wollen, dann erzeugt das nur eine scheinbare Sicherheit, denn der Inhalt des ClipBoards wird automatisch gelöscht, wenn Sie das Programm mit der TextArea beenden!

Der einfachste Weg, den Inhalt einer TextArea zu sichern, führt über einen Datei-Speichern-Dialog:

Public Sub btnTextToFile_Click() 
  Dialog.Filter = ["*.txt", "Text-Dateien"] 
  If Dialog.SaveFile() Then Return 
  File.Save(Dialog.Path, txaArea.Text) 
  CATCH 
    Message.Info(Error.Text) 
END

Nützliches

Die folgenden kommentierten Quelltext-Abschnitte sind hilfreich bei der Arbeit mit einer TextArea:

Print "Anzahl der Zeichen = "; txaTest.Length
Print "Anzahl der Zeilen = "; Split(txaTest.Text, gb.NewLine).Count
Print "Anzahl der Zeilen = "; txaTest.ToLine(txaTest.Length) + 1
Public Sub btnSetWrapping_Click()
  txaTest.Wrap = Not txaTest.Wrap ' Alternative Änderung der Wrap-Eigenschaft (Zeilenumbruch)
End
TextArea.Text = "" ' löscht den gesamten Text 
TextArea.Clear ' löscht den gesamten Text 
Public Sub txaTest_Cursor()
  Print "Zeile = "; txaTest.Line
  Print "Spalte = "; txaTest.Column
  Print "Position = "; txaTest.Pos
  Print "Cursor in Zeile "; txaTest.Line; " auf Spalte "; txaTest.Column; " auf Position "; txaTest.Pos
End
txaTest.Pos = 0 ' Sprung in die erste Zeile (physisch 1) auf Spalte 0
txaTest.Pos = txaTest.Length ' Sprung in die letzte Zeile 
Public Sub txaTest_Cursor()
  lblAktuelleZeile.Text = "Z: " & txaTest.Line     ' Anzeige der aktuellen Zeile 
  lblAktuelleSpalte.Text = "S: " & txaTest.Column  ' Anzeige der aktuellen Spalte (in der Zeile)
  lblCursorPosition.Text = "P: " & txaTest.Pos     ' Anzeige der aktuellen Cursor-Position
End

Limitierter Text

Ein SMS umfasst im Normalfall maximal 160 Zeichen. Mit diesem Quelltext-Ausschnitt können Sie diese Anzahl der Zeichen garantieren. Auch der Fall, dass sich durch Kopieren und Einfügen zu viel Text in der TextArea befindet wurde berücksichtigt:

Public Const MAX_CHAR As Integer = 160
 
Public Sub txaTest_Change()
 
' If Len(Last.Text) < MAX_CHAR Then ' Alternative
  If txaTest.Length < MAX_CHAR Then
     txaTest.Foreground = &00007FFF&
     If MAX_CHAR - txaTest.Length = 1 Then
        FMain.Text = Subst$("Es ist noch genau 1 Zeichen verfügbar!") 
     Else
        FMain.Text = Subst$("Es sind noch &1 Zeichen verfügbar!", MAX_CHAR - txaTest.Length) 
     Endif
  Else If txaTest.Length = MAX_CHAR
     txaTest.Foreground = &00007FFF&
     txaTest.ReadOnly = True
     FMain.Text = Subst$("Die maximale Anzahl von Zeichen " & Str(MAX_CHAR) & " ist erreicht!") 
  Else
    txaTest.Foreground = Color.Red
    FMain.Text = Subst$("Es sind &1 Zeichen zu viel eingefügt.", - MAX_CHAR + txaTest.Length) 
  Endif
 
End ' txaTest_Change()
...
Public Sub txaTest_KeyPress()
  If Key.Code = Key.BackSpace Or Key.Code = Key.Delete Then txaTest.ReadOnly = False  
End ' txaTest_KeyPress()

Das Thema 'Suchen und ersetzen von Text in einer TextArea' wird im nächsten Kapitel behandelt.

Download

Artikel

Download

The website uses a temporary session cookie. This technically necessary cookie is deleted when the browser is closed. You can find information on cookies in our privacy policy.
k16/k16.14/start.txt · Last modified: 02.07.2018 (external edit)

Page Tools