¿Cómo puedo desplazar un form lentamente? Como en el MSN messenger cuando alguien inicia sesión o recives un correo electrónico.
usa un timer, y Form1.Move(). La velocidad con la que se despliega dependerá del intervalo del timer, y del incremento que le des al Form1.Move
Creas una etiqueta que se llame lblCaption, le pones "Mover" o algo similar y probá sosteniendo el mouse sobre ella y moviendolo para ver el efecto.
'
'Coded by Slasher
'
Option Explicit
Option Base 1 'Soy humano :)
Private snCoord(2) As Single
Private Sub lblCaption_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
On Error Resume Next
snCoord(1) = X
snCoord(2) = Y
End Sub
Private Sub lblCaption_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
On Error Resume Next
If Button = 1 Then
Call Me.Move((Left - snCoord(1)) + X, (Top - snCoord(2)) + Y)
End If
End Sub
Saludos.
Anhur este es el código que hice yo:
Citar
Private Sub Form_Load()
Form1.Move 10000, 11000
Timer1.Interval = 1000
End Sub
Private Sub Timer1_Timer()
Dim i
For i = 11000 To 9500 Step -0.015
Form1.Move 10000, i
Next i
Timer1.Enabled = False
End Sub
El problema que tengo es que al desplazarse la ventana digamos que se queda "pillada" y si esta contiene algun caption o lo que sea no se puede ver durante su trayectoria, solo se podra ver claramente cuando llegue a su destino.
El tuyo esta muy bien, pero me podrias ayudar a adaptarlo para que haga una función como el mio pero que no suceda el problema que te he comentado?
¿Alguien podria ayudarme? Es que lo necesito, gracias por adelantado.
Private Sub Form_Load()
Call Form1.Move(10000, 11000)
Timer1.Interval = 100
End Sub
Private Sub Timer1_Timer()
Static snPos!
If snPos >= 9500 Then
Timer1.Enabled = False
Exit Sub
End If
Call Form1.Move(10000, snPos)
snPos = snPos + 150
End Sub
Cada intervalo del Timer mueve un poco más el formulario (lo mueve 150 en este caso). Cambia los valores como te guste.
Saludos.
mira yo te lo hago mas rapido y de una toma ponelo asi
private sub timer1.timer()
form1.top = form.top - 30
en sub
despues coloca otro contador para que a la cantidad de tiempo detenga el timer1 y se detiene donde vos queres
Sancho Mazorka
eso ya se dijo
Cita de: Lympex en 30 Agosto 2005, 15:15 PM
usa un timer, y Form1.Move(). La velocidad con la que se despliega dependerá del intervalo del timer, y del incremento que le des al Form1.Move
CitarEl problema que tengo es que al desplazarse la ventana digamos que se queda "pillada" y si esta contiene algun caption o lo que sea no se puede ver durante su trayectoria, solo se podra ver claramente cuando llegue a su destino.
Intenta haciendo lo mismo con todos los controles, es decir
si pones Form1.Move, tmb ponne Label1.Move...
Capaz q eso lo soluciona
si lo que quieres es que se vea, cómo la ventana se va desplazando hasta su destino, dale intervalos más largos, y movimientos más cortos.
este es el mio, no es tan dificil, justamente queria lo mismo, y en el menu de propieades ponele en "moveable" false, asi nadie lo puede mover
Private Sub Form_Load()
IH = Height
IW = Width
Move (Screen.Height - Height) + 3000, (Screen.Width - Width) + 1000
With Me
.Height = 3000
.Width = 3000
.BorderStyle = 5
.BackColor = vbBlack
.Caption = "kill you"
End With
Timer1.Interval = 100
Timer2.Interval = 3000
End Sub
Private Sub Form_Resize()
If Height <> IH Then
IH = Height
ElseIf Width <> IW Then
Width = IW
End If
End Sub
Private Sub Timer1_Timer()
Form1.Top = Form1.Top - 100
End Sub
Private Sub Timer2_Timer()
If Timer2.Interval = 3000 Then
Timer1.Enabled = False
End If
End Sub