Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Оператор If (http://forum.oszone.net/showthread.php?t=268579)

stronger 22-09-2013 21:37 2222188

Оператор If
 
Здравствуйте. У меня такая ситуация: в общем есть две формы . на 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 в одной процедуре.
ПОМОГИТЕ,ПОЖАЛУЙСТА,НАЙТИ ВЫХОД

LilLoco 23-09-2013 08:37 2222363

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 2223206

LilLoco, смотрел так тоже уже, вообще не работает, то есть label не присваивает значение, поэтому решил попробовать так как написал выше и так заработала, но выполняет только последнее условие

LilLoco 24-09-2013 17:28 2223210

stronger, Так вы этот код поместите на в модуль формы где расположены чекбоксы, например, на событие клика по кнопке. Создайте экземпляр новой формы (где отчет), и этому экземпляру присвойте лейблам значения. Потом отобразите форму.
Уже забыл как это выглядит в делфи. Но в теории принцип таков.

opel431 24-09-2013 18:14 2223245

А почему не использовать оператор case?

Сase RadioButton.ItemIndex of (или Сase CheckBox.State of)
0: // действие
1: // действие
2: // действие
end;

В коде LilLoco, можно убрать все else - фактически проверка без дополнительных вариантов, да и и конструкция begin...end, при проверке всего одного условия, станет излишней.

LilLoco 25-09-2013 08:18 2223547

opel431, я не думаю, что
Цитата:

Цитата opel431
begin...end, при проверке всего одного условия, станет излишней. »

- несет какое - либо неудобство. В дальнейшем, если придется добавить какое либо "действие" - не нужно будет добавлять их. Думаю - это "дело вкуса".

Цитата:

Цитата opel431
убрать все else - фактически проверка без дополнительных вариантов »

А смысл проверять остальные варианты, если логически - RadioButton может быть выбран только один.
Ну в коде с Checkbox я погорячился конечно, за что прошу прощения.

opel431 25-09-2013 10:25 2223600

Да в принципе все так, но при одном заданном условии, как в вопросе, достаточно и просто ветки If...Then, а ветка Else нужна будет или для обработке исключительного случая, или для сообщения.


Время: 07:47.

Время: 07:47.
© OSzone.net 2001-