Example 48 : disjunct cell selectionSome new properties enable easy disjunct cell selections in TAdvStringGrid. The methods and properties to be used for this are :
Grid.MouseActions.DisjunctCellSelect: Boolean; Setting this true enables disjunct cell selection with Ctrl mouse clicks
Grid.SelectedCells[col,row: Integer]: Boolean; Property to allow setting or clearing selection on a single cell
Grid.SelectedCellsCount: Integer; Returns the number of disjunct selected cells (read-only)
Grid.SelectedCell[i: Integer]: TGridCoord; Returns the i'th selected cell grid coordinates (read-only)
Grid.ClearSelectedCells; Clears all disjunct selected cells in the grid
With this interface, handling disjunct cell selections becomes very simple as the sample app shows.
To make a checkerboard disjunct cell selection, following code was written:
var i,j: Integer; begin AdvStringGrid1.ClearSelectedCells; with AdvStringGrid1 do for i := 1 to ColCount - 1 do for j := 1 to RowCount - 1 do SelectedCells[i,j] := (odd(i) and odd(j)) or (not odd(i) and not odd(j)); end;
This is the method to show a list of selected cells in a listbox:
var i: Integer; gc: TGridCoord; begin listbox1.Items.Clear; listbox1.Items.Add('Nr. of cells : ' + IntToStr(AdvStringGrid1.SelectedCellsCount)); for i := 1 to AdvStringGrid1.SelectedCellsCount do begin gc := AdvStringGrid1.SelectedCell[i - 1]; listbox1.Items.Add(IntToStr(gc.X)+':'+IntToStr(gc.Y)); end; end;
Delphi project & source files for downloading included in the main demos distribution for Delphi.