2009-07-28 7 views
2

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

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.

+1

Comme je l'ai mentionné, j'essaie d'interfacer avec le support panoramique intégré. – MarkF

Questions connexes