Muchas veces queremos darle un entorno más profesional a nuestras aplicaciones y esa profesionalidad puede verse en los pequeños detalles. Con este sencillo tutorial os quiero hacer ver cómo podemos personalizar el icono de cada formulario que abramos en nuestra aplicación. Lo primero de todo es contar con un número de iconos que intenten representar lo que se va a mostrar en dicho formulario. Como sugerencia os puedo recomendar la web www.iconfinder.com donde encontraréis cientos de iconos para vuestras aplicaciones.
Lo primero que debemos hacer es poner en un Módulo el siguiente código:
Option Compare Database Option Explicit ' Code Courtesy of ' Klaus Probst Public Declare Function LoadImage Lib "user32" _ Alias "LoadImageA" (ByVal hInst As Long, ByVal lpsz As String, ByVal un1 As Long, ByVal n1 As Long, _ ByVal n2 As Long, ByVal un2 As Long) As Long Public Declare Function SendMessage Lib "user32" _ Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long Public Const WM_GETICON = &H7F Public Const WM_SETICON = &H80 Public Const ICON_SMALL = 0 Public Const ICON_BIG = 1 '// LoadImage() image types Public Const IMAGE_BITMAP = 0 Public Const IMAGE_ICON = 1 Public Const IMAGE_CURSOR = 2 Public Const IMAGE_ENHMETAFILE = 3 '// LoadImage() flags Public Const LR_DEFAULTCOLOR = &H0 Public Const LR_MONOCHROME = &H1 Public Const LR_COLOR = &H2 Public Const LR_COPYRETURNORG = &H4 Public Const LR_COPYDELETEORG = &H8 Public Const LR_LOADFROMFILE = &H10 Public Const LR_LOADTRANSPARENT = &H20 Public Const LR_DEFAULTSIZE = &H40 Public Const LR_LOADMAP3DCOLORS = &H1000 Public Const LR_CREATEDIBHeader = &H2000 Public Const LR_COPYFROMRESOURCE = &H4000 Public Const LR_SHARED = &H8000 Public Function SetFormIcon(hwnd As Long, IconPath As String) As Boolean Dim hIcon As Long hIcon = LoadImage(0&, IconPath, IMAGE_ICON, 16, 16, LR_LOADFROMFILE) '// wParam = 0; Setting small icon. wParam = 1; setting large icon If hIcon <> 0 Then Call SendMessage(hwnd, WM_SETICON, 0, ByVal hIcon) SetFormIcon = True End If End Function
Ahora en los formularios que deseemos que se muestre un icono al abrirlo debemos poner el siguiente código dentro de propiedades, en el evento «Al activar registro»:
Private Sub Form_Current() SetFormIcon hwnd, CurrentProject.path & "\Iconos\Grupos.ico" 'Llamo al módulo para que me abra el icono en 'la ruta que le indico y el nombre del icono a mostrar. End Sub
Puedes descargarte el ejemplo en el siguiente enlace de DropBox
¿Se puede usar este mismo código para Access 2017 de 64 bits?
Sí se puede para 64 bits, agregue «PtrSafe» después Declare y antes de Function (Sin comillas)
en las dos líneas.
Public Declare PtrSafe Function LoadImage Lib «user32» _
Public Declare PtrSafe Function SendMessage Lib «user32» _
Listo