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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.04.2010, 23:31   #1
inf-45
Новичок
Джуниор
 
Регистрация: 02.04.2010
Сообщений: 2
По умолчанию Суммация значение чекбоксов

Имеется форма. На форме - TabControl, содержащий несколько закладок, в каждой из которых - 20-30 чекбоксов.
Задача: каждый чекбокс имеет определенный "вес", определяемый в баллах. После отметки нужных чекбоксов по нажатию кнопки должен высчитываться суммарный балл и передаваться на другую форму. При повторном открытии формы с чекбоксами балл должен быть равен нулю.
Пока у меня реализовано это вот так:

PHP код:
procedure TForm1.CheckBox2Click(SenderTObject);
begin
if TCheckBox(Sender).Checked then  sum3:=sum3+TCheckBox(Sender).Tag/100 else
sum3:=sum3-TCheckBox(Sender).Tag/100;
end
Поскольку значения есть дробные, то используется округление. Значение каждого чекбокса лежит в tag.
Но, видимо, это не лучший вариант, поскольку, порой, эта система глючит и у меня оказывается отрицательный результат. Посоветуйте, как лучше это реализовать?
inf-45 вне форума Ответить с цитированием
Старый 03.04.2010, 00:05   #2
Marsel737
Форумчанин
 
Аватар для Marsel737
 
Регистрация: 09.11.2009
Сообщений: 669
По умолчанию

К примеру Tab1 - одна из вкладок.

Код:
procedure Button1Click(Sender: TObject);
var
  I: integer;
begin
  for I := 0 to Tab1.ComponentsCount - 1 do
  begin
    if (Tab1.Component[I] as TCheckBox).Checked then
      Sum := Sum + (Tab1.Component[I] as TCheckBox).Tag/100;
  end;
end;
И я ещё забыл сделать проверку на то компонент явялется чекбоксом, сами допишите
Код:
if Component[I] is TChekBox then
Я не всегда знаю, о чем говорю, но знаю, что прав. © Мухаммед Али.
К чёрту обстоятельства. Я создаю возможности. © Брюс Ли

Последний раз редактировалось Marsel737; 03.04.2010 в 00:08.
Marsel737 вне форума Ответить с цитированием
Старый 03.04.2010, 02:44   #3
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Цитата:
Значение каждого чекбокса лежит в tag.
Но, видимо, это не лучший вариант
Нормальный вариант, причина глюков не в этом.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 03.04.2010, 08:18   #4
inf-45
Новичок
Джуниор
 
Регистрация: 02.04.2010
Сообщений: 2
По умолчанию

Цитата:
Сообщение от mutabor Посмотреть сообщение
Нормальный вариант, причина глюков не в этом.
Так поясните же, в чём?
inf-45 вне форума Ответить с цитированием
Старый 03.04.2010, 13:11   #5
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Цитата:
Сообщение от inf-45 Посмотреть сообщение
Так поясните же, в чём?
Если Вы с событиями не напутали и у всех чекбоксов один обработчик, то тогда наверное в этом
http://www.delphikingdom.com/asp/vie...?catalogid=374

p.s. Если хотите привязать к чекбоксам вещественные значения, в Тэг их не впихнешь (можно конечно туда 4-х байтный Single засунуть, читать память напрямую и интерепретировать байты как Single, но это лишняя сложность), можно создать массив of Real а в тэгах чекбоксов хранить индексы.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти значение на другом листе и подставить значение следующей ячейки ElenaNTro Microsoft Office Excel 12 11.02.2019 12:44
Среднее значение Storm.7117 Microsoft Office Excel 3 13.01.2010 15:09
Возвращать значение Артур Иваныч Microsoft Office Excel 13 20.12.2009 16:02
выделение всех чекбоксов + onClick Yurka_kursant JavaScript, Ajax 8 14.04.2009 21:52
среднее значение tonic Microsoft Office Excel 1 04.01.2008 00:20