Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 26-10-2005
piccolo2101 piccolo2101 is offline
Miembro
 
Registrado: oct 2005
Posts: 63
Poder: 19
piccolo2101 Va por buen camino
Capturar Evento

Hola, Me gustaría saber si hay algún evento que pueda capturar cuando una ventana de un formulario es arrastrada por la pantalla y en su defecto saber que solución podrían darme.

Un saludo y gracias
Responder Con Cita
  #2  
Antiguo 26-10-2005
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 26
delphi.com.ar Va por buen camino
No se si es precisamente lo que buscas:
Código Delphi [-]
type
  TForm1 = class(TForm)
  private
    procedure WMMove(var Message: TWMMove); message WM_MOVE;
  public
  end;

...

procedure TForm1.WMMove(var Message: TWMMove);
begin
  inherited;
  Caption := Format('X: %d,  Y: %d', [Message.XPos, Message.YPos]);
end;
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #3  
Antiguo 26-10-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Aunque WM_MOVE se genera después del movimiento. Quizá te interese también WM_MOVING.

// Saludos
Responder Con Cita
  #4  
Antiguo 27-10-2005
piccolo2101 piccolo2101 is offline
Miembro
 
Registrado: oct 2005
Posts: 63
Poder: 19
piccolo2101 Va por buen camino
Thumbs up Gracias

Hola, gracias por la respuesta. Exactamente lo que buscaba era WMMoving ya que estaba haciendo un componente que al añadirlo a un formulario comprobrara la cercanía de las otras ventanas, según un valor del campo magnético en pixels, y si era menor que pegara las ventanas. Hasta ahora lo hacía con timer pero esa no era la forma correcta ya que sólo me interesa comprobar si se va a pegar a otra ventana cuando se mueve.
Por cierto, sabrías como cambiar la posición de la ventana porque yo ahora lo hago con Form1.left y Form1.top pero cuando libero el ratón o sigo moviendo se recuperan las posiciones antes de pegarse.

Un saludo y gracias.
Responder Con Cita
  #5  
Antiguo 27-10-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Por lo que dices creo, en efecto, que WM_MOVING, es el mensaje correcto. A reserva de que leas la documentación te comento que este mensaje, en cierto sentido, más que detectar el movimiento de la ventana- que me parece también podrías hacerlo con WM_WINDOWPOSCHANGING - detecta el arrastre del recuadro o silueta de la ventana.

Me explico: en el panel de control, en propiedades de la pantalla, puedes ajustar la opción "Mostrar el contenido de la ventana mientras se arrastra". Actualmente esa opción casi siempre está activada y por ello la ventana se mueve. Sin embargo, si la opción está desactivada, la ventana no se mueve y en su lugar sólo ves el contorno.

De cualquier forma, este mensaje está hecho precisamente para indicar al usuario la posición que va a tomar la ventana. En principio lo único que tienes que hacer es ajustar el campo DragRect del mensaje (que has de declarar como TWMMoving) al la posición que desees tome la ventana. Con esto ya no hace falta mover la ventna al final del movimiento.

// Saludos
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


La franja horaria es GMT +2. Ahora son las 09:43:44.


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