Considérons le morceau de code suivant exécuté dans l'événement OnClick d'un bouton donné :
procedure TForm1.Button1Click(Sender: TObject);
begin
button1.enabled := false; //Line 1
application.processmessages; //Line 2
Sleep(3000); //Line 3
button1.enabled := True; //Line 4
Release; //Line 5
end;
Dans Delphi 2010, si après avoir cliqué sur ce bouton, vous parvenez à effectuer un autre un autre clic pendant que l'exécution est en cours à la ligne 3, l'événement de sera apparemment stocké dans la file d'attente des commandes, ainsi, lorsque la procédure Release(Ligne 5) est appelée, l'application tentera de le traiter. l'application tentera de le traiter. Par conséquent, l'événement de clic sera déclenché une fois de plus. La deuxième fois le composant bouton a déjà été détruit, donc l'erreur de "violation d'accès" est levée.
L'ensemble du concept de reconnaissance du second clic par le système lorsque le respectif est désactivé, ne semble pas judicieux. Une explication à ce comportement douteux ?