Un formulario y poder desplazarlo

Iniciado por SheKeL_C$, 28 Diciembre 2005, 12:38 PM

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

SheKeL_C$

holas,

tego un formulario k quiero q no tenga los tipicos botones de cerrar maximizar y minimizar, los tengo como botones dentro del formulario, asi k l puse borderstyle 0none, entonces desaparece pero no lo puedo desplazar q es lo q yo busco, el poder desplazarlo

Gracias  ::) ;D

karmany

Hola seken_C4.

También estoy interesado en lo mismo, ahora no tengo tiempo para probar esto pero lo haré..

Se me ocurre por ejemplo (son sólo ideas), crear un botón que simule la barra donde están los botones de minimizar etc.. y cuando sea pulsada variar los valores Left y Top del formulario.. Tengo bastantes lagunas de cómo hacer variar los valores según la posición del ratón.. todo es probar..

Un saludo

casaviella

Este codigo que pongo a continuación lo puso Reydelmundo11 en un post de este foro pero lo vuelvo a poner yo.

Module1.bas
'********************************************************************************
'*                      Movimiento del formulario                               *
'*                      de Reydelmundo11                                        *
'********************************************************************************

Declare Function ReleaseCapture Lib "user32" () As Long
Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Public Const WM_NCLBUTTONDOWN = &HA1
Public Const HTCAPTION = 2


Public Sub FormDrag(theform As Form)
ReleaseCapture
Call SendMessage(theform.hWnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&)
End Sub


En el form:
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Call FormDrag(Form1)
End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Call FormDrag(Form1)
End Sub

Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
Call FormDrag(Form1)
End Sub


No olvides de cambiar Form1 por el nombre de tu form pero sin quitar los parentesis.

Saludos y felices navidades  ;D :rolleyes:

Sancho.Mazorka

mira este codigo me lo hizo ZEALOT para mi les dejo el codigo, aparte este codigo la moverlo o apretar sobre la barra de titulo hace que se vuelva transparente XD!!!
Private Declare Function GetWindowLong Lib "USER32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "USER32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal wNewLong As Long) As Long
Private Const GWL_STYLE = (-16)
Private Const GWL_EXSTYLE = (-20)
'Requires Windows 2000 or later:
Private Const WS_EX_LAYERED = &H80000

Private Declare Function SetLayeredWindowAttributes Lib "USER32" (ByVal hWnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long
Private Const LWA_COLORKEY = &H1
Private Const LWA_ALPHA = &H2
Dim posx As Integer, posy As Integer, estado As Integer
Public Sub MakeWindowTransparent(ByVal hWnd As Long, ByVal alphaAmount As Byte)
Dim lStyle As Long
lStyle = GetWindowLong(hWnd, GWL_EXSTYLE)
lStyle = lStyle Or WS_EX_LAYERED
SetWindowLong hWnd, GWL_EXSTYLE, lStyle
SetLayeredWindowAttributes hWnd, 0, alphaAmount, LWA_ALPHA
End Sub

'La transparencia es graduable modificando el alphaamount en este caso esta en 150 mientras menor es este valor mas transparente se torna

Private Sub Label1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
posx = X
posy = Y
If WindowState = 0 Then
estado = 1
Else
estado = 0
End If
Call MakeWindowTransparent(Form1.hWnd, 180)
End Sub

Private Sub Label1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If estado = 1 Then Form1.Move Form1.Left + X - posx, Form1.Top + Y - posy
End Sub

Private Sub Label1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
estado = 0
Call MakeWindowTransparent(Form1.hWnd, 255)
End Sub

Private Sub lblCerrar_Click()
End
End Sub

Private Sub lblmax_Click()
If Form1.WindowState = 0 Then
Form1.WindowState = 2
Else
Form1.WindowState = 0
End If
End Sub

Private Sub lblmin_Click()
Form1.WindowState = 1
End Sub



Sancho Mazorka     :P
Ganador Xeon Web Server ! ! !    Sancho.Mazorka :D
http://foro.elhacker.net/index.php/topic,171903.75.html



SheKeL_C$

Hola d nuevo y gracias a los 3, m voy a quedar con el d Sancho.Mazorka q el q sea transparente... gana muxo con eso  ;D

Gracias d nuevo y espero en otras ocasoines ayudar = k m ayudan a mi  :rolleyes: ::)  :rolleyes :::)

karmany

He de decir Sancho.Mazorka que vengo de probar lo que has comentado y...
muchas, muchísimas gracias!!!!, me he quedado muy impresionado...y contentísimo...

:)