J'utilise D2009. J'ai un composant dérivé de TWinControl auquel j'aimerais ajouter le panoramique de la souris. Je vois qu'il y a un nouveau style de contrôle, csPannable, et un nouvel état de contrôle, csPanning. J'ai regardé la source vcl pour essayer de comprendre, mais jusqu'à présent, je suis un peu perdu. Est-ce que quelqu'un sait de toute documentation pour cela? Toutes suggestions ou liens grandement appréciés!Comment faire un panoramique de la souris sur un composant personnalisé dans Delphi 2009
2
A
Répondre
1
Dans la même unité qui définit TWinControl, vous avez implémenté TControl. Voyez comment les événements et les procédures de la souris sont définis. Vous pouvez essayer de capturer des messages de souris dans votre composant.
Essayez ceci:
Dans des déclarations privées:
procedure WMLButtonDown(var Message: TWMLButtonDown); message WM_LBUTTONDOWN;
procedure WMMouseMove(var Message: TWMMouseMove); message WM_MOUSEMOVE;
procedure WMLButtonUp(var Message: TWMLButtonUp); message WM_LBUTTONUP;
En application que vous pouvez faire quelque chose comme ça
procedure TPanControl.WMLButtonDown(var Message: TWMLButtonDown);
begin
Self.Color := clYellow;
end;
procedure TPanControl.WMLButtonUp(var Message: TWMLButtonUp);
begin
Self.Color := clbtnFace;
end;
procedure TPanControl.WMMouseMove(var Message: TWMMouseMove);
var
State : TKeyboardState;
begin
GetKeyboardState(State);
if ((State[VK_LBUTTON] And $80) <> 0) then begin
Self.Color := clOlive;
end;
end;
test quelques variations. Avec ce code simple, vous pouvez attraper les événements de la souris. Dans ces procédures, vous pouvez lancer des événements de souris ou faire quelque chose pour créer un effet de panoramique.
Comme je l'ai mentionné, j'essaie d'interfacer avec le support panoramique intégré. – MarkF