Textfeld für Verbesserungen sperren

dennislassiter

Erfahrenes Mitglied
Hi,

ich möchte ein Multiline-Textfeld wo man auch was eintippen kann, aber es soll keine möglichkeit geben das eingegebene per Maus oder Tastatur auszubessern (10 Finger System Übungsprogramm).
Kann mir da jemand helfen?

Danke
bye,
Dennis L.
 
Interessante Sache. Hab's auf die Schnelle mal ausprobiert und bin auf folgendes Ergebnis gekommen:

Code:
Option Explicit
Dim str$

Private Sub TextFeld_GotFocus()
   str = TextFeld.Text
End Sub

Private Sub TextFeld_Change()
   If Not str = Left(TextFeld.Text, Len(TextFeld.Text) - 1) Then
       TextFeld.Text = str
   Else
       str = TextFeld.Text
   End If
   TextFeld.SelStart = Len(TextFeld.Text)
End Sub

Versuch's mal..
 
Zuletzt bearbeitet:
RechtsKlick In Welcher Umgebung proggst Du denn? Normal muss man den RechtsKlick doch explicit vereinbaren?!...
 
Ich muss mich verbessern!
Es funktioniert bedingt!

Wenn man den Text mit der Maus markiert und dann eine taste aus BACKSPACE oder ENTF drückt, dann gibts einen Fehler in der Zeile

If Not str = Left(TextFeld.Text, Len(TextFeld.Text) - 1) Then


Rechtsklick-Problem gelöst


Code:
Private Sub TextFeld_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 2 Then
    MsgBox "Verboten!", vbInformation, "TenFingers"
End If
End Sub
 
Zuletzt bearbeitet:
Wenn man den Text mit der Maus markiert und dann eine taste aus BACKSPACE oder ENTF drückt, dann gibts einen Fehler in der Zeile

If Not str = Left(TextFeld.Text, Len(TextFeld.Text) - 1) Then

'On Error Resume Next' einfügen:

Code:
Private Sub TextFeld_Change()

On Error Resume Next            

   If Not str = Left(TextFeld.Text, Len(TextFeld.Text) - 1) Then
       TextFeld.Text = str
   Else
       str = TextFeld.Text
   End If
   TextFeld.SelStart = Len(TextFeld.Text)
End Sub
Ist zwar ein bisschen unsauber, aber dient zunächst der Funktionalität. Mich interessiert eine saubere Lösung ebenfalls, deshalb bleibe ich am Ball ;)
 
jetzt versuche ich verzweifelt eine neue Zeile anzufangen.
Wenn ich man wieder genug zeit habe, kümmere ich mich intensiver drum

Vielen Dank!
 
Das ist ganz einfach, weil Zeilenumsprung aus 2 Zeichen besteht. Deshalb wird einfach der Text davor genommen!
So, jetzt schau dich nach ner gescheiten, eleganten Lösung um :p

Ich schlage vor, dass du einfach immer OnClick den Cursor nach ganz vorn springen lässt. Ich glaub das is dann Text1.SelIndex=len(Text1.Text) oder so ähnlich, ahb VB grad nich vor mir. Das gleiche machst du mit anderen Benutzereingaben die unerlaubt sind. Aber ich muss zugeben, sehr elegant ist das auch nicht :-)

cu, nEwImEr
 

Neue Beiträge

Zurück