2009-03-19 25 views
3

は今のところ、私はコードを持っている:Delphiでチェックボックスを使用するには?

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

をし、それは、コードの残りの部分に続きます。それが正しい方法ですか、それとも間違っているのですか?

+0

達成したいことはありますか? – sharptooth

+0

私はどこにいても、ユーザーがチェックボックスをチェックすると、そのプロシージャで続行されますが、チェックボックスがチェックされていなければ、別の手順を続行します。 – PuppyKevin

答えて

10

あなたが提案するのは、チェックボックスがオンになっているかどうかを判断する完全な合法的な方法です。そうするコードは、ちょうどあなたが値を取得するときに、Checkedプロパティから取得した値は、現時点では、チェックボックスの状態に対応していることを覚えておいてください

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

またはこの

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

などのように見えるかもしれません。

+0

2番目の場合は、Print Screenを押した場合、どのようにチェックするのですか?または、可能であれば、その人をその2番目のコードに入れることができますか? – PuppyKevin

+0

それは同じです。あなたは "KeyPressed"または同様のイベントのイベントハンドラを持っています。あなたが実際に押されたキーかどうかをチェックしてください。そうであれば、チェックボックスの状態を読み取り、それに応じて動作するコードを呼び出します。 – sharptooth

+0

さてさて、私はこれがあります (GetAsyncKeyState(VK_snapshot))奇数ならばCheckBox1.Checkedが、その後 を開始した場合 を開始しその後 //コードを開始し、ここで エンド他 はここ //異なるコード 終わりを始めます。 これはうまくいくようです。 – PuppyKevin

-1

あなたは2 if文を使用しているので、あなたも1にそれらを組み合わせることがあります

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

if文(checkbox1.Checked)の第二の部分のみが評価される最初の評価された場合真になる(デルファイはShort-circuit evaluationを使用しているため)

+2

これを編集してください - Delphiは**必ずしも短絡評価を使用しません、その動作は '{$ B}'コンパイラ指令またはそれぞれのコマンドラインスイッチに依存します! – 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. 
関連する問題