Ver Mensaje Individual
  #2  
Antiguo 17-06-2003
andres1569 andres1569 is offline
Miembro
 
Registrado: may 2003
Posts: 908
Reputación: 22
andres1569 Va por buen camino
Hola:

Esta pregunta encaja mejor en el foro de gráficos, creo.

Si te he entendido bien, lo que sucede es que cuando el ratón queda fuera del área de dibujo, sea un Panel por ejemplo, se siga moviendo en esa dirección, aunque el ratón esté quieto. Creo que tendrás que colocar un TTimer y hacer algo como esto:

Código:
var
  T : Longint;
  MoviendoIzq, MoviendoDer, MoviendoArr,
  MoviendoAba : Boolean;

procedure TForm1.Panel1MouseMove ( ... X, Y : Integer);
var
  MoviendoIzq := X < 0;
  MoviendoDer := X > Panel1.Width;
  MoviendoArr := Y < 0;
  MoviendoAba := Y > Panel1.Height;
  if MoviendoIzq OR MoviendoDer OR MoviendoArr OR
     MoviendoAba OR then T := GetTickCount;
  MueveDibujos (X - OldX, Y - OldY);
end;

// que MouseUp también apunte a este método
procedure TForm1.Panel1MouseDown ( ... );
var
  MoviendoIzq := FALSE;
  MoviendoDer := FALSE;
  MoviendoArr := FALSE;
  MoviendoAba := FALSE;
end;

procedure TForm1.Timer1OnTimer (..);
var
  DeltaX, DeltaY : Integer;
begin
  if (MoviendoIzq OR MoviendoDer OR MoviendoArr OR
     MoviendoAba) AND ((GetTickCount - T) > 1000) then
  begin
    if MoviendoIzq then DeltaX := -10;
    if MoviendoDer then DeltaX := 10;
    if MoviendoArr then DeltaY := -10;
    if MoviendoAba then DeltaY := 10;
    MueveDibujos (DeltaX, DeltaY);
  end;
end;
__________________
Guía de Estilo
Responder Con Cita