开发者

Delphi TStringGrid multi select, determining selected rows

开发者 https://www.devze.com 2023-03-05 01:27 出处:网络
Is there anyway to determine which rows are currently selected in a multi-select TStringGrid, or a TCustomGrid for that matter.A property would be ideal.

Is there anyway to determine which rows are currently selected in a multi-select TStringGrid, or a TCustomGrid for that matter. A property would be ideal.

I know that there is the gdSelected property that gets set in the DrawCell event,

procedure DrawCell(ACol, ARow: Longint; ARect: TRect; AState: TGridDrawState);

I can check AState for gdSelected, and keep track of this in an array somewhere, b开发者_开发技巧ut this seems kludgey.


I guess you are talking about a range-select string grid, that is, a string grid with goRangeSelect in Options. Then you can use the Selection property. This is (essentially) a TRect in which you can find the upper-left and lower-right cell in the range selection.


Oooh, I'm use StringGrid.Selection.BottomRight.Y to determine rows and StringGrid.Selection.BottomRight.X for columns.


Use string grid selection property StringGrid.Selection.top will give you the top selected row, StringGrid.Selection.bottomwill give you the end selected row, where the selection stops.

Example:

If you select from row 3 to row 6 in a string grid thenStringGrid.Selection.top will give you 3 as an output value StringGrid.Selection.bottom will give you 6 as an output value, and remaining values you can get by iterating from the top to bottom.

0

精彩评论

暂无评论...
验证码 换一张
取 消