Sección de controles Ocx para Visual basic , Dll , Activex

217 - cImage Button

<Volver> - Anterior - Siguiente



 

cImageButton

 

cImageButton es un módulo de clase muy útil para poder asignar y establecer íconos a los controles CommandButton cuando se utiliza la aplicación con un archivo .Manifest.

El módulo no necesita referencias, ni siquiera el windows CommonControls para uso del ImageList, ya que utiliza el api ImageList_Create y otras relacionadas, contenidas en la librería comctl32.dll utilizadas para asociar los gráficos para el botón.

 

Descargar proyecto

Código fuente y ejemplo

Autor : Leandro Ascierto

 

 


Capturas de pantalla

Descripción

Para poder establecer las imágenes a los Command Buttons se debe crear una instancia de la clase para cada uno de los botones. (Se puede declarar un array de la clase para que se mas cómodo.)

Luego tiene dos funciones, la función Init para iniciar e indicarle el tamaño del icono. Si no se indica este argumento se cargará la imagen de 16x16 pixeles. Luego con el método Implement, se le debe indicar dos parámetros obligatorios: El hwnd del botón, y el path de la imagen normal.

Option Explicit

' declarar instancia
Dim cImgB As New cImageButton

Private Sub Form_Load()
    
    With cImgB
        ' cargar imagen de 32 pixeles
        Call cImgB.Init(32, 32)
        ' pasar el handle y la ruta
        Call .Implement(Command1.hwnd, "Ruta del archivo de ícono")
    End With
    
End Sub

Los demás parámetros opcionales son para las demás imágenes ( MousOver, MouseDown y deshabilitado) , para los márgenes , y para la alineación del ícono en el botón. Si se quiere cargar el ícono desde un archivo de recursos, de debe pasar en el último parámetro el valor True, y en el parámetro "Normal" el identificador del recurso.

Nota : El ejemplo tiene algunos fallos, por ejemplo si se ejecuta desde el IDE y no se encuentra los temas de windows presentes, los botones deshabilitados, no se redibujan bien ( aunque este no sería un problema y que ocurre solo desde el IDE)

Aunque si se ejecuta compilado, se ve correctamente los botones deshabilitados, pero si se utiliza texto superpuesto con la imagen , el fondo del texto no se muestra con la transparencia,( como se ve en esta imagen )

Otra cosa es que si se utilizan varias imágenes para los distintos estados del mouse, solo funcionará si se encuentra activado el tema de windows, ya que si no solo se visualizará la imagen normal por mas que se hayan indicado las demás en la función Implement.

 


Relacionados

 

 


Buscar en Recursos vb con Google