2009-11-10 3 views
1

J'utilisais deux composants TButton sur un formulaire fonctionnant comme Plus et Moins. Lorsqu'ils sont cliqués, ils ajoutent ou soustraient un entier qui serait alors affiché sur un TLabel.Vitesse de déclenchement d'événement OnClick pour les composants

Cela a fonctionné comme souhaité où la vitesse à laquelle je cliquerais déclencherait l'événement OnClick sans faute.

J'ai remplacé les boutons par des composants PNGButton afin que je puisse les rendre plus jolis. Tout fonctionne toujours comme avant, sauf que l'événement OnClick ne semble pas déclencher chaque fois que je clique sur les composants. J'ai testé cela avec un simple composant TImage et le résultat est le même.

Si je clique très lentement il tirera à chaque fois, mais si je clique à un rythme régulier, il semble que se déclencher chaque seconde clic. Que puis-je faire pour m'assurer que l'événement OnClick est déclenché à chaque fois?

Répondre

1

Au lieu d'utiliser l'événement OnClick, utilisez l'événement OnMouseUp:

procedure TForm.btnMinusMouseUp(Sender: TObject; 
    Button: TMouseButton; Shift: TShiftState; X, Y: Integer); 
begin 
    if Self.NumSelected > 0 then begin 
    Self.NumSelected := Self.NumSelected - 1; 
    Self.UpdateLabel; 
    end; 
end; 
+3

Peut-être une explication pourrait aider. Je soupçonne que le OnClick ne s'enregistre pas parce qu'il est considéré comme un double-clic. La souris ne dépend pas de l'interprétation du clic, donc ça marche. – mj2008

Questions connexes