2015-08-25 43 views
1

我有DBGrid和DBGrid外部的「刪除」按鈕。我如何確定,該用戶在DBGrid中選擇了一些字符串?因爲如果打開窗體並在DBGrid中沒有選擇任何字符串,並且用戶單擊了按鈕「刪除」 - 我需要向他顯示警告框「沒有選擇字符串!選擇要刪除的字符串。」如何知道用戶在DBGrid中選擇了一些行?

回答

1

你需要看看DBGrid1.SelectedRows

procedure TForm24.Button1Click(Sender: TObject); 
var 
    BookmarkList: TBookmarkList; 
    Bookmark: TBookmark; 
    i: Integer; 
begin 
    BookmarkList := DBGrid1.SelectedRows; 

    if BookmarkList.Count = 0 then 
    ShowMessage('No strings selected! Select the string you want to delete') 
    else 
    begin 
    for i := 0 to BookmarkList.Count - 1 do 
    begin 
     ClientDataSet1.GotoBookmark(BookmarkList[i]); 
     ClientDataSet1.Delete; 
    end; 
    end; 
end; 
+0

'DBGrid1-> DataSource-> DataSet->的IsEmpty()'。這個字符串總是顯示FALSE。即使在DBGRID中選擇了一些字符串。 –

+2

@Jens - 我認爲你可能會將「選定記錄」的概念與**當前**記錄混淆。除非數據集爲空,否則總是有當前記錄,但取決於網格的設置,可能會有o,1或多個記錄**選中**。 – Deltics

+0

你是對的我已經更新了我的回答 –

7

你不說你的網格是否被設置爲使用dgRowSelect和/或dgMultiSelect與否。如果是,則通過SelectedRows屬性,當前選定行的列表可用作書籤列表。

如果沒有選中的記錄那麼這個列表將是空的,所以:

if myGrid.SelectedRows.Count = 0 then 
    // Nothing selected! 
+1

只有在'dgMultiSelect'爲真時才能使用。然後用戶可以刪除多個記錄。 –

+0

是的,這個問題不明確,這就是爲什麼我特別指出「**如果**它是[*設置爲dgMultiSelect *]」? – Deltics

相關問題