Avatar billede djblues Nybegynder
03. oktober 2002 - 20:09 Der er 11 kommentarer og
2 løsninger

Validate en text boks - xxxxxxxx1111

Jeg vil gerne kunne validerer en textbox sådan at man ikke kommer videre før man har skrevet 8 bogstaver og herefter 4 tal.....

Kan det lade sig gøre....????
Avatar billede tubber Juniormester
03. oktober 2002 - 20:27 #1
Lav 2 textboxe
Text1 til de 8 bogstaver og text2 til de 4 tal.....
Dim var1 As String
Dim var2 As Integer

Private Sub Text1_LostFocus()
var1 = Text1.Text
If Len(var1) <> 8 Then
    Text1.SetFocus
End If
End Sub

Private Sub Text2_LostFocus()
var2 = Text2.Text
If Len(var2) <> 4 Then
    Text1.SetFocus
End If
End Sub

Det er en måde at gøre det på....men den er desværre ikke optimal, men håber det kan hjælpe dig vidre :O)
Avatar billede djblues Nybegynder
03. oktober 2002 - 20:30 #2
øh, nej ikke helt optimal med et godt forsøg....

Det skal være en tekstboks og du validere helle ikke om det er tal eller bogstaver....

8 bogstaver ( udelukkende bogstaver )
4 tal ( udelukkende tal )

Sorry, håber der er nogen der har andre forslag
Avatar billede martin_moth Mester
03. oktober 2002 - 21:19 #3
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.
Avatar billede allanmc Nybegynder
03. oktober 2002 - 22:12 #4
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

Håber det kunne hjælpe dig ;]
Avatar billede tubber Juniormester
03. oktober 2002 - 22:25 #5
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 ?

/Tubber
Avatar billede sjh Nybegynder
03. oktober 2002 - 22:26 #6
Noget i stil med dette:

Option Explicit

Private Sub Form_Load()
  Text1 = ""
End Sub

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
Avatar billede tubber Juniormester
03. oktober 2002 - 22:28 #7
sjh:

Hjælp mig lige engang her....

Vil man ikke kunne forlade textfeltet selv om betingelserne ikke er opfyldt ?
Avatar billede sjh Nybegynder
03. oktober 2002 - 22:54 #8
Nej
Avatar billede djblues Nybegynder
03. oktober 2002 - 23:12 #9
allanmc & tubber, får pointene, da jeg har brugt deres ideér ...

Mange tak for hjælpen
Avatar billede tubber Juniormester
03. oktober 2002 - 23:14 #10
sjh:

Man kan faktisk forlade feltet - testede lige.....du kan gøre det med musen :O)
Avatar billede martin_moth Mester
04. oktober 2002 - 09:53 #11
> 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.

Men det er bare min personlige opfattelse :o)
Avatar billede tubber Juniormester
04. oktober 2002 - 10:25 #12
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)
Avatar billede allanmc Nybegynder
04. oktober 2002 - 22:31 #13
Tak for pointene!
Altid rart at kunne hjælpe ;]
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