Contraer paneles

04/06/2006 - 01:35 por Jorge Montenegro | Informe spam
Hola.
Alguien me puede decir como puedo hacer en vb2005 para contraer un panel ,
algo parecido a lo que hace el ToolBox de la interfaz de programación del
Visual Basic 2005, que cuando uno pasa con el mouse por encima se despliega
y cuando uno sale fuera con el mouse se retrae ?.

Busque ayuda por todos lados pero no encuentro algo parecido.
Desde ya gracias.

Jorge Montenegro
Rosario, Argentina

Preguntas similare

Leer las respuestas

#1 Vicente Jama
31/08/2006 - 20:00 | Informe spam
Espero que este ejemplo te sirva ...

Hereda la clase panel .. en mis aplicaciones lo utilizo dentro de un form
Public Class ctlPanel

Inherits System.Windows.Forms.Panel

Public Event Click_Opcion(ByVal TextOpcion As String)

Enum eEstadoMenu

Oculto = 0

Visible = 1

Fijo = 2

EnOpcion = 3

Ocultar = 4

End Enum

Enum eTipoMenu

Izqierda = 0

Derecha = 1

Arriba = 2

Abajo = 3

End Enum

Dim swTipoMenu As eTipoMenu = eTipoMenu.Derecha

Dim swEstadoMenu As eEstadoMenu

Dim Factor As Integer

Dim sw As Integer = 0

Dim iLbl As Integer

Dim iLeftAct As Integer

#Region " Código generado por el Diseñador de Windows Forms "

Public Sub New()

MyBase.New()

'El Diseñador de Windows Forms requiere esta llamada.

InitializeComponent()

'Agregar cualquier inicialización después de la llamada a
InitializeComponent()

Me.Width = 20

Panel1.Dock = DockStyle.Fill

swEstadoMenu = eEstadoMenu.Oculto

Timer1.Interval = 25

Timer2.Interval = 25

Me.Cursor = System.Windows.Forms.Cursors.Hand

'AddHandler MyBase.Controls.Add, AddressOf OnControlAdded

End Sub

'UserControl reemplaza a Dispose para limpiar la lista de componentes.

Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)

If disposing Then

If Not (components Is Nothing) Then

components.Dispose()

End If

End If

MyBase.Dispose(disposing)

End Sub

'Requerido por el Diseñador de Windows Forms

Private components As System.ComponentModel.IContainer

'NOTA: el Diseñador de Windows Forms requiere el siguiente procedimiento

'Puede modificarse utilizando el Diseñador de Windows Forms.

'No lo modifique con el editor de código.

Friend WithEvents Timer1 As System.Windows.Forms.Timer

Friend WithEvents Timer2 As System.Windows.Forms.Timer

Friend WithEvents Panel1 As System.Windows.Forms.Panel

<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()

Me.components = New System.ComponentModel.Container

Me.Timer1 = New System.Windows.Forms.Timer(Me.components)

Me.Timer2 = New System.Windows.Forms.Timer(Me.components)

Me.Panel1 = New System.Windows.Forms.Panel

Me.SuspendLayout()

'

'Timer1

'

'

'Timer2

'

'

'Panel1

'

Me.Panel1.BackColor = System.Drawing.Color.MidnightBlue

Me.Panel1.Dock = System.Windows.Forms.DockStyle.Fill

Me.Panel1.Location = New System.Drawing.Point(5, 5)

Me.Panel1.Name = "Panel1"

Me.Panel1.Size = New System.Drawing.Size(66, 342)

Me.Panel1.TabIndex = 0

'

'ctlPanel

'

Me.BackColor = System.Drawing.Color.LightSteelBlue

Me.Controls.Add(Me.Panel1)

Me.DockPadding.Bottom = 5

Me.DockPadding.Left = 5

Me.DockPadding.Right = 20

Me.DockPadding.Top = 5

Me.Name = "ctlPanel"

'Me.Size = New System.Drawing.Size(96, 352)

Me.ResumeLayout(False)

End Sub

#End Region

Protected Shadows Sub add(ByVal e As System.Windows.Forms.Control)

Me.Controls.Add(e)

End Sub

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Timer1.Tick

Select Case swTipoMenu

Case eTipoMenu.Derecha

Me.Width = Me.Width + (Factor * 50)

Select Case Int(Me.Width / 50)

Case 3

Timer1.Stop()

swEstadoMenu = eEstadoMenu.Visible

Case 0

Timer1.Stop()

Me.Width = 20

swEstadoMenu = eEstadoMenu.Oculto

End Select

Case eTipoMenu.Izqierda

Me.Width = Me.Width + (Factor * 50)

Me.Left = Me.Left + (Factor * -50)

Select Case Int(Me.Width / 50)

Case 3

Timer1.Stop()

swEstadoMenu = eEstadoMenu.Visible

Case 0

Timer1.Stop()

Me.Width = 20

Me.Left = iLeftAct

swEstadoMenu = eEstadoMenu.Oculto

End Select

Case eTipoMenu.Abajo

Me.Height = Me.Height + (Factor * 50)

Select Case Int(Me.Height / 50)

Case 10

'Me.Controls(iLbl).Height = 25

Timer1.Stop()

swEstadoMenu = eEstadoMenu.Visible

Case 0

Timer1.Stop()

Me.Height = 20

Me.Controls(iLbl).Height = 20

swEstadoMenu = eEstadoMenu.Oculto

End Select

Case eTipoMenu.Arriba

Me.Top = Me.Top + (Factor * -50)

Me.Height = Me.Height + (Factor * 50)

Select Case Int(Me.Height / 50)

Case 3

Timer1.Stop()

swEstadoMenu = eEstadoMenu.Visible

Case 0

Timer1.Stop()

Me.Height = 20

Me.Controls(iLbl).Height = 20

swEstadoMenu = eEstadoMenu.Oculto

End Select

End Select

End Sub

Private Sub Me_MouseEnter(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.MouseEnter



If swEstadoMenu = eEstadoMenu.Oculto Then

Factor = 1

Timer1.Start()

End If

End Sub

Private Sub Timer2_Tick(ByVal sender As Object, ByVal e As System.EventArgs)
Handles Timer2.Tick

If swEstadoMenu = eEstadoMenu.EnOpcion Then

Exit Sub

End If

If swEstadoMenu = eEstadoMenu.Visible Then

Exit Sub

End If

If swEstadoMenu = eEstadoMenu.Fijo Then

Exit Sub

End If

Timer1.Start()

Timer2.Stop()

End Sub

Private Sub Panel1_MouseLeave(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Panel1.MouseLeave

'If swTipoMenu = eTipoMenu.Abajo Then

' Exit Sub

'End If

If swEstadoMenu = eEstadoMenu.Fijo Then

Exit Sub

End If

Factor = -1

swEstadoMenu = eEstadoMenu.Ocultar

Timer2.Start()

End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs)

'If swEstadoMenu = eEstadoMenu.Fijo Then

' swEstadoMenu = eEstadoMenu.Visible

' panelOpciones.Dock = DockStyle.None

' Panel1.Visible = True

' 'Splitter1.Visible = False

' panelOpciones.Left = Panel1.Width

' Label2.Width = 5

'Else

' swEstadoMenu = eEstadoMenu.Fijo

' panelOpciones.Dock = DockStyle.Left

' Label2.Width = 0

' 'frmChild.Dock = DockStyle.None

' 'frmChild.Dock = DockStyle.Fill

' Panel1.Visible = False

' 'Splitter1.Visible = True

' 'Splitter1.Dock = DockStyle.Right

'End If

End Sub

Private Sub Opcion_MouseEnter(ByVal sender As Object, ByVal e As
System.EventArgs)

If swEstadoMenu = eEstadoMenu.Fijo Then

Exit Sub

End If

swEstadoMenu = eEstadoMenu.EnOpcion

End Sub

Private Sub Opcion_MouseLeave(ByVal sender As Object, ByVal e As
System.EventArgs)

'swEstadoMenu = eEstadoMenu.Visible

If swEstadoMenu = eEstadoMenu.Fijo Then

Exit Sub

End If

End Sub

Protected Overrides Sub OnDockChanged(ByVal e As System.EventArgs)

'Me.Width = 20

'Select Case Me.Dock

' Case DockStyle.Right

' Panel1.Dock = DockStyle.Right

' panelOpciones.Left = Panel1.Left

' panelOpciones.Width = 0

' panelOpciones.Controls.Item(5).Dock = DockStyle.Left

' sw = 1

' Case DockStyle.Left

' Panel1.Dock = DockStyle.Left

' panelOpciones.Width = 0

' sw = 0

'End Select

'Factor = 1

'swEstadoMenu = eEstadoMenu.Oculto

End Sub

Protected Overrides Sub OnResize(ByVal e As System.EventArgs)

Panel1.Height = Me.Height

End Sub

Public Sub AddOpcion(ByVal TextOpcion As String)

Dim opcButton As New ctlBoton

AddHandler opcButton.MouseEnter, AddressOf Opcion_MouseEnter

AddHandler opcButton.MouseLeave, AddressOf Opcion_MouseLeave

AddHandler opcButton.Click, AddressOf Opcion_Click

opcButton.BackColor = System.Drawing.Color.SteelBlue

opcButton.Cursor = System.Windows.Forms.Cursors.Hand

opcButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat

opcButton.Font = New System.Drawing.Font("Tahoma", 10.0!,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point,
CType(0, Byte))

opcButton.ForeColor = System.Drawing.Color.White

opcButton.Size = New System.Drawing.Size(112, 32)

opcButton.Text = TextOpcion

opcButton.BringToFront()

opcButton.Location = New System.Drawing.Point(10, (Panel1.Controls.Count +
1) * 32)

Panel1.Controls.Add(opcButton)

End Sub

Private Sub Opcion_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs)

RaiseEvent Click_Opcion(CType(sender, ctlBoton).Text)

Me.Width = 20

swEstadoMenu = eEstadoMenu.Oculto

End Sub

Public Property TipoMenu() As eTipoMenu

Get

Return swTipoMenu

End Get

Set(ByVal Value As eTipoMenu)

swTipoMenu = Value

Select Case swTipoMenu

Case eTipoMenu.Abajo

Me.DockPadding.Bottom = 5

Me.DockPadding.Left = 5

Me.DockPadding.Right = 5

Me.DockPadding.Top = 20

Me.Height = 21

Dim l As New Label

l.Text = "Indice"

l.Left = 0

l.Top = 0

l.Width = Me.Width

l.BorderStyle = Windows.Forms.BorderStyle.FixedSingle

l.Height = 20

l.Name = "_lblTitulo"

l.Font = New System.Drawing.Font("Verdana", 10.0!,
System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0,
Byte), True)

AddHandler l.MouseEnter, AddressOf Me_MouseEnter

Me.Controls.Add(l)

iLbl = Me.Controls.GetChildIndex(l)

Case eTipoMenu.Izqierda

Me.DockPadding.Bottom = 5

Me.DockPadding.Left = 20

Me.DockPadding.Right = 5

Me.DockPadding.Top = 5

iLeftAct = Me.Left

Case eTipoMenu.Derecha

Me.DockPadding.Bottom = 5

Me.DockPadding.Left = 5

Me.DockPadding.Right = 20

Me.DockPadding.Top = 5

'iLeftAct = Me.Left

Case eTipoMenu.Arriba

Me.DockPadding.Bottom = 20

Me.DockPadding.Left = 5

Me.DockPadding.Right = 5

Me.DockPadding.Top = 5

End Select

End Set

End Property

Private Sub ctlPanel_ControlAdded(ByVal sender As Object, ByVal e As
System.Windows.Forms.ControlEventArgs) Handles MyBase.ControlAdded

If e.Control.GetType Is GetType(Panel) Then

MyBase.Controls.Add(e.Control)

Exit Sub

End If

If e.Control.Name = "_lblTitulo" Then

MyBase.Controls.Add(e.Control)

Exit Sub

End If

'e.Control.BringToFront()

'MyBase.Controls.Add(e.Control)

Me.Panel1.Controls.Add(e.Control)

End Sub

End Class







"Jorge Montenegro" escribió en el mensaje
news:
Hola.
Alguien me puede decir como puedo hacer en vb2005 para contraer un panel ,
algo parecido a lo que hace el ToolBox de la interfaz de programación del
Visual Basic 2005, que cuando uno pasa con el mouse por encima se
despliega y cuando uno sale fuera con el mouse se retrae ?.

Busque ayuda por todos lados pero no encuentro algo parecido.
Desde ya gracias.

Jorge Montenegro
Rosario, Argentina


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida