2009-03-19 5 views
3

Прямо сейчас, у меня есть код:Как использовать флажок в Delphi?

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

А потом он продолжает с остальной частью кода. Это правильный способ сделать это, или я делаю это неправильно?

+0

Чего вы хотите достичь? – sharptooth

+0

Я хочу, чтобы он, если пользователь проверит флажок, продолжит эту процедуру, но если флажок НЕ установлен, он продолжит другую процедуру. – PuppyKevin

ответ

10

Что вы предлагаете, это совершенно законный способ определить, установлен ли флажок. Код делает так может выглядеть

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 

Просто помните, что значение вы получили от зарегистрированного имущества соответствует состояниям CheckBox в момент, когда вы получили значение.

+0

Для этого второго, как бы реализовать свою проверку, если нажать Print Screen? Или, если возможно, вы могли бы поместить этого человека в этот второй код? – PuppyKevin

+0

Это то же самое. У вас есть обработчик событий для «KeyPressed» или подобного события. Внутри вы проверяете, действительно ли это был ключ интереса. Если это так, вызовите код, который считывает состояние флажка и действует соответствующим образом. – sharptooth

+0

Хорошо, у меня есть это: начать если CheckBox1.Checked затем начать Если нечетное (GetAsyncKeyState (VK_snapshot)) Тогда начать // здесь код конец еще начинают // другой код здесь конец; Который, кажется, работает. – PuppyKevin

-1

, так как вы используете 2, если-заявление, вы можете также объединить их в одно:

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

Вторая часть оператора if-(checkbox1.Checked) будет оцениваться только если первым Равняется к Истине. (Поскольку Delphi использует 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. 
Смежные вопросы