Access - Desbloquear formulario mediante un Doble Click en el mismo

 
Vista:

Desbloquear formulario mediante un Doble Click en el mismo

Publicado por Fofitólogo (27 intervenciones) el 20/03/2020 11:43:00
Hola,

Tengo una base de datos Access, con su respectivo formulario.
Para proteger los distintos datos de los cuadros de texto, cuadros combinados, etc que componen el formulario, hice que se bloqueara cuando se cumplen algunos requisitos. Por ejemplo, cambiar a otro registro es uno de ellos.

Habilité ya una forma de desbloquearlo con un cuadro combinado en el que el usuario puede elegir "Bloqueado/Desbloqueado" para editar los datos de los campos.

--Si se puede me gustaría que el usuario cuando diera Doble Click en una zona despejada del formulario, desbloqueara el mismo también el formulario para lo mismo.

--Comentar de paso que para bloquear y desbloquear el formulario lo que hago es bloquear o desbloquear uno a uno cada campo de los editables por el usuario (Me.Campo1.Locked=True , Me.Campo2.Locked=True...para bloquear o Me.Campo1.Locked=False para desbloquear) ya que no he descubierto como bloquear o desbloquear el formulario en su conjunto.
No sé si estoy haciendo más labor y metiendo más código del necesario.

Agradezco cualquier ayuda con esto.
Saludos.
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

Desbloquear formulario mediante un Doble Click en el mismo

Publicado por Anonimo (1660 intervenciones) el 20/03/2020 14:12:23
Solo se necesita activar la opción (del formulario y en su vista diseño) que se titula 'Tecla de vista previa'.

Esta opción permitirá que primero pasen por 'el filtro' del formulario, todas las interactuaciones del usuario y si se cumplen (sea una combinación de teclas o del ratón) las condiciones se les de prioridad.

Sobre la forma de programar … se pueden crear bucles e investigar /tratar a los objetos por conjuntos o uno a uno (uno a uno es la forma de tener mayor control).

Yo personalmente crearía una rutina (una SUBfunción) con un único parámetro (true/false) y la utilizaría allá donde fuera de interés así (asumiendo que se la denominase 'Bloquear'):

1
2
3
4
5
Private Sub Bloquear (MControl as Boolean)
Me.Campo1.Locked = MControl ' aplica un true o false
..
Me.CampoNN.Locked= Not MControl  ' aplica lo opuesto a lo que se el indique en MControl
End Sub


Tras ello se utilizaría así:
Bloquear True
Bloquear False
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

Desbloquear formulario mediante un Doble Click en el mismo

Publicado por Fofitólogo (27 intervenciones) el 20/03/2020 18:44:48
Hola,

Gracias por la respuesta.

En principio me quiero centrar en lo del DobleClick, lo de utlizar la subrutina para los bloqueos/desbloqueos me parece interesante pero lo dejo para hacerlo así quizá más adelante. De momento sigo con los bloqueos y desbloqueos mediante el sistema Me.Campo1.Locked=True o False, tal como los tengo ya programados para otros "eventos"

Ciñéndonos en lo del DobleClick y teniendo en cuenta lo que me dices, en las propiedades del formulario en eventos he habilitado el parámetro "Tecla de Vista Previa" (SÍ)

Después y desde mi ignorancia en el código coloco esto:

1
2
3
4
5
Private Sub Form_DblClick(Cancel As Integer)
Me.Campo1.Locked = False
Me.Campo2.Locked = False
....
End Sub

pretendiendo que se desbloqueen los campos (en un registro del formulario en el que ya están bloqueados previamente) al hacer doble click en un área vacía del formulario.
Pero... no pasa nada, los campos siguen sin poder editarse.

¿Debería utilizar alguna otra parte del código o hacer alguna otra cosa?.
Agradezco cualquier luz sobre esto.
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
sin imagen de perfil
Val: 495
Plata
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Desbloquear formulario mediante un Doble Click en el mismo

Publicado por miguel (237 intervenciones) el 22/03/2020 00:13:33
una opcion que puede funcionar es:
en vez de bloquear los campos uno a uno puedes bloquear con la opcion
1
2
3
4
.AllowAdditions = false
.AllowEdits = false
.AllowDeletions = false
End With

y cuando quieras desbloquear haciendo doble click en cualquier sitio de pantalla en el evento al hacer doble click del formulario y del detalle del formulario tienes que poner
1
2
3
4
.AllowAdditions = True
.AllowEdits = True
.AllowDeletions = True
End With

tanto el bloqueo como el desbloqueo afecta a todos los campos y desplegables del formulario.
creo que puede funcionar, he hecho una prueba y funciona pero claro sin conocer tu formulario.
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

Desbloquear formulario mediante un Doble Click en el mismo

Publicado por Fofitólogo (27 intervenciones) el 22/03/2020 09:29:36
Hola, miguel
Gracias por la respuesta, aunque no ha funcionado.
Prefiero olvidarme de lo de "la forma de bloquear el formulario", ya que entre otras cosas he visto que puede ser más práctico bloquear y desbloquear los campos por separado tal como los tengo y como me sugerió el anterior colaborador Anonimo.
En su día lo hice así por algo, pero no lo recordaba. Y creo que ahora mismo no hace más que desviar el tema.
Yo mismo lo he provocado mezclando dos preguntas en una.
Pero esa parte de la pregunta para mí no es un problema ya que sé cómo hacerlo (será de forma mejor o peor implementada, pero me funciona como quiero)

Me vuelvo a centrar en a mi pregunta del asunto, desbloquear el formulario mediante dobleClick.
Yo también he probado con un formulario básico que acabo de crear. Y a mí no me funciona.

Quizá la pregunta que podía haber hecho sería más genérica aún, algo así como CÓMO HACER QUE AL DAR EL USUARIO DOBLE CLICK EN UNA PARTE VACÍA DEL FORMULARIO SE CAMBIE UNA PROPIEDAD

Por ejemplo pruebo con otra característica como cambiar el tamaño del resalte de los bordes de un campo.

Esto es lo que pongo (en un formulario básico recién creado con un solo campo de una tabla):

Private Sub Form_DblClick(Cancel As Integer)

Me.Campo1.BorderWidth = 3

End Sub

y no hace nada (al hacer Doble Click en una parte vacía del formulario)

Sospecho que este evento no se usa así o al menos no de esta forma.

P.D. Comentar que en este formulario básico recién creado también he puesto activa la opción de "Tecla de vista previa"
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
sin imagen de perfil
Val: 495
Plata
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Desbloquear formulario mediante un Doble Click en el mismo

Publicado por miguel (237 intervenciones) el 22/03/2020 14:43:49
Hola, te adjunto un pequeño programa de prueba para que veas que funciona, hay dos formularios, uno que edita los datos de una tabla clientes en formato columna, es decir, un registro en cada pantalla y otro en formato tabular, es decir, enseña varios registros en pantalla.
Los dos formularios funcionan, por defecto estan los registros bloqueados, al hacer dobleclick en una zona libre de pantalla el registro se libera y se puede modificar y eliminar pero al pasar al siguente registro se vuelve a bloquear.
Puedes ver lo que he hecho en la vista diseño en los eventos al activar registro, al hacer dobleclick en las propiedades del formulario, de la cabecera, del detalle y del pie.
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

Desbloquear formulario mediante un Doble Click en el mismo

Publicado por Fofitólogo (27 intervenciones) el 23/03/2020 13:47:39
Hola,
Muchas gracias por el programa de prueba...un ejemplo vale más que mil palabras.

Gracias a él he podido ver que hay un espacio específico para el Detalle, Encabezado, Pie de página. En mi formulario la zona en la que tiene posibilidad de hacer click el usuario es la del Detalle.

Colocando mi código de los desbloqueos en la sección de eventos Private Sub Detalle_DblClick, es como me responde a los Doble Clicks para desbloquear. Ahora sólo me queda perfilar el resto del código para que funcione como quiero, para bloqueos y desbloqueos. Pero el dilema que me mantenía atascado ya está solucionado.

Veo que en tu ejemplo también utilizas la sección del Formulario (Private Sub Form_DblClick) que a mí no me respondía. Me queda la duda de para qué sirve, teniendo en cuenta que poniendo ahí el código sólamente no me respondía. Desde mi ignorancia parece que haría referencia al Formulario al completo, pero se ve que no es así.
¿Debería también poner el mismo código que en la zona que realmente me responde, que es la de Private Sub Detalle_DblClick, tal como has puesto tú en el ejemplo?
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
sin imagen de perfil
Val: 495
Plata
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Desbloquear formulario mediante un Doble Click en el mismo

Publicado por miguel (237 intervenciones) el 23/03/2020 14:34:57
para evitar que no funcione no cuesta nada ponerlo en todas las secciones y asi te aseguras.
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

Desbloquear formulario mediante un Doble Click en el mismo. Solucionado

Publicado por Fofitólogo (27 intervenciones) el 23/03/2020 14:40:51
Ok, gracias miguel
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