bouger un TPaintbox à la souris dans un TScrollBox
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:
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