Det har jeg! Og det kan naturligvis sagtens lade sig gøre, også med een textbox :o)
Brug keypress-eventen til text-boxen.
Keypress-eventen bliver aktiveret hver gang der tastes et tegn i textboxen
I Keypress-evente tjekker du så længden af teksten i textboxen. Er længden mindre eller lig 8, tjekker du om ansi-koden på det indtastede tegn er lovlig, dvs. om det er et bogstav. Er længden større gør du det samme, der skal ansi-koden tjekkes for om det er et tal. Er ansi-koden ikke lovlig, sætter du den lig nul, dvs. sletter det indtastede tegn. Det bevirker, at tekesbosen opfører sig præcis som du ønsker.
Det er super-simpelt når du ser det i et eksempel - men jeg har ikke VB på denne PC, og vil ikke forsøge at skrive kode ud fra hukommelse, da det helt sikkert bliver fyldt med fejl. Er ovenstående ikke nok, så vent til i morgen, så skal jeg gerne give dig et eksempel.
Hvis jeg har fostået dig korrekt, så behøver du bare at oprette en tekstboks (Text1), og tilføje følgende kode:
Private Sub Text1_KeyPress(KeyAscii As Integer) If KeyAscii = 8 Then Exit Sub If Len(Text1.Text) < 8 And InStr(1, "abcdefghijklmnopqrstuvwqyzæøå", LCase(Chr(KeyAscii))) = 0 Then KeyAscii = 0 End If If Len(Text1.Text) >= 8 And InStr(1, "0123456789", LCase(Chr(KeyAscii))) = 0 Then KeyAscii = 0 End If If Len(Text1.Text) >= 12 Then KeyAscii = 0
If Len(Text1.Text) = 12 Then MsgBox "Betingelserne for tekstboksen er nu opfyldt!!" End If End Sub
Jeg er overbevist om jeres forslag er bedre, men skal det ikke så i Privat Sub Text1_LostFocus() If Len(Text1.Text) <> 12 Then Text1.SetFocus End If End Sub
Ellers kan man jo gå ud af feltet selv om betingelserne ikke er opfyldt ?
Eller er det bare mig der ikke lige helt forstår ?
Private Sub Text1_KeyPress(KeyAscii As Integer) Dim strTekst As String strTekst = Text1
If KeyAscii = 8 Then KeyAscii = 8: Exit Sub 'Backspace If Len(strTekst) <= 11 Then If Len(strTekst) <= 7 Then Select Case Chr(KeyAscii) Case "A" To "Z", "a" To "z", "æ", "ø", "å", "Æ", "Ø", "Å" Case Else: KeyAscii = 0 End Select Else Select Case Chr(KeyAscii) Case "0" To "9" Case Else: KeyAscii = 0 End Select End If Else: KeyAscii = 0 End If End Sub
> tubber: Jeg forbinder brugen af lostfocus og gotfocus lidt med brugen af GoTo-labels: Det er noget man helst ikke bruger. Har man for mange lostfocus og gotfocus, kan man nemt komme til at stå i en uendelig lykke, da en lostfocus kan trigge en gotfocus, dom trigger en lostfocus som ... osv. Så hellere fx. disable en knap, indtil der er 12 tegn i textboxen, og derefter enable den.
Martin: Det kan man også :O) Det er jeg helt enig i, men det jeg ville frem til var at hvis der ikke er andet end det sjh, eller allanmc skrev, så ville man kunne komme ud af feltet med musen, altså man kan komme hen et andet sted.... Han ville jo også have man ikke kunne komme væk fra feltet (eller vidre) så skal der jo lidt mere på f.eks. en disablet knap eller sådan en så du ikke kan forlade feltet før dine kriterier er opfyldt :O)
/Tubber
PS: djblues så var det martin_moth og allanmc der fik points :O) men rart at følge med så har man jo selv lært lidt :O)
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.