Como se puede desactivar la tecla shift [para desactivar los formularios de inicio] con código. Supongo que se coloca en el formulario inicio en forma de ¿modulo? ¿Evento?. Si es en modulo como se hace.
Respuesta de aisberg
2
2
aisberg, Shareware, software, drivers, sistemas operativos windows
Una de las primeras preocupaciones de todos los que desarrollan aplicaciones en Access es garantizar que el usuario vea apenas los formularios concernientes a la aplicación, impidiendo acceder a la ventana de base de datos" (la inter fase de Access). Para ello, debe ser desmarcada la opción "exhibir ventana base de datos" en el cuadro Inicio (Menú Herramientas, opción Inicio...), establecer un formulario como inicial y crear barras de herramientas y menús personalizados para reemplazar los predeterminados de Access. Si usted ya está "casi terminando" una aplicación, debe tener estudiado lo suficiente para saber que esas opciones de inicio pueden ser evitadas ("pasadas") si, al comenzar la aplicación, el usuario mantiene presionada la tecla Shift. Por ello, es una pregunta frecuente en los foros como hacer para trabar la tecla Shift. Ello es fácil. Existe la ya famosa función "AlterarPropriedade", la cual les brindo abajo: Public Function AlterarPropriedade(strPropName As String, varPropType As Variant, varPropValue As Variant) As Integer Dim dbs As Database, prp As Property Const conPropNotFoundError = 3270 Set dbs = CurrentDb On Error GoTo Change_Err dbs.Properties(strPropName) = varPropValue AlterarPropriedade = True Change_Bye: Exit Function Change_Err: If Err = conPropNotFoundError Then ' Propiedad no ha sido localizada. Set prp = dbs.CreateProperty(strPropName, varPropType, varPropValue) dbs.Properties.Append prp Resume Next Else ' Error desconocido. AlterarPropriedade = False Resume Change_Bye End If End Function Adicione esa función en un módulo general y haga una llamada a ella en el evento Al Abrir del formulario establecido como inicial de su aplicación: AlterarPropriedade "AllowBypassKey", dbBoolean, False Ahora, abra la aplicación una vez sin presionar la tecla Shift y de ahí para adelante ella no funcionará más. Ahora le hago la siguiente pregunta: ¿Y si usted precisa modificar la estructura de su aplicación? Segundo, el help de Access dice: "Usted debe verificar que la propiedad AllowBypassKey esté definida como True cuando depure la aplicación ". ¿Y cuándo es que usted acaba de depurar una aplicación? Yo, por ejemplo, no acabo de depurar ningún de los que ya construí hasta hoy. De esa forma, es necesario guardar una copia de la aplicación con la línea de comando descrita arriba sin funcionamiento ("comentada"). Esa copia es la que será usada siempre que usted precise hacer modificaciones en la estructura (para ser creativos y originales, vamos llamar esa copia de "master"). Después de hacer las extremas modificaciones, usted precisa grabar esa copia "master", crear una copia con la línea válida y abrirla por lo menos una vez antes de entregarla al usuario. Usted, como yo, ¿debe hallar eso muy arriesgado (ya pensó si usted se olvidó de guardar la "master" con la línea "comentada"?). Su aplicación quedará "deshabilitada". Entonces, yo le presento una solución para ello, o sea, deshabilitar la tecla Shifit sin deshabilitar la aplicación. Para utilizarla, es necesario que la aplicación tenga la "seguridad a nivel de usuario". En este caso, basta añadir el siguiente código en el evento Al Abrir del formulario de inicio: If CurrentUser() <> "xxxxx" Then AlterarPropriedade "AllowBypassKey", dbBoolean, False Else AlterarPropriedade "AllowBypassKey", dbBoolean, True End If Donde "xxxxx" es el nombre de un usuario del grupo que tiene todas los permisos de acceso (Administradores, por ejemplo). De esta forma, si es ese el usuario que está "logando", la propiedad "AllowBypassKey" será definida como True, tornando la tecla Shift nuevamente activa. Pero ello, obviamente, sólo funcionará la próxima vez que la aplicación se abra. Suerte