Option Explicit 'Obliga a visual Basic a reconocer solo las variables que esten en declaradas
Private Type Telefono
Nombre As String
Direccion As String
Telefono As String
Nota As String
Borrado As Boolean
End Type
Dim Telefonos() As Telefono, N As Integer, Actual As Integer
Dim Editar As Boolean 'Esta variable se pone a True cuando se Edita un registro
'este procedimiento habilita y desabilita cajas de texto
'si se quiere habilitar o desabilitar botones se cambia la palabra textbox por commandbutton , etc..
Private Sub activar_desactivar_cajas(Activar As Boolean)
Dim control As Variant
For Each control In Controls
If TypeOf control Is TextBox Then
control.Enabled = Activar
End If
Next control
End Sub
Private Sub activar_desactivar_Botones(Activar As Boolean)
Dim control As Variant
For Each control In Controls
If TypeOf control Is CommandButton Then
control.Enabled = Activar
End If
Next control
End Sub
Private Sub Limpiar_cajas()
Dim control As Variant
For Each control In Controls
If TypeOf control Is TextBox Then
control.Text = ""
End If
Next control
End Sub
Private Sub cmdanterior_Click()
If N = 0 Then Exit Sub
Actual = Actual - 1
If Actual = 0 Then Exit Sub
If Actual < 1 Then
Actual = 1
End If
While Telefonos(Actual).Borrado = True
Actual = Actual - 1
Wend
CargarDatos
End Sub
Private Sub cmdborrar_Click()
Dim Respuesta As Integer
Respuesta = MsgBox("¿Esta seguro de querer borrar este registro?", vbQuestion + vbYesNo, "Borrar")
If Respuesta = vbYes Then
Telefonos(Actual).Borrado = True
End If
End Sub
Private Sub cmdbuscar_Click()
Dim Buscado As Integer, NombreBuscado As String
NombreBuscado = InputBox("Ingrese el Nombre a buscar:", "Buscar")
For Buscado = 1 To N
If Telefonos(Buscado).Nombre Like NombreBuscado Then
Actual = Buscado
If Telefonos(Actual).Borrado = True Then
MsgBox "Este registro se ha borrado.", vbCritical, "Buscar"
Exit Sub
End If
CargarDatos
Exit For
End If
Next Buscado
If Buscado > N Then
MsgBox "No se encontro el registro con este nombre.", vbExclamation, "Buscar"
End If
End Sub
Private Sub cmdcancelar_Click()
If Editar = False Then
If N > 0 Then
Actual = 1
End If
End If
activar_desactivar_cajas False 'activar las cajas de textos
If N = 1 Then
activar_desactivar_Botones False
cmdnuevo.Enabled = True
cmdeditar.Enabled = True
cmdborrar.Enabled = True
Else
activar_desactivar_Botones True
End If
cmdgrabar.Enabled = False
cmdcancelar.Enabled = False
Editar = False
If N = 0 Then
Limpiar_cajas
activar_desactivar_Botones False
cmdnuevo.Enabled = True
Exit Sub
End If
CargarDatos
End Sub
Private Sub cmdeditar_Click()
activar_desactivar_cajas True 'activar las cajas de textos
activar_desactivar_Botones False
cmdgrabar.Enabled = True
cmdcancelar.Enabled = True
Editar = True
Txtnombre.SetFocus
End Sub
Private Sub cmdfinal_Click()
If N = 0 Then Exit Sub
Actual = N
CargarDatos
End Sub
Private Sub cmdgrabar_Click()
If Editar = True Then 'Se esta editando el registro
With Telefonos(Actual)
.Nombre = Txtnombre.Text
.Direccion = txtDireccion.Text
.Telefono = txttelefono.Text
.Nota = txtnotas.Text
End With
Editar = False
Else 'Es un nuevo registro
N = N + 1
ReDim Preserve Telefonos(1 To N)
With Telefonos(N)
.Nombre = Txtnombre.Text
.Direccion = txtDireccion.Text
.Telefono = txttelefono.Text
.Nota = txtnotas.Text
End With
Actual = N
End If
activar_desactivar_cajas False 'activar las cajas de textos
If N = 1 Then
activar_desactivar_Botones False
cmdeditar.Enabled = True
cmdborrar.Enabled = True
cmdnuevo.Enabled = True
Else 'Hay mas de un registro
activar_desactivar_Botones True
End If
cmdgrabar.Enabled = False
cmdcancelar.Enabled = False
End Sub
Private Sub cmdnuevo_Click()
activar_desactivar_cajas True 'activar las cajas de textos
activar_desactivar_Botones False
cmdgrabar.Enabled = True
cmdcancelar.Enabled = True
Txtnombre.SetFocus
Limpiar_cajas
End Sub
Private Sub CargarDatos() 'LLenar las cajas con los datos corespondientes
With Telefonos(Actual)
Txtnombre.Text = .Nombre
txtDireccion.Text = .Direccion
txttelefono.Text = .Telefono
txtnotas.Text = .Nota
End With
End Sub
Private Sub cminicio_Click()
If N = 0 Then Exit Sub 'No hay registros guardados
Actual = 1
While Telefonos(Actual).Borrado = True
Actual = Actual + 1
Wend
CargarDatos
End Sub
Private Sub CmdSiguiente_Click()
If N = 0 Then Exit Sub
Actual = Actual + 1
If Actual > N Then
Actual = N
End If
CargarDatos
End Sub
Private Sub Form_Load()
activar_desactivar_cajas False
End Sub
Private Sub txtDireccion_GotFocus()
txtDireccion.BackColor = &H80000003
End Sub
Private Sub txtDireccion_LostFocus()
txtDireccion.BackColor = &H8000000E
End Sub
Private Sub txtnombre_GotFocus()
Txtnombre.BackColor = &H80000003
End Sub
Private Sub Txtnombre_KeyPress(KeyAscii As Integer)
If KeyAscii = vbKeyReturn Then
txtDireccion.SetFocus
End If
End Sub
Private Sub Txtdireccion_KeyPress(KeyAscii As Integer)
If KeyAscii = vbKeyReturn Then
txttelefono.SetFocus
End If
End Sub
Private Sub Txttelefono_KeyPress(KeyAscii As Integer)
If KeyAscii = vbKeyReturn Then
txtnotas.SetFocus
End If
End Sub
Private Sub Txtnotas_KeyPress(KeyAscii As Integer)
If KeyAscii = vbKeyReturn Then
cmdgrabar.SetFocus
End If
End Sub
Private Sub txtnombre_LostFocus()
Txtnombre.BackColor = &H8000000E
End Sub
Private Sub txtnotas_LostFocus()
txtnotas.BackColor = &H8000000E
End Sub
Private Sub txttelefono_GotFocus()
txttelefono.BackColor = &H80000003
End Sub
Private Sub txttelefono_LostFocus()
txttelefono.BackColor = &H8000000E
End Sub
Private Sub txtnotas_GotFocus()
txtnotas.BackColor = &H80000003
End Sub