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 ?
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.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;
Bien cordialement
Partager