[ahora SI funciona] [SRC] + [Módulo] Persianas [VB6] [by *PsYkE1*]

Iniciado por Psyke1, 10 Mayo 2010, 21:52 PM

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

Psyke1

Hola a todos, he estado trabajando para convertir tus Forms en persianas :o, si, como oyes, en persianas. :)
Ahora SI funciona, os lo prometo, sino, os devuelvo el dinero... :xD
IMPORTANTE: DEBEIS PONER LA PROPIEDAD BORDERSTYLE EN NONE
Aqui va el code, (esto deberia estar en módulo):
Código (vb) [Seleccionar]

' ////////////////////////////////////////////////////////////////
' // *Autor: *PsYkE1* (miguelin.majo@gmail.com)                 //
' // *Podeis agrandar o reducir el codigo, siempre y cuando se  //
' // respete la autoria y se me comuniquen esos cambios.        //
' // *Agradecimientos a BlackZeroX.                             //
' // *Visita http://foro.rthacker.net                           //
' ////////////////////////////////////////////////////////////////

Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Public Sub Persiana(miForm As Form, Vel As Integer, Desplegar As Boolean, Alto As Boolean _
, Acabar As Boolean)
   Dim Largo As Integer
   With miForm
       If Desplegar = True Then
           If Alto = True Then
               Largo = .Height
               .Height = 0
               While Not .Height >= Largo
                   .Height = .Height + 2
                   Sleep Vel
               Wend
           Else
               Largo = .Width
               .Width = 0
               While Not .Width >= Largo
                   .Width = .Width + 2
                   Sleep Vel
               Wend
           End If
       Else
           If Alto = True Then
               While Not .Height <= 10
                   .Height = .Height - 10
                   Sleep Vel
               Wend
           Else
               While Not .Width <= 10
                   .Width = .Width - 2
                   Sleep Vel
               Wend
           End If
       End If
   End With
   If Acabar = True Then End
End Sub


Bien, ahora para llamarlo desde un Form pondríamos esto:
Código (vb) [Seleccionar]

Private Sub Form_Activate()
   Call Persiana(Me, 5, False, True, True)
End Sub

( esta llamada se ejerceria sobre el Form actual, con una velocidad de 5(si quereis que vaya mas despacio aumentar el valor, no bajarlo ;)), para que se cierre la persiana, de abajo a arriba y que al completarse se finalice el programa)

Quizas alguien tenga alguna duda preguntar, que es gratis... ;)

Salu2! ;D

ssccaann43 ©

- Miguel Núñez
Todos tenemos derechos a ser estupidos, pero algunos abusan de ese privilegio...
"I like ^TiFa^"

Psyke1

#2
mmmmmmm
q es exactamente lo que te pasa?¿ :huh:
recuerda que:
Cita de: *PsYkE1* en 10 Mayo 2010, 21:52 PM
IMPORTANTE: DEBEIS PONER LA PROPIEDAD BORDERSTYLE EN NONE
Seguramente lo que te pase es que se pliega, pero se queda asi, verdad¿?
Poniendo esto no deberias tener problemas...
Salu2! ;D

agus0

Si a mi tambien se me cuelta, puse el BorderStyle en None, Pero se cierra igual. Tengo Windows 7

Psyke1

#4
mmmmmmmmm
comprendo, el caso es que a mi me funciona, bajaros el proyecto:


http://www.mediafire.com/?z12mynyjwgt (olvidadlo que tiene fallos, el code que esta posteado funciona bien)
A ver si asi... :-\

Salu2! ;D

Psyke1

Ya se lo que pasa...
A que lo habeis llamado asi:

Código (vb) [Seleccionar]
Private Sub Form_Load()
   Call Persiana(Me, 10, False, True, True)
End Sub

Si creais un boton y pones la llamada funciona!! ;D
Y si soy sincero no se porque, se os ocurre algo?¿ :huh:

Salu2! ;D

BlackZeroX

son muchas lineas... mejor pon un timer via api en un modulo y con Mod lo haces no crees? se reduciria mucho el peso...

ejemplo:

Código (vb) [Seleccionar]


rem     en un Form agregar:
rem     1 PictureBox
rem     1 CommandButton
rem     1 Timer

option explicit

Private Expandir As Boolean
Private AuxNum As Long
Private Const LimAlt As Long = 4095
Private Const Velocity As Byte = 5
Private Expand As Boolean

Private Sub Command1_Click()
    With Timer1
        .Enabled = True
        .Interval = 1
    End With
    Expand = Not Expand
    AuxNum = Velocity
End Sub

Private Sub Form_Load()
    With Picture1
        .Height = LimAlt
        .Top = 0
        .Left = 0
    End With
    With Command1
        .Height = 256
        .Caption = "Ejemplo por BlackZeroX."
        .Width = 2500
        .Top = 0
        .Left = Picture1.Width + 500
    End With
    Me.Height = LimAlt + 1000
    Me.Width = Command1.Width + Command1.Left + 800
End Sub

Private Sub Timer1_Timer()
On Error GoTo Termina
    With Picture1
        If Not Expand Then
            .Height = .Height + AuxNum
            If .Height >= LimAlt Then
                .Height = LimAlt
                GoTo Termina
            End If
            AuxNum = AuxNum + Velocity
        Else
            .Height = .Height + AuxNum
            If .Height <= 1 Then
                .Height = 1
                GoTo Termina
            End If
            AuxNum = AuxNum - Velocity
        End If
    End With
Exit Sub
Termina:
    Err.Clear
    Timer1.Enabled = False
End Sub



Es solo un ejemplo se puede pasar a un Modulo De Clase pero por ahorita no cuento con mucho tiempo solo lo dejo asi.

Sangriento Infierno Lunar!¡.
The Dark Shadow is my passion.

Psyke1

Gracias BlackZeroX▓▓▒▒░░ !!! ;-)
Esta muy bien el tuyo!! ;D
x cierto:
Cita de: *PsYkE1* en 11 Mayo 2010, 00:58 AM
Si creais un boton y pones la llamada funciona!! ;D
Y si soy sincero no se porque, se os ocurre algo?¿ :huh:

Salu2! ;)

Karcrack

http://msdn.microsoft.com/en-us/library/ms632669%28VS.85%29.aspx
AnimateWindow() permite hacer lo mismo si no me equivoco :)

Psyke1

Gracias Karcrack!! ;D
voy a echarle un vistazo... ;)

Salu2! ;D