Colabora |
Creando un control del tipo Menú contextual para VB6Publicado: 24/Jul/2007 (18/07/2007)
|
IntroducciónAnte 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 controlCó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 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
|
Código de ejemplo (comprimido): |
Fichero con el código de ejemplo:
Fabi_Menu_ListView.rar - 34 KB
|