2008-10-08 10 views
3

J'ai une action que je veux effectuer quand un bouton TSpeedButton est pressé et un autre que je veux effectuer lorsque le même bouton est "non pressé". Je sais qu'il n'y a pas d'événement onunpress, mais y a-t-il un moyen facile pour moi d'obtenir une action à exécuter quand un bouton différent est pressé?Exécuter l'action pour le bouton non coché automatiquement dans Delphi

procedure ActionName.ActionNameExecute(Sender: TObject); 
begin 
    PreviousActionName.execute(Sender); 
    // 
end; 

Semble trop maladroit.

Répondre

5

Il n'y a pas de compression, mais vous pouvez interroger la propriété Down.

L'exemple a pris quelques distributions sales, mais cela fonctionne à la fois pour l'action et pour OnClick.

procedure Form1.ActionExecute(Sender: TObject); 
var 
    sb : TSpeedButton; 
begin 
    if Sender is TSpeedButton then 
    sb := TSpeedButton(Sender) 
    else if (Sender is TAction) and (TAction(Sender).ActionComponent is TSpeedButton) then 
    sb := TSpeedButton(TAction(Sender).ActionComponent) 
    else 
    sb := nil; 

    if sb=nil then 
    DoNormalAction(Sender) 
    else if sb.Down then 
    DoDownAction(sb) 
    else 
    DoUpAction(sb); 
end; 
5

D'après ce que vous décrivez, je suppose que vous utilisez votre speedbutton avec groupindex <> 0 mais pas d'autres boutons dans le même groupe, ou du moins ne fonctionne pas comme RadioButtons (AllowAllUp vrai).

Vous ne disposez que d'un événement onClick pour appuyer sur le bouton, mais que faire dépend de l'état du bouton s'il a un GroupIndex.
Ainsi, vous devez tester que Down est False dans votre gestionnaire d'événements onClick, car Down est mis à jour avant le lancement du gestionnaire onClick.

ex:

procedure TForm1.SpeedButton1Click(Sender: TObject); 
begin 
    with Sender as TSpeedButton do 
    begin 
    if Down then 
     showmessage('pressing') 
    else 
     showmessage('unpressing'); 
    end; 
end; 
+0

@Francois, Dans ce cas, l'expéditeur est une action, de sorte que l'expéditeur TSpeedButton soulève une exception. –

Questions connexes