VB-Homepage Tipp 044

Text in Textboxen schützen, dennoch aktiv und markierbar

Der Platz für die Überschrift ist etwas kurz, um genau zu beschreiben, was sich hinter diesem Tipp verbirgt. Also nehmen wir an, Sie haben in Ihrem Projekt Textboxen, die sich vor einer Veränderung durch den User schutzen wollen.
Klar, man würde die Textbox-Eigenschaft ENABLED auf False setzen.

Unter VB3 bleibt der Text wenigstens dunkel (aktiv),
ab VB4 wird er aber als inaktiv dargestellt und damit fast nicht lesbar.
Beiden Versionen gemein ist aber, das der Text nicht mehr markierbar und so auch nicht in die Zwischenablage kopiert werden kann.

Mit folgendem Tipp ist dies nun möglich.
Beachten Sie bitte die unterschiedliche Syntax für 16Bit und 32Bit.
(Und wie oft, geht es nur mit einer API-Funktion)

######################################################
16Bit
General/Declarations
Declare Function SendMessage& Lib "user" (ByVal hWnd As Integer, ByVal wMsg As Integer, ByVal wParam As Integer, lParam As Any)

Const EM_SETREADONLY = (&H400 + 31)

######################################################
32Bit
Allgemein/Deklarationen
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Long) As Long

Const EM_SETREADONLY = (&H400 + 31)

######################################################

Fügen Sie Ihrem Projekt einen Commandbutton und eine Textbox hinzu und tragen Sie irgend einen Text in die Textbox. (Damit was zum Testen da ist.)

Command1/Click
x& = SendMessage(Text1.hWnd, EM_SETREADONLY, 1, 0)

Sie werden sehen, der Text ist zwar geschützt, aber markierbar.
( Mit Enabled nicht möglich)


######################################################
Nachtrag VB4 ( Tipp von Kay-Uwe Schreiner )
Ab VB4 brauchen Sie nur die "Locked" Eigenschaft der Textbox auf True stellen und erreichen das selbe Ergebnis.


Tipp-Download

Quelle :

Zurück zur Übersichtsseite