Bonjour,
ce que je vais vous demander n'est pas facile mais ça vient de m'être demandé pour un projet bénévole.
Je vous explique le problème.
J'ai un TPaintBox dans un TScrollBox, mon TPaintBox a pour left 0 et top 0. Le TPaintBox est le plus souvent plus grand que le TScrollBox.
Le mec pour qui je fais le programme voudrais que quand on fait glissé déplacé dans le TPaintBox ça bouge les barres de défilement du TScrollBox en conséquence de façon qu'on puisse voir d'autres parties du TPaintBox de façon plus rapide qu'avec les barres de défilement.
Il faudrait un curseur "main" mais ça je sais faire.
J'en profites pour vous soumettre un problème que j'ai avec les TScrollBox : quand je fais bouger la molette ça marche des fois et des fois pas avec le code suivant et ce de manière aléatoire, est-ce un bug de Delphi ?

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.ScrollBox1MouseWheel(Sender: TObject; Shift: TShiftState;
  WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
var
  I: Integer;
begin
  Handled := PtInRect(ScrollBox1.ClientRect, ScrollBox1.ScreenToClient(MousePos));
  if Handled then
    for I := 1 to Mouse.WheelScrollLines do
    try
      if WheelDelta > 0 then
        ScrollBox1.Perform(WM_VSCROLL, SB_LINEUP, 0)
      else
        ScrollBox1.Perform(WM_VSCROLL, SB_LINEDOWN, 0);
    finally
      ScrollBox1.Perform(WM_VSCROLL, SB_ENDSCROLL, 0);
    end;
end;
Merci
Bien cordialement