"Пробежаться" по checkbox'ам

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
bestonix
новенький
Сообщения: 66
Зарегистрирован: 15.04.2010 08:26:00
Откуда: Жигулёвск

"Пробежаться" по checkbox'ам

Сообщение bestonix »

Здравствуйте.

В StringGrid'е создал колонку со свойством cbsCheckboxColumn
В процессе работы значения чекбоксов меняются.
Как в итоге "пробежаться" по всем чекбоксам и выяснить их состояние ?

Lazarus IDE 0.9.31 FPC 2.4.3
Аватара пользователя
WAYFARER
энтузиаст
Сообщения: 564
Зарегистрирован: 09.10.2009 00:00:04
Откуда: г. Курган

Сообщение WAYFARER »

Перебрать все чекбоксы в цикле?
bestonix
новенький
Сообщения: 66
Зарегистрирован: 15.04.2010 08:26:00
Откуда: Жигулёвск

Сообщение bestonix »

WAYFARER писал(а):Перебрать все чекбоксы в цикле?

Да.
Т.е. как обратиться к полю как к объекту типа TCheckBox.
cepreu
новенький
Сообщения: 24
Зарегистрирован: 01.05.2007 13:20:15
Откуда: г.Киев

Сообщение cepreu »

Поробуй так:
for i:=0 to checklistbox1.Count-1 do
begin
if checklistbox1.Checked[i] then
begin
showmessage(checklistbox1.Items.Strings[i]);
end;
end;

end;
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

cepreu
Похоже Вы невнимательно прочитали первое сообщение. ;)
Чекбоксы находятся внутри ячеек StringGrid.
Аватара пользователя
Brainenjii
энтузиаст
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Сообщение Brainenjii »

Как по обычным строкам. '1' - выделенный CheckBox, '0' - не выделенный, '' - среднее значение:

Код: Выделить всё

Procedure TForm1.FormCreate(Sender: TObject);
Begin
  fGrid := TStringGrid.Create(Application);
  With fGrid Do
    Begin
      Parent := Self;
      Align := alClient;
      Columns.Add.ButtonStyle := cbsCheckboxColumn;
      Options := Options + [goEditing];
      RowCount := 5;
    End;

  fButton := TButton.Create(Application);
  With fButton Do
    Begin
      Parent := Self;
      Align := alTop;
      OnClick := @ButtonClick;
    End;
end;

Procedure TForm1.ButtonClick(Sender: TObject);
Var
  i: integer;
  aBuffer: String = '';
Begin
  For i := 0 To fGrid.RowCount - 1 Do
    aBuffer +=  fGrid.Cells[1, i] + ';';
  Caption := aBuffer;
end;
bestonix
новенький
Сообщения: 66
Зарегистрирован: 15.04.2010 08:26:00
Откуда: Жигулёвск

Сообщение bestonix »

>Brainenjii

Благодарю за помощь. Всё получилось
Ответить