[Codigo] Un spliter basico para nuestros proyectos

Iniciado por yovaninu, 26 Junio 2009, 07:10 AM

0 Miembros y 1 Visitante están viendo este tema.

yovaninu

Aqui les dejo un pequeño Spliter para sus proyectos, lo hize ya que lo necesitaba para mi proyecto y pues me parecio buena idea compartirlo con vosotros, sé que hay muchos en la red y obviamente mejores que éste pero se que a alguien le interesara el code para a partir de alli mejorarlo y/o completarlo.

El spliter que les comparto es uno horizontal, es decir derecha-izquierda, falta aun el vertical  y espero que alguien lo haga y lo comparta tambien, sino ya lo posteo cuando lo termine,.

En el ejemplo estoy redimensionando 2 Text (Text1 y Text2) y como Delimitador estoy usando un Label, claro que podria usar otros controles.

Es importante que la propiedad MousePointer del control que actuara como Delimitador este a (9 - Size WE) para que se vea mejor y un poco mas intuitivo.

Aqui va un ejemplo del diseño:


El control Label que es el Delimitador tiene como Nombre LBLDelim y este es su codigo:
Código (vb) [Seleccionar]

Private Sub LBLDelim_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
MOVER = True
End Sub

Private Sub LBLDelim_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If MOVER = True Then
    LBLDelim.Left = LBLDelim.Left + X
    SpliterWiz Text1, Text2, LBLDelim
End If
End Sub

Private Sub LBLDelim_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
MOVER = False
End Sub

MOVER ponerlo como Boolean en General

Mientras que el Sub que se encarga del redimensionado es:
Código (vb) [Seleccionar]

Sub SpliterWiz(ControlI As Control, ControlD As Control, Delimitador As Control)
    On Error GoTo ErrorSpliter
    Dim a1 As Integer, a2 As Integer, d As Integer
    ControlI.Width = Delimitador.Left - ControlI.Left
    a1 = ControlD.Left
    ControlD.Left = Delimitador.Left + Delimitador.Width
    a2 = ControlD.Left
   
    If a1 > a2 Then
     d = a1 - a2
     ControlD.Width = ControlD.Width + d
    Else
     d = a2 - a1
     ControlD.Width = ControlD.Width - d
    End If
ErrorSpliter:
End Sub


Presionar F5 y arrastar el Label, los cuadros de texto se redimensionaran.

A la espera del Vertical

Un saludo.