2016-12-07 6 views
1

Le problème est que lorsque j'essaie de définir TBitBtn.Enabled sur False (lorsqu'il est mis au point, comme dans le événement onClick, et avec les styles VCL activés), il ne modifie pas l'état visuel, comme s'il était activé.Lorsqu'il est activé, s'il est défini sur TBitBtn.Enabled sur False, il ne met pas à jour son état visuel (avec le style VCL activé)

procedure TForm1.BitBtn1Click(Sender: TObject); 
begin 
    BitBtn1.Enabled := False; 
end; 

Dans l'image, je viens dans le cliqués bitbtn1

+2

Appel de contournement 'ActiveControl: = nil;' avant 'BitBtn1.Enabled: = False;' – RepeatUntil

+0

ne peut pas être reproduit sur Delphi DX10 (Seattle) sans la mise à jour 1 (version 23.0.20618.2753). Windows 8.1 SP1. – Zam

+0

@RepeatUntil Cela fonctionne, merci, mais si possible, je voudrais savoir s'il existe une solution de contournement plus générique, le code source est assez énorme. –

Répondre

0

J'utilise un composant hérité de TBitBtn dans mon projet, donc je remplacer les setter setEnabled et utilisé la solution de contournement affichée par @RepeatUntil:

procedure TCustomBitBtn.SetEnabled(Value: Boolean); 
begin 
    if Focused then 
    Winapi.Windows.SetFocus(0); 

    inherited; 
end; 

Ceci a résolu mon problème, mais cela ressemble à un bug de Seattle Update 1, car à Berlin Mise à jour 2 a Seattle sans mise à jour 1 (selon @Zam) le problème ne se produit pas.