Réponse aux messages indiquant la manipulation de la souris
Remonter à Gestion des messages liés à la souris ou au clavier
Une méthode MouseDown est une méthode protégée de l'événement OnMouseDown d'un contrôle. Le contrôle lui-même appelle MouseDown en réponse au message Windows indiquant la manipulation de la souris. Lorsque vous redéfinissez la méthode MouseDown héritée, vous pouvez inclure du code apportant d'autres réponses en plus de l'appel à l'événement OnMouseDown.
Pour redéfinir MouseDown, ajoutez la méthode MouseDown à la classe TDBCalendar :
type
TDBCalendar = class(TSampleCalendar);
.
.
.
protected
procedure MouseDown(Button: TButton, Shift: TShiftState, X: Integer, Y: Integer);
override;
.
.
.
end;
procedure TDBCalendar.MouseDown(Button: TButton; Shift: TShiftState; X, Y: Integer);
var
MyMouseDown: TMouseEvent;
begin
if not ReadOnly and FDataLink.Edit then
inherited MouseDown(Button, Shift, X, Y)
else
begin
MyMouseDown := OnMouseDown;
if Assigned(MyMouseDown then MyMouseDown(Self, Button, Shift, X, Y);
end;
end;
// fichier en-tête
class PACKAGE TDBCalendar : public TSampleCalendar
{
.
.
.
protected:
virtual void __fastcall MouseDown(TMouseButton Button, TShiftState Shift, int X, int Y);
.
.
.
};
// fichier d'implémentation
void __fastcall TDBCalendar::MouseDown(TMouseButton Button, TShiftState Shift, int X, int Y)
{
TMouseEvent MyMouseDown; // déclare le type d'événement
if (!FReadOnly && FDataLink->Edit()) // si le champ peut être modifié
TSampleCalendar::MouseDown(Button, Shift, X, Y); // appelle MouseDown héritée
else
{
MyMouseDown = OnMouseDown; // affecte l'événement OnMouseDown
if (MyMouseDown != NULL) MyMouseDown(this, Button, // exécute le code contenu dans...
Shift, X, Y); // ...le gestionnaire d'événement OnMouseDown
}
}
Lorsque MouseDown répond à un message indiquant la manipulation de la souris, la méthode MouseDown héritée est appelée uniquement si la propriété ReadOnly du contrôle est False et si l'objet lien de données est en mode édition, c'est-à-dire si le champ peut être modifié. Si le champ ne peut être modifié, le code mis par le programmeur dans le gestionnaire de l'événement OnMouseDown, s'il en existe un, est exécuté.