Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.06.2011, 10:55   #1
demiancz
Форумчанин
 
Регистрация: 28.09.2010
Сообщений: 246
По умолчанию Оператор If Then и переменные

Здравствуйте. Я новичек. Потому и прошу помощи.
Есть НЕ правильный код в котором при нажатии на кнопку переменная t получает то значение которое нужно, а вот переменная k получает значение 140 независимо от того какой RadioButton выбран.

Код:
Цитата:
if ModuleForm.RadioButton1.Checked then
t:=1;
k:=20;
if ModuleForm.RadioButton2.Checked then
t:=21;
k:=40;
if ModuleForm.RadioButton3.Checked then
t:=41;
k:=60;
if ModuleForm.RadioButton4.Checked then
t:=61;
k:=80;
if ModuleForm.RadioButton5.Checked then
t:=81;
k:=100;
if ModuleForm.RadioButton6.Checked then
t:=101;
k:=120;
if ModuleForm.RadioButton7.Checked then
t:=121;
k:=140;
if ModuleForm.RadioButton8.Checked then
t:=1;
Если записать вот так:
Цитата:
if ModuleForm.RadioButton1.Checked then
t:=1;
if ModuleForm.RadioButton2.Checked then
t:=21;
if ModuleForm.RadioButton3.Checked then
t:=41;
if ModuleForm.RadioButton4.Checked then
t:=61;
if ModuleForm.RadioButton5.Checked then
t:=81;
if ModuleForm.RadioButton6.Checked then
t:=101;
if ModuleForm.RadioButton7.Checked then
t:=121;
if ModuleForm.RadioButton8.Checked then
t:=1;

if ModuleForm.RadioButton1.Checked then
k:=20;
if ModuleForm.RadioButton2.Checked then
k:=40;
if ModuleForm.RadioButton3.Checked then
k:=60;
if ModuleForm.RadioButton4.Checked then
k:=80;
if ModuleForm.RadioButton5.Checked then
k:=100;
if ModuleForm.RadioButton6.Checked then
k:=120;
if ModuleForm.RadioButton7.Checked then
k:=140;
то все работает правильно. Но это как то тупо. Ведь вдруг мне нужно будет при условии присвоить значении 5-6 переменным...

Помогите пожалуйста упростить код. Как правильно записать условие при котором 2 и более переменным присваивалось нужное значение?
Смотреть фильмы HD Фильмы для планшетов
demiancz вне форума Ответить с цитированием
Старый 27.06.2011, 11:01   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код:
if ModuleForm.RadioButton1.Checked then begin
  t:=1;
  k:=20;
end
else if ModuleForm.RadioButton2.Checked then begin
  t:=21;
  k:=40;
end
else ...
end;
Если это в событии OnClick то можно все гораздо эстетичней решить
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 27.06.2011, 11:02   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Код:
if ModuleForm.RadioButton1.Checked then begin
t:=1;
k:=20;
end;
if ModuleForm.RadioButton2.Checked then begin
t:=21;
k:=40; 
end;

и т.д.
а вообще, это т.н. индусский код
если уж по другому нельзя - выносите константы в массив и берите их по номеру баттона оттуда...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 27.06.2011, 11:03   #4
demiancz
Форумчанин
 
Регистрация: 28.09.2010
Сообщений: 246
По умолчанию

Спасибо большое. Работает.
Смотреть фильмы HD Фильмы для планшетов
demiancz вне форума Ответить с цитированием
Старый 27.06.2011, 13:28   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
если уж по другому нельзя
Можно конечно.
Задать компоненту свойство TAG согласно контрольному числу:

Код:
ModuleForm.RadioButton1.Tag:=1;
Описать для всех их одно и то же событие
Код:
procedure TForm1.RadioButton1Click(Sender: TObject);
begin
 k:=TRadioButton(sender).Tag;
end;
И не парить комп мегапрограммами
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Оператор выбора или условный оператор[Перенесено из JavaSE] merhaba1992 Помощь студентам 1 20.01.2011 17:06
Оператор условия или как сделать чтобы анализировало все переменные eriskay Помощь студентам 9 07.01.2011 00:19
Переменные экземпляра,класса, константы и переменные cop08 Общие вопросы .NET 3 20.12.2010 21:56
Вычислить используя, оператор цикла for и оператор безусловного пе Knubbe Помощь студентам 1 18.12.2009 10:24