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;