Toon posts:

[VB6]noobvraagje invoercontrole

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een opdracht voor school waar ik invoercontroles op tekstvakjes moet zetten.

Het gaat om 2 controles:

1: Kijken of er wel een getal ingevoerd word, het eerste teken mag ook plus, min, komma en punt zijn en het tweede teken dat ingevoerd word mag ook nog een komma of punt zijn maar geen plus en min meer. Daarna mogen het alleen maar getallen zijn.

2: Na het invoeren van een key moet er na de eerste controle nog gecontroleerd worden of er een reël getal ingevoerd is. Dit met de functie IsNumeric().

Ik heb dit in elkaar gezet, het werkt wel maar de controle op + , - . bij 2de en 3de etc invoer is niet goed:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
Public Sub ContrGetal(Toets As Integer, Invoer As String)
    
    If Toets = 8 Then Exit Sub
    
    If Toets < 43 Or Toets > 46 Then
        
           ContrCijfer Toets
        
           If Len(Invoer) <= 1 Then Exit Sub
        
           If IsNumeric(Invoer) Then
        
                Exit Sub
            
            Else
        
                MsgBox "Geen correct getal!", vbCritical, "Let Op!"
                Toets = 0
                    
            End If
                    
       
    Else
    
            If Len(Invoer) <= 1 Then Exit Sub
        
            If IsNumeric(Invoer) Then
    
                Exit Sub
            
            Else
    
                MsgBox "Geen correct getal!", vbCritical, "Let Op!"
                Toets = 0
    
            End If
    
    End If
        
End Sub


Iemand een idee hoe ik die controle op punt, komma, plus en min goed kan maken zodat ie bijvoorbeeld gelijk een foutmelding geeft als ik bij de 2de invoer een plus geef.

  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 16:59

Crazy D

I think we should take a look.

In de keypress en keydown events afvangen welke toetsen er worden ingedrukt. Met de selstart property kun je opvragen op welke positie de cursor staat, door die 2 te combineren ben je al een aardig eindje op weg.
(je kan ook kijken of je de masked edit control kunt gebruiken, dan maak je optimaal gebruik van je ontwikkelomgeving, want waarom zou je zelf zulke controle moeten schrijven als die masked edit control het kan ;)).

Exact expert nodig?


Verwijderd

Topicstarter
Haha, ja mocht ik die maskEdit maar gebruiken! Maat thnx voor die selstrart tip daar kom ik inderdaad een eind mee! :)

  • El_Quedro
  • Registratie: September 2001
  • Laatst online: 04-08-2025

El_Quedro

Pininfarina

selstart is idd een goede optie..

Alleen zelf zou ik liever werken met de Mid() function.

Mid() retourneerd een variable die geknipt is uit een andere variable

dus je zou dit kunnen doen:

if Mid(Invoer, 1, 1) = "+" or Mid(Invoer, 1, 1) = "-" then

if IsNumeric(Mid(Invoer,2)) = false Then
Exit Sub
end if
End if

Uitleg Mid() function:

Mid(Data as string, SelStart as long, [Length as long])

de Length is dus optioneel

grtz

EQ

edit:

had i.pv. 'Or' 'And' gedaan LOL :D dan doet ie het niet zo heel goed he ;)

  • Sponge
  • Registratie: Januari 2002
  • Laatst online: 28-08 17:06

Sponge

Serious Game Developer

Eventueel zou je jezelf kunnen aanleren om $ achter de string functies te plaatsen (Left,Trim,Right,Mid,e.d. ->Left$,Trim$,Right$,Mid$), aangezien VB dan een conversie minder uitvoert en dit dus sneller is (al zou je het niet echt merken met weinig gebruik hoor)