1. Объявляем переменную типа byte; 2. При выборе любого чекбокса увеличивать ее на 1 3. Если чекбокс не выбран то соответственно +0 (не прибавлять) 4. Общие чекбоксы в переменную не записывать 5. Button2 - обнуление всех чекбоксов (якобы новая страница) 6. Button1 - показать результат (сумму всех значений для каждого чекбокса)
Что-то типа flag:=flag+1;
Например: А=1 А+А=2 ...
IUnknown
15.03.2012 22:48
procedure TForm1.Button2Click(Sender: TObject); var s, i : Integer; begin s := 0; for i := 1 to 96 do begin if (i mod 16 <> 0) and (FindComponent('Checkbox'+Inttostr(i)) as TCheckBox).Checked then Inc(s); end; ShowMessage('Total = ' + IntToStr(s)); end;
Обнуление - либо аналогично, в цикле сбрасывать все чекбоксы от 1 до 96, либо гораздо более быстрым циклом:
procedure TForm1.Button1Click(Sender: TObject); var i : integer; begin for i := 1 to 6 do begin (FindComponent('Checkbox'+Inttostr(16 * i)) as TCheckBox).Checked := false; end; end;
Кстати,
for i:=1 to 15 do if CheckBox16.checked then TCheckbox(FindComponent('Checkbox'+Inttostr(i))).checked:=true else TCheckbox(FindComponent('Checkbox'+Inttostr(i))).checked:=false;
делать не обязательно. Можно сделать проще:
for i:=1 to 15 do TCheckbox(FindComponent('Checkbox'+Inttostr(i))).checked := CheckBox16.checked;
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.