Hacer que un TabStrip muestre una ficha inmediatamente al hacer clic
Usando la API mouse_event

Fecha: 11/Dic/2004 (11/12/04)
Autor: Gustavo Alegre (gustavoalegre@speedy.com.pe) 

 


Normalmente en un cuadro de diálogo con fichas (como Propiedades de Pantalla), al hacer clic en alguna de ellas el contenido de la misma se muestra inmediatamente, cosa que no sucede con el control TabStrip de Visual Basic, en el cual la información de la ficha se muestra después que hemos soltado el botón izquierdo del mouse. En este truco vamos a subsanar ese error de diseño utilizando la llamada a la API mouse_event en el evento MouseDown del TabStrip para forzar al mismo a ejecutar el evento Click() antes de soltar el botón izquierdo del mouse.

1. Debemos de crear un TabStrip con la cantidad de fichas que deseemos, y crear una matriz de Frames llamada fraFichas, la cantidad de Frames debe ser igual a la cantidad de pestañas del TabStrip.

2. Pegar este código en el formulario:


Option Explicit

Private Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, _
    ByVal dx As Long, ByVal dy As Long, _
    ByVal cButtons As Long, ByVal dwExtraInfo As Long)

    Private Const MOUSEEVENTF_LEFTUP = &H4

    Private Sub TabStrip1_Click()
    Dim i As Long
    For i = 0 To TabStrip1.Tabs.Count - 1
        fraFichas(i).Visible = False
    Next i
    fraFichas(TabStrip1.SelectedItem.Index - 1).Visible = True
End Sub

Private Sub TabStrip1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
    mouse_event MOUSEEVENTF_LEFTUP, 0&, 0&, 0&, 0&
End Sub

3. Haga clic en el botón "Ejecutar" para probar la aplicación.

 


ir al índice