Otra de Access

Hola Sherdal
Espero que te acuerdes de mi, con lo que me dijiste me están saliendo perfecto los cálculos pero ahora tengo otro problemita y es que cuando me voy a la pantalla y quiero llenar los campos no deja que el cursor se desplace de arriba hacia abajo y viceversa. Estuve revisando y creo que con el procedimiento KEYDOWN se puede hacer pero no se como hacerlo.
Te agradecería mucho si me pudieras ayudar con esto
Este es un ejemplo de la fórmula que pongo en el evento salir de cada cuadro de texto:
Private Sub COM_Y_Exit(Cancel As Integer)
ORI_CAL_Y = ([COM_Y] + [INT_Y]) / 2
ORIENTAYO = Format(ORI_CAL_Y, "0.0")
End Sub
Chau

1 Respuesta

Respuesta
1
Lo que quieres hacer tiene mucha más miga de lo que piensas. Te lo doy a dar hecho, pero con esto creo que ya tienes materia suficiente para ir investigando por tu cuenta problemas similares, por lo que a partir de ahora te daré respuestas más genéricas para que tú las desarrolles.
1º Pon esto en la parte de declaraciones del formulario (el código está limitado a 20 cuadros de texto, cámbialo a tu conveniencia):
' El límite 20 es de ejemplo y hay que cambiarlo por el correcto (nº de controles)
Dim Tabulaciones(1 To 20, 1 To 2), TotalTab As Integer
2º En el FORMULARIO elije el evento 'Al bajar una tecla' y pon dentro el siguiente código:
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Dim I As Integer
' Determina el control actual en la tabla de tabulaciones
I = 1
While Tabulaciones(I, 2) <> Me.ActiveControl.TabIndex And I < TotalTab
I = I + 1
Wend
' Se encontró en la lista de tabulaciones
If Tabulaciones(I, 2) = Me.ActiveControl.TabIndex Then
' Determina el control al que hay que cambiar
If Shift = 0 Then
' Flecha abajo
If KeyCode = 40 Then
I = I + 1
If I > TotalTab Then I = 1
End If
' Flecha arriba
If KeyCode = 38 Then
I = I - 1
If I < 1 Then I = TotalTab
End If
End If
' Pone el enfoque en el control correspondiente
Me.Controls(Tabulaciones(I, 1)).SetFocus
End If
End Sub
3º En el FORMULARIO elije el evento 'Al abrir' y pon dentro el siguiente código:
Private Sub Form_Open(Cancel As Integer)
Dim I, J, Aux As Integer
' Construye la matriz de controles con los
' Cuadros de Texto con punto de tabulación
TotalTab = 0
For I = 0 To Me.Controls.Count - 1
If Me.Controls(I).ControlType = acTextBox Then
If Me.Controls(I).TabStop Then
TotalTab = TotalTab + 1
Tabulaciones(TotalTab, 1) = I
Tabulaciones(TotalTab, 2) = Me.Controls(I).TabIndex
End If
End If
Next I
' Ordena la matriz por orden de tabulación
For I = 1 To TotalTab - 1
For J = I To TotalTab
If Tabulaciones(I, 2) > Tabulaciones(J, 2) Then
Aux = Tabulaciones(I, 1)
Tabulaciones(I, 1) = Tabulaciones(J, 1)
Tabulaciones(J, 1) = Aux
Aux = Tabulaciones(I, 2)
Tabulaciones(I, 2) = Tabulaciones(J, 2)
Tabulaciones(J, 2) = Aux
End If
Next J
Next I
End Sub
4º En las propiedades del formulario pon a 'Sí' la propiedad 'Tecla de vista previa'
Y con esto ya tienes lo que querías :)
Como puedes ver el código está comentado, pero si hay alguna parte del mismo que no te queda clara me lo dices y te lo explico mejor.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas