Colabora
 

Creando un control del tipo Menú contextual para VB6

Publicado: 24/Jul/2007 (18/07/2007)
Autor: Fabián Chialli

 

 

Introducción

Ante los repetidos dolores de cabeza que se me han presentado al querer implementar menu contextuales en mis proyectos, me decidí a desarrollar este control de usuario para vb6 en base a un ListView, casi sin utilizar APIs.

 

Cómo funciona el control

Cómo mencioné en la introducción, el control utiliza como elemento fundamental un ListView. Permite agregar items especificando el texto, una imagen enlazada a un ImageList, un tag para guardar información adicional por cada item, y si el item está "bloqueado" (entre comillas porque establezco la propiedad ghosted del listview en true y cambio el forecolor.).

El método que permite mostrar el Menu (método Show) recibe dos parámetros que representan la posición donde debe aparecer. El control se redimensiona automáticamente al momento de mostrarlo y se ubica en pantalla en una posicion correcta en relación al tamaño del contenedor. Además, envía eventos al cliente, como por ejemplo para informar de un click en alguno de los items.

 

El código:

A continuación sigue un fragmento de código que ejemplifica el uso del control. El código completo, incluído el del control, está en los archivos adjuntos:

Private Sub Form_Load()
    'Agrega items al Menu, especificando si es necesario la imagen 
, el tag y si esta bloqueado. Setea el ImageList asociado
With Menu_ListView1 .setImgList Me.ImageList1
.addItem_Menu "Esta es la Primer Opcion ", "Item 1", 1
.addItem_Menu "Esta es otra Opcion", "Item 1", 2
.addItem_Menu "Opcion 3"
.addItem_Menu "Esta es la Opcion número 4 ", , 3
.addItem_Menu "Una Opcion más pero esta bloqueda", , , True
End With End Sub
        Private Sub Form_MouseUp(Button As Integer, Shift As Integer)
        If  Button = vbRightButton Then 
             Menu_ListView1.Show X, Y
        End If  
        End Sub  
    
        Private Sub Menu_ListView1_Click()
         If   Menu_ListView1.SelectedItem_Ghosted Then 
             MsgBox "Seleccionaste la Opcion " & _
                        CStr(Menu_ListView1.getSelectedItem_Index) & _
                 " pero está bloqueda"
        Else 
             MsgBox "Seleccionaste la Opcion " & _
                 CStr(Menu_ListView1.getSelectedItem_Index) & Chr(13) & _
               "El tag del Item es: " & _
                Menu_ListView1.getSelectedItem_Tag   
        End If 
        End Sub
    

Fabi_contextmenu_vb6

 


Código de ejemplo (comprimido):

 

Fichero con el código de ejemplo: Fabi_Menu_ListView.rar - 34 KB

(MD5 checksum: 51F9601B7F30F1B574B0ED82F01E6D42)

 


Ir al índice principal de el Guille