Je cherche un moyen de réaliser un SCROLL fluide sur une TScrollBox contenant un TPaintBox lors d'un DRAG&DROP quand le curseur atteint les limites droite ou gauche de ce TSCrollBox.

J'ai fait ceci mais ce n'est pas très réussi. Arrivé aux bornes de la zone, il faut continuellement faire bouger le curseur pour que le scroll progresse. Si on maintient le curseur immobile il est clair que le scroll s'arrête. Quelqu'un aurait-il déjà réalisé ce genre de fonction qui par exemple, est très bien réalisée dans l'éditeur de DELPHI. Merci.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
procedure Tform1.PaintBox1DragOver(Sender, Source: TObject; X, Y: Integer;
                  State: TDragState; var Accept: Boolean);
begin                  
...
  // ici dans PaintBox1DragOver, on scroll si on atteint la limite à 50 pixels près
 
  with ScrollBox1, HorzScrollbar do
  begin
    if ((X+50) > (Position+ Width))
    then Position := Position + Increment
    else if ((X-50) < Position) and (Position <> 0)
         then Position := Position - Increment;
 end;
 PaintBox1.Invalidate;
 Application.ProcessMessages;  // je ne suis pas sûr que cela serve à quelque chose
 
...