2011-05-10 51 views
2

是否有无论如何确定哪些行当前在多选TStringGridTCustomGrid中选择。一个物业将是理想的。德尔福TStringGrid多重选择,确定选定的行

我知道有是获取在DrawCell事件设置gdSelected属性,

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

我可以检查AStategdSelected,并跟踪该阵列中的某处,但这似乎kludgey。

回答

3

我想你正在谈论范围选择字符串网格,即Options中的goRangeSelect字符串网格。然后您可以使用Selection属性。这(本质上)是TRect,其中您可以在范围选择中找到左上角和右下角的单元格。

+1

我不认为这会工作,选定的行不一定是连续的。 – sse 2011-05-10 15:33:32

+2

@ user746911:不,我认为没有'扩展选择'(如在Ctrl单击单个单元格时)。然而,在我看来,'TStringGrid'不支持扩展选择。 (如果它确实如此 - 你是如何启用它的?!) – 2011-05-10 15:35:27

+0

AFAICT,@Andreas是对的。标准的'TStringGrid'不支持不连续的选择。但是,TDBGrid确实保留了所选行的书签列表('TDBGrid.SelectedRows'属性)。 – 2011-05-10 22:13:03

1

Oooh,我使用StringGrid.Selection.BottomRight.Y来确定行,StringGrid.Selection.BottomRight.X用于列。

0

使用字符串网格选择属性StringGrid.Selection.top会给你最上面的选定行,StringGrid.Selection.bottom会给你结束选定的行,选择停止。

实施例:

如果从第3行选择在一个字符串网格到行6则StringGrid.Selection.top会给你3作为输出值StringGrid.Selection.bottom会给你6作为输出值,并且剩余的值,可以通过得到从顶部到底部迭代。