Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Выбор CheckBox'ов 
V
    Опции темы
VanHelsing
Дата 11.11.2009, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


ХОЧУ ВСЕ ЗНАТЬ!!!
**
Награды: 1



Профиль
Группа: Участник
Сообщений: 288
Регистрация: 3.1.2008
Где: Екатеринбург

Репутация: нет
Всего: 6



Если честно то даже не знал как назвать эту тему.
Суть проблемы такова: имеются три компонента CheckBox и кнопка. По нажатию на кнопку, в зависимости от выбранных CheckBox передаются определенные аргументы в функцию. Например, выбран первый и третий CheckBox:
Код

 Function1(1, 1)
 Function1(3, 3)

Выбран второй и третий:
Код

 Function1(2, 2)
 Function1(3, 3)

В программе для этих целей используется огромное количество IF:
Код

 if (CheckBox1.Checked=true) and ( CheckBox3.Checked=true ) then
       begin
         Function1(1, 1);
         Function1(3, 3);
      end;

Возможно ли сделать все это более компактно?
P.S. программу писал не я, просто просят сделать более понятной.


--------------------
PM MAIL   Вверх
Frees
Дата 11.11.2009, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 16
Всего: 54



может TCheckListBox использовать и в цикле вызывать процедуру
или массив  CheckBox сделать или положить их на одну панель и переберать все компоненты панели

Добавлено через 5 минут и 14 секунд
вот как то так
Код

  //Panel1 - панель на которой лежат CheckBox
  //в tag CheckBox запиши значение параметра для функции
  for I := 0 to Panel1.ControlCount - 1 do
    if Panel1.Controls[I] is TCheckBox then
    begin
      Function1(Panel1.Controls[I].Tag, Panel1.Controls[I].Tag)
    end;



--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
VanHelsing
Дата 11.11.2009, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


ХОЧУ ВСЕ ЗНАТЬ!!!
**
Награды: 1



Профиль
Группа: Участник
Сообщений: 288
Регистрация: 3.1.2008
Где: Екатеринбург

Репутация: нет
Всего: 6



Frees понимаешь если выбрано например несколько CheckBox, то вызывается и несколько процедур. (выбрано 2, две процедуры)


--------------------
PM MAIL   Вверх
Frees
Дата 11.11.2009, 15:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 16
Всего: 54



Цитата(VanHelsing @  11.11.2009,  18:29 Найти цитируемый пост)
понимаешь если выбрано например несколько CheckBox, то вызывается и несколько процедур. (выбрано 2, две процедуры)

я так и понял мой код так и сделает вызовет Function1 для каждого CheckBox у которого стоит галка

Добавлено @ 15:35
проверку что стоит галка забыл
Код

  //Panel1 - панель на которой лежат CheckBox
  //в tag CheckBox запиши значение параметра для функции
  for I := 0 to Panel1.ControlCount - 1 do
    if (Panel1.Controls[I] is TCheckBox)and(TCheckBox(Panel1.Controls[I]).Checed) then
    begin
      Function1(Panel1.Controls[I].Tag, Panel1.Controls[I].Tag)
    end;


Это сообщение отредактировал(а) Frees - 11.11.2009, 15:38


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
Qu1nt
Дата 11.11.2009, 15:40 (ссылка) |    (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 602
Регистрация: 13.1.2007

Репутация: 22
Всего: 50



Код

  if CheckBox1.Checked then
    Function1(1, 1);
  if CheckBox2.Checked then
    Function1(2, 2);
  if CheckBox3.Checked then
    Function1(3, 3);



PM MAIL   Вверх
VanHelsing
Дата 11.11.2009, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


ХОЧУ ВСЕ ЗНАТЬ!!!
**
Награды: 1



Профиль
Группа: Участник
Сообщений: 288
Регистрация: 3.1.2008
Где: Екатеринбург

Репутация: нет
Всего: 6



FreesQu1nt спасибо большое за помощь. 
Предложение Qu1nt элементарное. Как я об этом не догадался(пытался что-то мудрить).
P.S.: попробую оба решения!!! smile 



--------------------
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0999 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.