|
|
Base de datos : StartUpProperties
| Autor/es: Juan M Afán de Ribera | | Pregunta : ¿Cómo puedo cambiar o crear a través de código las propiedades que aparecen en el Menu | Herramientas | Inicio...? | | Respuesta : Con la función StartUpProperties puedes cambiar/crear cualquier propiedad de inicio de la base de datos. Tiene los siguientes | Argumentos | Argumento | Descripción | | PrpName | Requerido. Nombre de la propiedad que se vaya a cambiar o crear. Para ver una lista de los nombres de estas propiedades de inicio, consultar el cuadro "Propiedades de Inicio" | | PrpValue | Requerido. Valor de la propiedad de inicio que se vaya a cambiar/crear | | DbPath | Opcional. Ruta de la base de datos. Si este argumento se omite o es una cadena vacía ("") se buscará en la base de datos actual. |
| Propiedades de Inicio | Nombre propiedad | Descripción | | StartUpShowDBWindow | Valor de tipo boolean. Presentar la ventana Base de Datos | | StartupShowStatusBar | Valor de tipo boolean. Presentar la barra de estado. | | AllowShortcutMenus | Valor de tipo boolean. Permitir el uso de menús contextuales predeterminados | | AllowFullMenus | Valor de tipo boolean. Permitir el uso de menús no restringidos | | AllowBuiltInToolbars | Valor de tipo boolean. Permitir el uso de barras de herramientas incorporadas | | AllowToolbarChanges | Valor de tipo boolean. Permitir cambios en barras de herramientas y menús | | AllowSpecialKeys | Valor de tipo boolean. Permitir el uso de las teclas especiales de Access | | AllowBypassKey | Valor de tipo boolean. Permitir el uso de la tecla Shift (Mayúsculas) para omitir la macro Autoexec o el formulario de inicio | | AllowBreakIntoCode | Valor de tipo boolean. Permitir interrumpir el código | | HijriCalendar | Valor de tipo boolean. Calendario Hijri | | UseAppIconForFrmRpt | Valor de tipo boolean. Usar como icono Formulario o Informe (a partir de Access XP) | | AppTitle | Valor de tipo string. Título de la aplicación | | StartUpForm | Valor de tipo string. Formulario de inicio de la aplicación | | AppIcon | Valor de tipo string. Ruta y nombre del icono de la aplicación | | StartUpMenuBar | Valor de tipo string. Nombre de la barra de menú de la aplicación | | StartUpShortcutMenuBar | Valor de tipo string. Nombre de la barra de menú contextual |
| La función StartUpProperties devolverá -1 en caso de tener éxito o el número de error que se haya producido.
Existe una particularidad en la propiedad "AppIcon" (icono de la aplicación) y es que cuando esta propiedad se cambia a través de código, Access no comprueba si el archivo de icono existe o no. Esto puede llevar a que esta propiedad contenga una ruta no válida, lo cual provocará que cada vez que se cambie una propiedad por código se necesite abrir de nuevo la base de datos para que se "refresquen" las propiedades.
La función StartUpProperties sí comprueba este detalle, tanto en el caso de que se quiera asociar una ruta de archivo de icono errónea, como en el caso de que esta propiedad, al trasladarse entre PCs, contenga una ruta no válida. En la primera situación StartUpProperties devolverá el número de error 52 (Nombre o número de archivo incorrecto) y en la segunda simplemente borrará la propiedad, ya que ésta puede provocar errores indeseados.
Ejemplo de uso: | ' este ejemplo establecería el título de la aplicación
Dim numError As Long
numError = StartUpProperties("AppTitle", "Título de la aplicación")
If numError = -1 Then
MsgBox "El título de la aplicación ha cambiado"
Else
MsgBox "Error: " & Error(numError)
End If
' este ejemplo establecería el icono de la aplicación
Dim numError As Long
numError = StartUpProperties("AppIcon", "C:\MiIcono.ico")
If numError = -1 Then
MsgBox "El icono de la aplicación ha cambiado"
Else
MsgBox "Error: " & Error(numError)
End If
| | Pega esta función en un módulo estandar | '---------------------------------------------------------
'
' StartUpProperties
'
' Código escrito originalmente por Juan M Afán de Ribera.
' Estás autorizado a utilizarlo dentro de una aplicación
' siempre que esta nota de autor permanezca inalterada.
' En el caso de querer publicarlo en una página Web,
' por favor, contactar con el autor en
'
' accessvbafaq@ya.com
'
' Este código se brinda por cortesía de
' Juan M. Afán de Ribera
'
Function StartUpProperties( _
PrpName As String, _
PrpValue As Variant, _
Optional DbPath As String) As Long
Dim db As Object 'DAO.Database
Dim prp As Object 'DAO.Property
Dim IconPath As Long
Err.Clear
On Error Resume Next
' si la propiedad a cambiar es AppIcon
' comprobamos que la ruta del icono sea válida
If PrpName = "AppIcon" Then
IconPath = Len(Dir(PrpValue))
If IconPath = 0 Then
'Nombre o número de archivo incorrecto
StartUpProperties = 52
Exit Function
End If
End If
On Error GoTo 0
On Error GoTo err_StartUpProperties
If DbPath = "" Then
Set db = CurrentDb
Else
Set db = DBEngine.OpenDatabase(DbPath)
End If
db.Properties(PrpName).Value = PrpValue
db.Properties.Refresh
Err.Clear
On Error Resume Next
' comprobamos que la ruta del icono asociado a la base de datos
' (si es que existe), sea válida. Si no fuera así provocaría que
' la propiedad que se ha cambiado/creado no se refrescara.
IconPath = Len(Dir(db.Properties("AppIcon")))
If IconPath = 0 Then
' borramos la propiedad
db.Properties.Delete "AppIcon"
End If
On Error GoTo 0
Application.RefreshTitleBar
StartUpProperties = -1
exit_StartUpProperties:
Set db = Nothing
Exit Function
err_StartUpProperties:
If Err.Number = 3270 Then 'la propiedad no existe
Select Case PrpName
' Se crea una propiedad tipo booleano
Case "StartUpShowDBWindow", _
"StartupShowStatusBar", _
"AllowShortcutMenus", _
"AllowFullMenus", _
"AllowBuiltInToolbars", _
"AllowToolbarChanges", _
"AllowSpecialKeys", _
"AllowBypassKey", _
"AllowBreakIntoCode", _
"HijriCalendar", _
"UseAppIconForFrmRpt"
Set prp = db.CreateProperty _
(PrpName, DB_BOOLEAN, PrpValue)
db.Properties.Append prp
Set prp = Nothing
' Se crea una propiedad tipo texto
Case "AppTitle", _
"StartUpForm", _
"AppIcon", _
"StartUpMenuBar", _
"StartUpShortcutMenuBar"
Set prp = db.CreateProperty _
(PrpName, DB_TEXT, PrpValue)
db.Properties.Append prp
Set prp = Nothing
Case Else
' la propiedad no existe
StartUpProperties = 3270
Resume exit_StartUpProperties
End Select
Resume Next
' error inesperado
Else
MsgBox "Error: " & Err.Number & vbCrLf & _
Err.Description
StartUpProperties = Err.Number
Resume exit_StartUpProperties
End If
End Function
'---------------------------------------------------------
| Ejemplos: | Temas relacionados: |
|