Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-08-2008
santus santus is offline
Miembro
 
Registrado: ene 2006
Posts: 130
Poder: 19
santus Va por buen camino
Mover dos formularios al mismo tiempo

Hola amigos. Tengo que hacer una aplicacion simple. El tema complejo es que tengo que lograr mover dos formularios al mismo tiempo en tiempo de ejecución.

Los formularios son sismples. Nomas tienen unas cosillas que mostrar pero nada mas. Tengo un formulario principal, y tengo otro formulario al lado, que se abre para mostrar información al hacer click en un botón. Este se muestra al lado del principal.

Ya logré mover el fomulario desde cada de las ventanas. Arrastrando el mouse sobre cada una, me las mueve en forma independiente. Para ello usé esta funcion:

Código Delphi [-]

procedure TfMain.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
    ReleaseCapture;    
    Perform(WM_SYSCOMMAND, SC_DRAGMOVE, Integer(PointToSmallPoint(Point(X,Y))));
end;

Hasta aquí todo bien. Cada una de las ventanas se mueve en forma independiente. Ahora bien. Estoy intentantando que se muevan los dos al mismo tiempo. Osea, cuando arrastro el mouse sobre uno, se mueva tambien el otro.

Se me ocurrió sin muchos resultados, enviar un mensaje personalizado a cada formulario para que se muevan todos juntos. Algo asi como:

Código Delphi [-]
CONST
  WM_MOVERFORM = WM_USER + 0;
  SC_DRAGMOVE = $F012;

procedure TfMain.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
 SendMessage(Handle,WM_MOVERFORM,SC_DRAGMOVE,Integer(PointToSmallPoint(Point(X,Y))));
end;

procedure OnMoverVentana(var Msg: TMessage); message WM_MOVERFORM;

procedure TfMain.OnMoverVentana(var Msg: TMessage);
begin
    ReleaseCapture;
    Perform(WM_SYSCOMMAND, Msg.WParam,Msg.LParam);
end;

Para el segundo formulario hago lo mismo. Le envio el handle del otro fomulario así:

Código Delphi [-]
procedure TfMain.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
    SendMessage(Handle,WM_MOVERFORM,SC_DRAGMOVE,   Integer(PointToSmallPoint(Point(X,Y))));
    SendMessage(form2.handle,WM_MOVERFORM,SC_DRAGMOVE,   Integer(PointToSmallPoint(Point(X,Y))));

end;

Y así. El problema que luego de enviar el primer mensaje la aplicación no envia el próximo mensaje hasta que no termino de soltar el mouse, osea que se mueve sólo el que primero recibe el mensaje.

Estoy perdido. Buscando aqui y en internet no encotré ni siquiera una idea de como seguir. Si alguien tiene alguna idea, siempre va a ser bienvenida porque a esta altura, ya ni se si esta implementación es correcta.

Bien, gracias a todo, y espero no haberlos aburrido con este laaarrggooo post. Gracias.
__________________
"El ordenador nació para resolver problemas que antes no existían." Bill Gates.
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Dos formularios al mismo tiempo nostrajara Gráficos 2 31-10-2007 17:13:09
mover imagen por un tiempo determinado leodelca23 Varios 1 28-03-2007 07:54:13
Dos Formularios al mismo tiempo lucasarts_18 Varios 5 19-04-2005 03:46:05
mover componentes en tiempo de ejecución Dantael OOP 3 06-02-2005 12:29:46
Cerrar dos formularios creados dinamicamente (al mismo tiempo) ctronx Varios 7 02-09-2004 00:19:04


La franja horaria es GMT +2. Ahora son las 14:29:35.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi