Ver Mensaje Individual
  #1  
Antiguo 09-09-2011
Toni Toni is offline
Miembro
 
Registrado: may 2003
Ubicación: Barcelona - España
Posts: 364
Reputación: 22
Toni Va por buen camino
Arrastrar formulario de tamaño mayor al escritorio

Hola,

Necesito realizar un entorno para una nueva aplicación que ha de trabajar con formularios con estas caracteristicas:

-. Tamaño superior al escritorio.
-. Poderse arrastrar mediante el evento MouseDown solo verticalmente y no superando los limites del mismo.

He buscado por los foros y he encontrado una solucion que permite arrastrar el formulario implementando en el evento FormMouseDown:

Código:
void __fastcall TForm1::FormMouseDown(.....
{
 ReleaseCapture();
 Perfom(WM_SYSCOMMAND, 0xF012, 0);
}
El problema que me he encontrado con este metodo es que permite mover el formulario hacia cualquier dirección y no puedo controlar de una forma elegante que solo sea verticalmente y que no supere los limites del formulario, es decir el efecto que busco es parecido a la del navegador web pero sin la barra de desplazamiento.

Código:
void __fastcall TForm1::FormMouseDown(.....
{
 ReleaseCapture();
 Perfom(WM_SYSCOMMAND, 0xF012, 0);
 Left=0;
}
Si añado un Left=0 funciona pero no de forma elegante como comentaba.

El otro problema que me encuentro es cuando arrastro el formulario de forma vertical hacia arriba y se sale del escritorio, en cuanto suelto el boton me lo posiciona automaticamente el formulario en la posición Top=0, como puedo hacer para desplazar fuera del margen del escritorio por la parte superior?

Y si alguien tiene idea como aplicar el efecto de arrastrar y velocidad que hace el iphone seria fantastico.
__________________
Saludos,

Bitman
Responder Con Cita