2011-05-10 70 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作爲輸出值,並且剩餘的值,可以通過得到從頂部到底部迭代。