Captura de datos según origen evento

Me gustaría hacerte una pregunta que no se si es posible de implementar.
Tengo un formulario con 10 campos de hora corta, los tengo bloqueados para que no los modifiquen por error.
Me gustaría que al hacer doble click en cualquiera de los campos, me abriese un formulario con un cuadro de texto donde capturar la hora que va a modificar y dos botones Aceptar Cancelar.
Lo que quisiera, es que desde ese mismo formulario pueda modificar la hora de cualquiera de los 10 campos, dependiendo de campo que ha generado el evento.
Se que lo más sencillo sería que al hacer doble click, me desbloquease ese campo y modificarlo desde ese mismo formulario, pero entonces no habría tiempo de arrepentirse.

1 Respuesta

Respuesta
1
Sobre tu pregunta te hago inicialmente un comentario. Ambas maneras de proceder son posibles. Si prefieres hacerlo en el mismo formulario no es necesario que el doble click de entrada permita editar el campo bloqueado. Puedes presentar inicialmente un cuadro de mensaje preguntando al usuario si desea desbloquear el campo. Si presiona el botón Sí se desbloquea y si presiona No o cierra el cuadro de mensaje el campo sigue bloqueado. Te adjunto el código que podría valerte.
Private Sub Texto1_DblClick(Cancel As Integer)
Dim msg As String, title As String, estilo, miRespuesta
msg = "¿Está seguro de que desea...?"
estilo = vbOKCancel + vbQuestion + vbDefaultButton2
title = "Control de desbloqueo de campos"
miRespuesta = MsgBox(msg, estilo, title)
If miRespuesta = vbOK Then
'código de desbloqueo...
End If
End Sub
SI prefieres el otro método debes de dar de alta una variable que este accesible para toda la aplicación. La defines en un módulo independiente y en ella guardas el nombre del campo para preguntar si quiere desbloquearlo. En el evento doble click de los campos lo primero que haces es asignar a esa variable el nombre del campo y luego abres el formulario emergente y asignas a un control la hora de ese campo. Si presiona Aceptar, el botón asignará la hora que esté en el control al campo sobre el que se hizo doble click (esto es sencillo ya que tenemos su nombre guardado en la variable). Si no simplemente lo cierras y llevas el enfoque a donde desees.
Esta segunda forma es también posible, pero si simplemente la usas con la misma funcionalidad que la primera estás 'agrandando' el archivo innecesariamente. Otra cuestión es que en el formulario emergente presentases más opciones, información..., pero si realmente vas a hacer lo mismo es mejor no crear objetos no necesarios.
Cordiales saludos.
Muchas gracias por tu respuesta, la verdad es que ni se me había ocurrido crear una variable pública para solucionar el problema, pero creo que es una gran solución.
Un saludo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas