2009-03-19 10 views
3

En ce moment, j'ai le code:Comment utiliser une case à cocher dans Delphi?

begin 
If odd(GetAsyncKeyState(VK_snapshot)) then 
If CheckBox1.Checked then 
begin 

Et il continue avec le reste du code. Est-ce la bonne façon de procéder, ou est-ce que je me trompe?

+0

Que voulez-vous réaliser? – sharptooth

+0

Je le veux où, si l'utilisateur coche la case, il continuera avec cette procédure, mais si la case n'est pas cochée, il continuera une procédure différente. – PuppyKevin

Répondre

10

Ce que vous proposez est une façon parfaitement légale de déterminer si une case à cocher est cochée. Le code faisant pourrait ressembler

if checkBox.Checked then begin 
    //do whatever needed for checked checkbox 
end 

ou comme celui-ci

if checkBox.Checked then begin 
    //do whatever needed for checked checkbox 
end else begin 
    //do whatever needed for unchecked checkbox 
end 

Rappelez-vous simplement que la valeur que vous avez obtenu de la propriété Vérifié correspond à l'état de la case à cocher au moment où vous avez obtenu la valeur.

+0

Pour cette seconde, comment pourrais-je implémenter ma vérification si on appuie sur Print Screen? Ou, si possible, pourriez-vous mettre cette personne dans ce deuxième code? – PuppyKevin

+0

C'est pareil. Vous avez un gestionnaire d'événements pour "KeyPressed" ou un événement similaire. A l'intérieur vous vérifiez si c'était vraiment la touche d'intérêt pressée. Si c'est le cas, invoquez le code qui lit l'état de la case à cocher et agit en conséquence. – sharptooth

+0

D'accord, j'ai ceci: commencer si CheckBox1.Checked puis commencer Si impair (GetAsyncKeyState (VK_snapshot)) Ensuite commencer le code // ici fin else begin // code différent ici fin; Ce qui semble fonctionner. – PuppyKevin

-1

puisque vous utilisez 2 instructions if, vous pouvez également les combiner en un seul:

if odd(GetAsyncKeyState(VK_snapshot)) and CheckBox1.Checked then 
begin 
    ... 
    ... 
end; 

La deuxième partie de l'instruction if (checkbox1.Checked) ne sera évaluée que si le premier évalue à True. (Puisque Delphi utilise Short-circuit evaluation)

+2

Veuillez éditer ceci - Delphi n'utilise pas forcément une évaluation de court-circuit, le comportement dépend de la directive du compilateur '{$ B}' ou du commutateur de ligne de commande correspondant! – mghie

0
if DT.FieldByName('name_of_checkbox').AsBoolean=True then begin ..... end; 
// In this case dt is TADOquery that you had used in your program. 
Questions connexes