Textfeld mit Rand

Leserbewertung(0):bewerten...
kommentieren...

Hans Happel

Ärgert es Sie auch, dass der Text in Textfeldern oben und an den Seiten klebt. Wäre ein Rand nicht schöner?

Schaffen Sie Abhilfe mit folgendem Tipp.

  • Erstellen Sie eine Form mit einem Textfeld, das mehrere Zeilen beinhalten kann.
  • Geben Sie den Button Command1 hinzu.
  • Schalten Sie im Text1 evtl. die Eigenschaft Scrollbars = 2

Der Deklarationsabschnitt sollte folgenden Inhalt haben:

Option Explicit
Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

Command1_Click sieht so aus:

Private Sub Command1_Click()
Dim Rahmen As RECT
SendMessage Text1.hwnd, &HB2, 0, Rahmen 'alte Rahmenmaße werden gelesen. EM_GETRECT = &HB2
Rahmen.Top = 8
Rahmen.Left = 8
Rahmen.Right = Rahmen.Right - 8
Rahmen.Bottom = Rahmen.Bottom - 8
SendMessage Text1.hwnd, &HB3, 0, Rahmen 'neue Rahmenmaße werden geschrieben. EM_SETRECT = &HB3
End SubP

Ins Form_Load-Ereignis schreiben Sie den folgenden oder einen beliebigen Text

Private Sub Form_Load()
Text1 = "Der Text in einer Textbox muß nicht am Rand kleben. " & _
"Drücken Sie den Button Command1. Die Schrift wird sich vom Rand lösen." & vbCrLf & vbCrLf & _
"Mehrmalieges Drücken vergrößert den rechten und unteren Rand, " & _
"weil die benutzerdefinierten Variablen Rahmen.Right und Rahmen.Bottom subtrahiert
werden." & vbCrLf & vbCrLf & _
"Wollen Sie das gleiche mit Rahmen.Top und Rahmen.Left machen, dann müssen Sie
addieren."
End Sub

Da dies ein Demo-Programm ist stehen im Command1_Click-Ereignis die Werte für die Randbreite. Wir wollen ja den Unterschied erkennen. Eigentlich gehört der Inhalt von Command1_Click in das Form_Load-Ereignis.