Je tente de créer un bouton personnalisé à partir d'un composant TPanel. Pour cela, j'ai fourni un override pour les événements onmousedown et onmouseup (pour faire un peu de dessin), et j'ai utilisé l'événement onclick pour gérer les clics.Impossible d'intercepter tous les clics lors de l'utilisation des événements onmousedown, onmouseup et click
Malheureusement, si je clique rapidement sur mon panneau, tous les autres clics sont "perdus", mais je n'arrive pas à comprendre pourquoi.
Même le plus simple des exemples échoue à cet égard. J'ai créé une nouvelle application VCL, ajouté une zone de liste, un panneau, et mis à exécution les événements comme suit:
procedure TForm1.Panel1Click(Sender: TObject);
begin
listbox1.Items.Add('click');
end;
procedure TForm1.Panel1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
listbox1.Items.Add('mouse down');
end;
procedure TForm1.Panel1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
listbox1.Items.Add('mouse up');
end;
Le résultat se présente comme suit:
mouse down
click
mouse up
mouse down
mouse up
... etcetera Chaque deuxième clic est pas pris en compte mais je ne sais pas pourquoi.
Quelqu'un peut-il expliquer cela s'il vous plaît?