En el evento DragOver del TImage, siendo FrameMapa el TFrame:
Código Delphi
[-]
if (X < FrameMapa.HorzScrollBar.Position + 10) then
FrameMapa.HorzScrollBar.Position := FrameMapa.HorzScrollBar.Position - FrameMapa.HorzScrollBar.Increment;
if (X > FrameMapa.clientWidth + FrameMapa.HorzScrollBar.Position - 10) then
FrameMapa.HorzScrollBar.Position := FrameMapa.HorzScrollBar.Position + FrameMapa.HorzScrollBar.Increment;
if (Y < FrameMapa.VertScrollBar.Position + 10) then
FrameMapa.VertScrollBar.Position := FrameMapa.VertScrollBar.Position - FrameMapa.VertScrollBar.Increment;
if (Y > FrameMapa.clientHeight + FrameMapa.VertScrollBar.Position - 10) then
FrameMapa.VertScrollBar.Position := FrameMapa.VertScrollBar.Position + FrameMapa.VertScrollBar.Increment;
Los ifs dependen de la posición del correspondiente ScrollBar ya que las X e Y del TImage van cambiando según cambia la parte visible del mismo.
Lo curioso es que lo he implementado en otro formulario parecido (usan incluso los mismos TFrame y TImage), y mientras que en uno el movimiento tiene una velocidad razonable, en el otro va muy rápido.
