Avatar billede demojoe Nybegynder
16. maj 2003 - 22:41 Der er 4 kommentarer

max længe og rækker på textbox

hejsa
jeg har en multiline textbox som jeg gerne vil begrænse til at folk max man skrive 5 linier og 20 tegn på hver line.

mit problem er at en linie på over 20 tegn forsætter på næste linie (da bredden på textboxen er sat til netop at være 20 karaktere). altså kan jeg ikke bare tjekke på linieskif... håber der er nogen der kan hjælpe.
Avatar billede sjh Nybegynder
16. maj 2003 - 23:01 #1
kan du ikke bare bruge "MaxLength"

Private Sub Form_Load()
  Text1.MaxLength = 100 'Max 100 tegn
End Sub
Avatar billede demojoe Nybegynder
16. maj 2003 - 23:06 #2
nej, det er netop det der er mit problem...
for hvis jeg sætter maxlength til 100, sætter jeg ingen begrænsning på antallet af linier.
det er f.eks. ikke noget problem at lave 15 linier med 4-5 tegn på...
Avatar billede sjh Nybegynder
16. maj 2003 - 23:45 #3
Prøv denne her:

Option Explicit

Public Function ChkLine(ByVal strText As String) As Long
Dim i As Long, lngLine As Long
  For i = 1 To Len(strText)
    Select Case Mid$(strText, i, 2)
          Case vbCrLf
            lngLine = lngLine + 1
    End Select
  Next i
  ChkLine = lngLine
End Function

Private Sub Text1_KeyPress(KeyAscii As Integer)
  Select Case KeyAscii
        Case 13, 22 'Enter = 13 , Ctrl+V = 22
          If ChkLine(Text1) >= 4 Then
            KeyAscii = 0
            MsgBox "Du må kun lave 5 linjer."
          End If
  End Select
End Sub

Her er hvordan du låser menu for paste:
http://www.mvps.org/vbnet/index.html?code/subclass/contextmenu.htm
Avatar billede sjh Nybegynder
17. maj 2003 - 00:04 #4
ellers så prøv denne her:

'------------------------------------ Form1 ------------------------------------
Option Explicit

Public Function Max5Line(ByVal strText As String) As String
Dim i As Long, lngLine As Long
Dim strOne As String
  For i = 1 To Len(strText)
    strOne = Mid$(strText, i, 1)
    Select Case strOne
          Case Chr$(13)
            lngLine = lngLine + 1
            If lngLine = 5 Then '<-- Max 5 Line
              Exit For
            End If
            Max5Line = Max5Line & Chr$(13)
          Case Else
            Max5Line = Max5Line & strOne
    End Select
  Next i
End Function

Public Function ChkLine(ByVal strText As String) As Long
Dim i As Long, lngLine As Long
  For i = 1 To Len(strText)
    Select Case Mid$(strText, i, 1)
          Case Chr$(13)
            lngLine = lngLine + 1
    End Select
  Next i
  ChkLine = lngLine
End Function

Private Sub Text1_KeyPress(KeyAscii As Integer)
  Select Case KeyAscii
        Case 13, 22 'Enter = 13 , Ctrl+V = 22
          If ChkLine(Text1) >= 4 Then
            Text1 = Max5Line(Text1)
            KeyAscii = 0
          End If
  End Select
End Sub

Private Sub Text1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
  If Button = 2 And ChkLine(Text1) > 4 Then
    Text1 = Max5Line(Text1)
  End If
End Sub
'------------------------------------ Form1 ------------------------------------
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester