Microsoft Access – Cambiar Icono a cada Formulario usando VBA

Access_Iconos_Formularios

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»:

Access Iconos Formularios 2

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

2 comentarios

  1. 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

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.