AW: Visible = true ?
16.01.2004 11:11:55
Jürgen
Über die Eigenschaft Locked können Sie die Eingabe in eine TextBox bzw. deren Anwendung durch den Anwender sperren. Diese Sperrung ist jedoch etwas anderes als die Sperrung über die Enabled Eigenschaft. Während bei letzterer die TextBox wie jedes andere Steuerelement vollständig gesperrt wird, also dort auch keine Mausereignisse mehr ankommen und der Fokus-Erhalt verhindert wird, kann der Anwender den Textinhalt einer ge"lock"ten TextBox nach wie vor markieren und beispielsweise in die Zwischenablage kopieren.
Damit der Anwender diesen Lock-Zustand erkennen kann, und zur Unterscheidung der Sperrung durch Enabled (bei der der Textinhalt einer Textbox in grauer Schriftfarbe dargestellt wird), sieht man oft, dass der Hintergrund der TextBox in der Hintergrundfarbe des Containers (bzw. Forms) dargestellt wird.
Die folgende Funktion TextBoxVisualLock vereinfacht diese Darstellungsweise und setzt zugleich den Locked-Zustand und die entsprechende Hintergrundfarbe. Sie können optional beliebige Schrift- und Hintergrundfarben angeben. Lassen Sie diese Parameter weg, wird als Schriftfarbe die Systemfarbe vbWindowText (Standard der TextBox) angenommen, und als Hintergrundfarbe bei Locked gleich False die Systemfarbe vbWindowBackground (Standard der TextBox) bzw. bei Locked gleich True die Systemfarbe vb3DFace (Standard bei Forms) angenommen.
Public
Sub TextBoxVisualLock(TextBox As TextBox, _
ByVal Locked As Boolean, _
Optional ByVal ForeColor As Long = -1, _
Optional ByVal BackColor As Long = -1)
With TextBox
.Locked = Locked
Select Case Locked
Case False
If ForeColor = -1 Then
.ForeColor = vbWindowText
Else
.ForeColor = ForeColor
End If
If BackColor = -1 Then
.BackColor = vbWindowBackground
Else
.BackColor = BackColor
End If
Case True
If ForeColor = -1 Then
.ForeColor = vbWindowText
Else
.ForeColor = ForeColor
End If
If BackColor = -1 Then
.BackColor = vb3DFace
Else
.BackColor = BackColor
End If
End Select
End With
End Sub
Übrigens, wenn Sie die Eigenschaft BorderStyle der TextBox auf 0 setzen, und mittels dieser Funktion die TextBox sperren und die Hintergrundfarbe auf die Hintergrundfarbe des Containers setzen, erhalten Sie so ein Textanzeige-Element, das wie ein Label aussieht, dessen Text jedoch vom Anwender kopiert werden kann.
Vielleicht hilft dir das
Gruß
Jürgen