Esta clase es una versi�n "muy" reducida, que simula el control StatusBar que incluye el Visual Basic en el OCX de los controles para Windows 95.
La raz�n de hacerlo es porque, despu�s de muchas comprobaciones, descubr� que ese control me daba error de automatizaci�n, as� que decid� crearme una clase simple para poder usarlo casi de la misma forma. Realmente s�lo lo he usado en una aplicaci�n: la de mensajer�a interna, que pronto pondr� en l�nea la versi�n "nueva", con icono en la barra de tareas y esas chorradillas.Adem�s de esta clase, tambi�n tengo otra que la uso para simular las solapas (Tabs), ya que el control antes mencionado tambi�n lo incluye y claro, al estar juntos, no me permit�a usarlo, aunque esa "clase de solapas" ya la he usado antes, (y publicado en el Sentinel95), aunque ahora la tengo hecha en una clase... un d�a de estos la publicar�.
Ya te comento que no es ninguna virguer�a, pero que lo hice para no tener que cambiar demasiado c�digo y por supuesto tiene muchas cosas que se pueden mejorar y sobre todo cosas que a�adir para mejorar "la prestaci�n".
Pero por ahora estoy es lo que hay... as� que...Este es el c�digo de las clases: (despu�s te indicar� c�mo usarla)
' '------------------------------------------------------------------ 'cPanel (31/Mar/98) ' 'Descripci�n: ' Clase para simular los paneles de un StatusBar ' '�Guillermo 'guille' Som, 1998 '------------------------------------------------------------------ Option Explicit Private mControl As Control Private mKey As String Private mText As Variant Public Property Get Text() As Variant Text = mText End Property Public Property Let Text(ByVal NewText As Variant) mText = " " & NewText mControl = mText End Property Public Property Get Key() As String Key = mKey End Property Public Property Let Key(ByVal NewKey As String) Static Asignada As Boolean If Not Asignada Then Asignada = True mKey = NewKey End If End Property Public Property Get Control() As Control Set Control = mControl End Property Public Property Set Control(NewControl As Control) Set mControl = NewControl End Property Public Property Get Caption() As Variant Caption = mText End Property Public Property Let Caption(ByVal NewCaption As Variant) 'Esta propiedad es para que haya tambi�n un caption Text = NewCaption End Property' '------------------------------------------------------------------ 'cStatusBar (31/Mar/98) ' 'Descripci�n: ' Clase para simular el control StatusBar ' Se tiene que usar tambi�n la clase cPanel ' '�Guillermo 'guille' Som, 1998 '------------------------------------------------------------------ Option Explicit Dim colPaneles As New Collection Public Function Panels(Optional Index As Variant) As Variant 'Devolver� / asignar� el caption de una de las etiquetas Dim tPanel As New cPanel On Local Error Resume Next If IsMissing(Index) Then Set Panels = colPaneles Else Set Panels = colPaneles(Index) If Err Then Set tPanel = Nothing tPanel.Key = Index colPaneles.Add tPanel, tPanel.Key Set Panels = tPanel End If End If Set tPanel = Nothing Err = 0 End Function Public Sub Nuevo(ByVal sKey As String, unControl As Control) 'A�ade un nuevo Panel Dim tPanel As New cPanel With tPanel .Key = sKey Set .Control = unControl 'Asigna al Text el valor por defecto de este control 'Si es un Label, se asignar� el Caption 'en caso de un TextBox ser� el Text... .Text = unControl colPaneles.Add tPanel, sKey End With Set tPanel = Nothing End Sub Public Sub Add(unControl As Control, ByVal sKey As String) 'Este m�todo est� por compatibilidad 'F�jate que se usa al rev�s que Nuevo: 'Primero el Objeto y luego la Clave Nuevo sKey, unControl End SubLa forma de usarla es muy simple:
A�ade las clases cPanel y cStatusBar al proyecto.
A�ade un array de etiquetas o textboxes que har�n las veces del panel (realmente ser� donde se muestre el mensaje que quieras)Declara una variable cStatusBar en el form en el que vayas a usarla:
Dim StatusBar1 As cStatusBarEn el Form_Load le das vida a la nueva variable, asign�ndola para que apunte a un nuevo objeto de este tipo:
Set StatusBar1 = New cStatusBarA la hora de descargarse el formulario, en el Form_UnLoad hay que quitarla de la memoria:
Set StatusBar1 = NothingPara asignar los "paneles", se har� normalmente en el evento Load, usa cualquiera de las dos formas que se muestran a continuaci�n.
En este ejemplo se supone que el control que vamos a usar en el form para simular los paneles del StatusBar es :lblStatusBar, que ser� un array con los paneles que vamos a usar:' With StatusBar1 .Nuevo "Status", lblStatusBar(0) .Nuevo "Mensajes", lblStatusBar(1) '.Nuevo "Nuevos", lblStatusBar(2) 'Tambi�n se permite .Add lblStatusBar(2), "Nuevos" End With ' 'Cuando quieras usarlo, por ejemplo para asignar un nuevo "contenido" en uno de los paneles: ' StatusBar1.Panels("Status") = sItemComo ves no tiene ninguna complicaci�n y tampoco hace mucho por ayudarnos, ya que tendr�s que "situarlas" manualmente en el sitio que quieras.
Normalemente suelo colocar las etiquetas en un pictureBox (u otro contenedor), le asigno la propiedad Align=Botton, para que se situe en la parte baja del formulario y en el evento Resize situo las etiquetas.
En este caso el contenedor es un PictureBox que se llama picStatus.'Aqu� ya tengo calculados los tama�os y se ajustan autom�ticamente cuando se redimensiona Private Sub picStatusBar_Resize() If WindowState <> vbMinimized Then 'Posicionar los lblStatusBar 1 y 2 lblStatusBar(2).Left = picStatusBar.ScaleWidth - 1140 lblStatusBar(1).Left = lblStatusBar(2).Left - 1155 lblStatusBar(0).Width = picStatusBar.ScaleWidth - 2370 End If End SubEspero que te pueda ser �til, en otra ocasi�n veremos c�mo usar y configurar la clase cSolapa (Tabs)
Nos vemos
Guillermo