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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-05-2010
FENIXadr FENIXadr is offline
Miembro
 
Registrado: may 2010
Ubicación: Córdoba - Cba. - Argentina
Posts: 104
Poder: 15
FENIXadr Va por buen camino
Mover varias Ventanas a la Vez

Hola gente.. tengo una consultita sobre mover los Forms..
con este código... (que lo encontré navegando por ahí)
.....
........
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if Button = mbLeft then
begin
ReleaseCapture;
SendMessage(Handle, WM_NCLBUTTONDOWN, HTCAPTION, 0);
end;
end;
......
......

se puede hacer que un Form se mueva haciéndole click en cualquier lado.. (funciona espectacularmente) ahora bien.. la pregunta es esta...
Como puedo hacer para que cuando este Form se mueve, otro Form que esta al aldo de éste se mueva a la vez??

desde ya Muchas Gracias...
Responder Con Cita
  #2  
Antiguo 30-05-2010
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
Hola,

Código Delphi [-]
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
  dx,dy : integer;
begin
dx := form1.Left - otraform.left;
dy := form1.Top - otraform.Top;

if Button = mbLeft then
begin
ReleaseCapture;
SendMessage(Handle, WM_NCLBUTTONDOWN, HTCAPTION, 0);
end;
 
otraform.Left := Form1.Left - dx;
otraform.Top := Form1.top - dy;

end;

seria algo asi: coger la distancia primera entre las forms, y una vez movida la principal, recolocar la segunda la misma distancia. A ver si te sirve, un saludo.
Responder Con Cita
  #3  
Antiguo 31-05-2010
FENIXadr FENIXadr is offline
Miembro
 
Registrado: may 2010
Ubicación: Córdoba - Cba. - Argentina
Posts: 104
Poder: 15
FENIXadr Va por buen camino
Mover Varias Ventanas a la Vez

Muchisimas gracias Coso ...
Responder Con Cita
  #4  
Antiguo 31-05-2010
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.293
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
También puedes revisar un ejemplillo que hay en mi página llamado "simular barras flotantes"; Que muestra como crear dos pequeños formularios con botones (que simulan barras de herramientas) y que se "anexan" o "enganchan" al formulario principal y se mueven a la vez que se mueve este.



Puedes descargar el ejemplo y ver el código.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #5  
Antiguo 31-05-2010
FENIXadr FENIXadr is offline
Miembro
 
Registrado: may 2010
Ubicación: Córdoba - Cba. - Argentina
Posts: 104
Poder: 15
FENIXadr Va por buen camino
Mover Varias Ventanas a la Vez

Muchas Gracias Neftali.. voy a bajar tu ejemplo para verlo... te comento que realice el método que me dijo coso y no es exactamente lo que tenía en mente, o sea, la segunda ventana se mueve a una posicion con respecto a la primera, pero cuando suelto el boton..
de todos modos seguí renegando y encontré algunas cosas que no eran para este fin pero lo pude adaptar y anda perfectamente ...

acá les dejo el código de dos métodos para los que tengan el mismo problema que yo...

Método 1:
Código Delphi [-]
....
....
var  
   XX, YY : Intgeger;
   ButtonPress : Boolean;
   CursorPos : TPoint;
....
...
Procedure TForm1.FormMouseDown (Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  XX := X;
  YY := Y;

  ButtonPress := True;
end;



Procedure TForm2.FormMouseMove (Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
  if ButtonPress then
  begin
    GetCursorPos (CursorPos);
    Top := CursorPos.Y - YY;
    Left := CursorPos.X - XX;

    OtroForm.Top := Top + Height;
    OtroForrm.Left := Left
  end;
end;



Procedure TForm1.FormMouseUp (Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  ButtonPress := False;
end;


Método 2: Escrito por Roman en alguna oportunidad.
Código Delphi [-]
interface

type
  TForm1 = class(TForm)
  private
    procedure WMMove(var Message: TWMMove); message WM_MOVE;
  end;

implementation

procedure TForm1.WMMove(var Message: TWMMove);
begin
  inherited;
  if Assigned(Form2) then
  begin
    Form2.Left := Left;
    Form2.Top := Top + Height;
  end;
end;

end.

Última edición por FENIXadr fecha: 31-05-2010 a las 14:59:26. Razón: me equivoque .. no es "roman" quien me paso el metodo que no funcionaba como yo queria es "coso"
Responder Con Cita
  #6  
Antiguo 31-05-2010
FENIXadr FENIXadr is offline
Miembro
 
Registrado: may 2010
Ubicación: Córdoba - Cba. - Argentina
Posts: 104
Poder: 15
FENIXadr Va por buen camino
Mover Varias Ventanas a la Vez

Vi tu ejemplo Neftalí... esta muy buena la barrita, pero tuve el mismo inconveniente o sea necesito que la segunda ventana se mueva juntamente con la primera, de todos modos los métodos que puse antes asi lo hacen, puedes implementarlos en tu código si así lo deseas...
saludos y muchas gracias a todos por responder.
Responder Con Cita
  #7  
Antiguo 31-05-2010
FENIXadr FENIXadr is offline
Miembro
 
Registrado: may 2010
Ubicación: Córdoba - Cba. - Argentina
Posts: 104
Poder: 15
FENIXadr Va por buen camino
Mover Varias Ventanas a la Vez

Volví a mirar tu ejemplo Neftalí y el problema era que tenía una instruccion "exit" en el procedimiento WMWindowPosChanging... te felicito por tu trabajo ahora si veo que está muy pero muy bueno... es más.. la segunda ventana se posiciona no solo cuando se mueve la primera sino tambien cuando se cambia su tamaño.. cosa que los métodos que puse arriba no hacen... muy buen trabajo.. me fue de mucha utilidad.. se reagradece..
Responder Con Cita
Respuesta



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
cerrar una aplicacion que consta de varias ventanas miguel_e Varios 2 21-06-2008 02:30:24
Aplicacion con varias ventanas salvanano Varios 5 04-05-2007 03:00:18
varias ventanas modales anubis Varios 5 03-04-2007 20:31:19
Sacar varias ventanas Marcela Varios 3 20-09-2006 20:16:56
Mover ventanas a la vez igest2000 Varios 1 21-05-2003 00:57:29


La franja horaria es GMT +2. Ahora son las 02:25:00.


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