Form al lado de otro

Iniciado por bautistasbr, 24 Julio 2006, 14:37 PM

0 Miembros y 2 Visitantes están viendo este tema.

bautistasbr

Ola amigos,tengo una duda en mi proyecto,quiero q el form 2 se ponga al lado del form1,y si muevo el 1 se mueva tambien el 2.Y si muevo el 2 tambien se mueva el uno.No se si me explico bien.
Algo como lo de la imagen.



Hans el Topo

Cita de: bautistasbr en 24 Julio 2006, 14:37 PM
Ola amigos,tengo una duda en mi proyecto,quiero q el form 2 se ponga al lado del form1,y si muevo el 1 se mueva tambien el 2.Y si muevo el 2 tambien se mueva el uno.No se si me explico bien.
Algo como lo de la imagen.




busca el evento que salta al mover el form y posiciona el otro form según el que ha sido movido... (ejecuta este mismo evento en el activate/load de un form y listo... si quieres saper las apis... el botón de buscar del foro está a tu disposición
 

bautistasbr

me dejaron este code,pero no me va bien,si pudieras exarle un ojo t lo agradeceria.

Form1

Private Type PosF1
X As Long
y As Long
End Type
Dim MiPos As PosF1

Private Sub Form_Load()
On Error Resume Next
Dim X As Long
X = SetWindowPos(hwnd, -1, 0, 0, 0, 0, SWP_FLAGS)
MiPos.X = Me.Top
MiPos.y = Me.Left

End Sub

Private Sub Timer1_Timer()
If MiPos.X <> Me.Top Or MiPos.y <> Me.Left Then
    MiPos.X = Me.Top
    MiPos.y = Me.Left
    Form4.Top = Me.Top
    Form4.Left = Me.Left + Me.Width
End If

End Sub
Private Sub Form_GotFocus()
Timer1.Enabled = True
End Sub

Private Sub Form_LostFocus()
Timer1.Enabled = False
End Sub

en un modulo

Option Explicit

Declare Function SetWindowPos Lib "User32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long


' SetWindowPos Flags
Const SWP_NOSIZE = &H1
Const SWP_NOMOVE = &H2
Const SWP_NOZORDER = &H4
Const SWP_NOREDRAW = &H8
Const SWP_NOACTIVATE = &H10
Const SWP_DRAWFRAME = &H20
Const SWP_SHOWWINDOW = &H40
Const SWP_HIDEWINDOW = &H80
Const SWP_NOCOPYBITS = &H100
Const SWP_NOREPOSITION = &H200
Public Const SWP_FLAGS = SWP_NOMOVE Or SWP_NOSIZE Or SWP_SHOWWINDOW Or SWP_NOACTIVATE


y en el form q quiero q se ponga al lado esto

Private Type PosF1
X As Long
y As Long
End Type
Dim MiPos As PosF1

Private Sub Form_GotFocus()
Timer1.Enabled = True
End Sub

private sub form_load
MiPos.X = Me.Top
MiPos.y = Me.Left
Me.Top = Form1.Top
Me.Left = Form1.Left + Form1.Width
end sub

Private Sub Form_LostFocus()
Timer1.Enabled = False
End Sub
Private Sub Timer1_Timer()
If MiPos.X <> Me.Top Or MiPos.y <> Me.Left Then
    MiPos.X = Me.Top
    MiPos.y = Me.Left
    Form1.Top = Me.Top
    Form1.Left = Me.Left - Form1.Width
End If
End Sub

_Sergi_

Pues debería de funcionarte.... ¿Has puesto intervalo al Timer?

Un saludo
Proyecto de Ingeniero