Показать полную графическую версию : Оператор If
stronger
22-09-2013, 21:37
Здравствуйте. У меня такая ситуация: в общем есть две формы . на 1 есть 3 радиобуттона и если нажать на button готово появляется 2 форма, и там как бы уже готовая анкета с выбранными ответами я хочу чтобы в label было значение выбранного радиобутона, пишу так:
procedure TForm4.FormCreate(Sender: TObject);
begin
{Если выбран Radiobutton3}
If not (form2.radiobutton1.checked) and not (form2.RadioButton2)
then Label2.Caption:='>60';
{Если выбран Radiobutton1}
if not (form2.RadioButton2.Checked) and not (form2.RadioButton3.Checked)
then Label2.Caption:='<18';
{Если выбран Radiobutton2}
if not (form2.RadioButton1.Checked) and not (form2.RadioButton3.Checked)
then Label2.Caption:='18-60'
Но программа все равно выполняет только последний If. Не могу сделать так чтобы выполнялись все три IF в одной процедуре.
ПОМОГИТЕ,ПОЖАЛУЙСТА,НАЙТИ ВЫХОД
stronger, а зачем для проверки, что выбран первый бокс - проверять, что не выбраны другие 2? Проще же проверить единожды?
Нужно сделать так (синтаксис не помню):
if (checkbox1.Checked)
begin
label2.Caption = '111111';
end
else if (checkbox2.Checked)
begin
label2.Caption = '222222';
end
else if (checkbox3.Checked)
begin
label2.Caption = 333333';
end
Как - то вот так.
stronger
24-09-2013, 17:20
LilLoco, смотрел так тоже уже, вообще не работает, то есть label не присваивает значение, поэтому решил попробовать так как написал выше и так заработала, но выполняет только последнее условие
stronger, Так вы этот код поместите на в модуль формы где расположены чекбоксы, например, на событие клика по кнопке. Создайте экземпляр новой формы (где отчет), и этому экземпляру присвойте лейблам значения. Потом отобразите форму.
Уже забыл как это выглядит в делфи. Но в теории принцип таков.
А почему не использовать оператор case?
Сase RadioButton.ItemIndex of (или Сase CheckBox.State of)
0: // действие
1: // действие
2: // действие
end;
В коде LilLoco, можно убрать все else - фактически проверка без дополнительных вариантов, да и и конструкция begin...end, при проверке всего одного условия, станет излишней.
opel431, я не думаю, что begin...end, при проверке всего одного условия, станет излишней. »
- несет какое - либо неудобство. В дальнейшем, если придется добавить какое либо "действие" - не нужно будет добавлять их. Думаю - это "дело вкуса".
убрать все else - фактически проверка без дополнительных вариантов »
А смысл проверять остальные варианты, если логически - RadioButton может быть выбран только один.
Ну в коде с Checkbox я погорячился конечно, за что прошу прощения.
Да в принципе все так, но при одном заданном условии, как в вопросе, достаточно и просто ветки If...Then, а ветка Else нужна будет или для обработке исключительного случая, или для сообщения.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC