TAdvStringGrid
Example 62 : Checkbox based disjunct row selection
With this sample project, it is demonstrated how the checkboxes can be used to perform a disjunct row selection in the grid. This is done by adding a column of checkboxes in the grid and from the checkbox click event control the disjunct row selection state of the rows clicked.The grid is initialized with the code:
var i: integer; begin advstringgrid1.FixedCols := 0; advstringgrid1.ColWidths[0] := 20; advstringgrid1.Options := advstringgrid1.Options + [goRowSelect, goEditing]; advstringgrid1.RowCount := 20; advstringgrid1.ShowSelection := false; for i := 1 to advstringgrid1.RowCount -1 do advstringgrid1.AddCheckBox(0,i,false,false); advstringgrid1.RandomFill(false,100); end;
This code adds a checkbox in the first column for every row in the grid.
To let the row selection state reflect the checkbox state, the OnCheckBoxClick is implemented as:
procedure TForm1.AdvStringGrid1CheckBoxClick(Sender: TObject; ACol, ARow: Integer; State: Boolean); begin advstringgrid1.RowSelect[Arow] := State; end;
Finally, to obtain all selected rows and possibly perform some processing on these rows, this is done with:
var i: Integer; state: boolean; begin Listbox1.Items.Clear; for i := 1 to AdvStringGrid1.RowCount - 1 do begin if Advstringgrid1.GetCheckBoxState(0,i,state) then begin if state then begin AdvStringGrid1.SetCheckBoxState(0,i,false); ListBox1.Items.Add(AdvStringgrid1.Cells[1,i]); end; end; end; if listbox1.Items.Count = 0 then ShowMessage('No items selected'); AdvStringGrid1.Invalidate; end;
Delphi project & source files for downloading included in the main demos distribution for Delphi.
×