Visual Basic - Evento KeyPress para columna de Datatagrid vb6

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil
Val: 35
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Evento KeyPress para columna de Datatagrid vb6

Publicado por CARLOS (18 intervenciones) el 19/08/2020 02:29:03
Hola, saludos, alguien podría decirme por favor cómo hacer para que solo en uno de 4 campos un datagrid me acepte solo números en VB6?

Tengo 4 campos en el Datagrid1 en VB6 que me enlazan una DB, pero quiero que en el campo 2 solo me acepte números, y en el resto de campos que no haya restricción de caracteres.

Hasta el momento solo sé hacerlo desde el evento KeyPress del Datagrid1 pero me aplica la restricción para todas las columnas del Datagrid y yo lo necesito únicamente para el campo 2, he usado este código:

1
2
3
4
5
6
7
Const Number$ = "0123456789."
If KeyAscii <> 8 Then
If InStr(Number$, Chr(KeyAscii)) = 0 Then
KeyAscii = 0
Exit Sub
End If
End If

Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 355
Bronce
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Evento KeyPress para columna de Datatagrid vb6

Publicado por raul (160 intervenciones) el 19/08/2020 22:55:37
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
41
42
43
44
45
46
47
48
'Esta es una función que empleo en un proyecto propio
 
Public Function RESTRIC(x As Integer, FORMA As String, Optional USELIN As Boolean, Optional TXTLIM As Integer, Optional txt As Object) As Integer
    RESTRIC = 0 'values de forma: [num] = numeros; [sin] = valores single, [FCH] = fecha; [TXT] = textos; [CON] = contratos o Facturas
    If USELIN = True Then
        If Len(txt.Text) >= TXTLIM And x <> 8 And Len(txt.SelText) = 0 Then
            x = 0
        End If
    End If
    Select Case FORMA
    Case "num" 'numeros enteros
        If (x >= 48 And x <= 57) Or x = 8 Or x = 13 Then
        RESTRIC = x
        End If
    Case "sin" 'numeros con comas
        If (x >= 48 And x <= 57) Or x = 8 Or x = 13 Or x = 46 Then
            RESTRIC = x
        End If
    Case "fch" ' fechas
        If (x >= 47 And x <= 57) Or x = 8 Or x = 13 Then
            RESTRIC = x
        End If
    Case "txt" ' textos
        If (x >= 65 And x <= 90) Or (x >= 97 And x <= 122) Or x = 8 Or x = 164 Or x = 165 Or x = 13 Or x = 225 Or x = 233 Or x = 237 Or x = 243 Or x = 250 Or x = 193 Or x = 201 Or x = 205 Or x = 211 Or x = 218 Or x = 32 Or x = 241 Or x = 209 Or x = 46 Then
            RESTRIC = x
        End If
    Case "lib" ' cualquier dato
        RESTRIC = x
    Case "con" 'contratos
        If x = 45 Or x = 8 Or x = 13 Or (x >= 48 And x <= 57) Or (x >= 65 And x <= 90) Or (x >= 97 And x <= 122) Or x = 164 Or x = 165 Or x = 241 Or x = 209 Then
        RESTRIC = Asc(UCase(Chr(x)))
        End If
    End Select
End Function
 
'Ahora cada vez que quieras emplearla solo tienes que decir
keyascii = restric(keyascii, "num") ' para numeros enteros
keyascii = restric(keyascii, "txt") ' para textos
keyascii = restirc(keyascii, "lib") ' para que no funcione o permita cualquier caracter
 
' O sea
Private Sub DB1_KeyPress(KeyAscii As Integer)'DB1 es el datagrid
select case DB1.COL
case 1, 3, 4: keyascii = restric(keyascii, "num")
Case 2       : keyascii = restric(keyascii, "sin") 'Numeros decimales
case else   : keyascii = restric(keyascii, "fch")'Fechas
end select
End Sub

Obs:
Los parametros opcionales tienen que ver con mi proyecto sientete libre de quitarlos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 35
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Evento KeyPress para columna de Datatagrid vb6

Publicado por CARLOS (18 intervenciones) el 20/08/2020 04:41:15
Muchas gracias Raul, me funcionó perfecto. Me interesaba la última parte que has escrito sobre aplicar las condiciones solo a las columnas deseadas, Bendiciones.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar