Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Delphi - Оператор If

Ответить
Настройки темы
Delphi - Оператор If

Пользователь


Сообщения: 54
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

Отправлено: 21:37, 22-09-2013

 

В Поисках Истины


Сообщения: 802
Благодарности: 135

Профиль | Отправить PM | Цитировать


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
Как - то вот так.

-------
foreach(short w in new short[] {73,3,79,83,90,79,78,69}){
Console.Write((char)w);
}

Это сообщение посчитали полезным следующие участники:

Отправлено: 08:37, 23-09-2013 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Пользователь


Сообщения: 54
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

Отправлено: 17:20, 24-09-2013 | #3


В Поисках Истины


Сообщения: 802
Благодарности: 135

Профиль | Отправить PM | Цитировать


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

-------
foreach(short w in new short[] {73,3,79,83,90,79,78,69}){
Console.Write((char)w);
}


Отправлено: 17:28, 24-09-2013 | #4


Аватара для opel431

Ветеран


Contributor


Сообщения: 1803
Благодарности: 714

Профиль | Отправить PM | Цитировать


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

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

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

-------
Хвала тому, кто встав среди камней, уча другого, сам будет умней.


Последний раз редактировалось opel431, 25-09-2013 в 00:40.


Отправлено: 18:14, 24-09-2013 | #5


В Поисках Истины


Сообщения: 802
Благодарности: 135

Профиль | Отправить PM | Цитировать


opel431, я не думаю, что
Цитата opel431:
begin...end, при проверке всего одного условия, станет излишней. »
- несет какое - либо неудобство. В дальнейшем, если придется добавить какое либо "действие" - не нужно будет добавлять их. Думаю - это "дело вкуса".

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

-------
foreach(short w in new short[] {73,3,79,83,90,79,78,69}){
Console.Write((char)w);
}

Это сообщение посчитали полезным следующие участники:

Отправлено: 08:18, 25-09-2013 | #6


Аватара для opel431

Ветеран


Contributor


Сообщения: 1803
Благодарности: 714

Профиль | Отправить PM | Цитировать


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

-------
Хвала тому, кто встав среди камней, уча другого, сам будет умней.


Последний раз редактировалось opel431, 26-09-2013 в 01:33.


Отправлено: 10:25, 25-09-2013 | #7



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Delphi - Оператор If

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Как оператор округляет проценты united Мобильные ОС, смартфоны и планшеты 11 18-02-2008 13:19
[решено] Javascript - Оператор === hasherfrog Вебмастеру 5 25-07-2007 14:05
оператор If... Else Pandora Вебмастеру 9 29-07-2005 08:43
GPRS + Оператор kiro Мобильные ОС, смартфоны и планшеты 3 21-03-2004 21:19
Delphi - Оператор доступа в Delphi LedWorm Программирование и базы данных 6 29-02-2004 20:46




 
Переход