Здравствуйте.
В StringGrid'е создал колонку со свойством cbsCheckboxColumn
В процессе работы значения чекбоксов меняются.
Как в итоге "пробежаться" по всем чекбоксам и выяснить их состояние ?
Lazarus IDE 0.9.31 FPC 2.4.3
"Пробежаться" по checkbox'ам
Модератор: Модераторы
Перебрать все чекбоксы в цикле?
WAYFARER писал(а):Перебрать все чекбоксы в цикле?
Да.
Т.е. как обратиться к полю как к объекту типа TCheckBox.
Поробуй так:
for i:=0 to checklistbox1.Count-1 do
begin
if checklistbox1.Checked[i] then
begin
showmessage(checklistbox1.Items.Strings[i]);
end;
end;
end;
for i:=0 to checklistbox1.Count-1 do
begin
if checklistbox1.Checked[i] then
begin
showmessage(checklistbox1.Items.Strings[i]);
end;
end;
end;
cepreu
Похоже Вы невнимательно прочитали первое сообщение.
Чекбоксы находятся внутри ячеек StringGrid.
Похоже Вы невнимательно прочитали первое сообщение.
Чекбоксы находятся внутри ячеек StringGrid.
- Brainenjii
- энтузиаст
- Сообщения: 1351
- Зарегистрирован: 10.05.2007 00:04:46
Как по обычным строкам. '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;
>Brainenjii
Благодарю за помощь. Всё получилось
Благодарю за помощь. Всё получилось
