Dbgrid在多選的狀態下怎樣判斷有哪幾行被選中?
gdSelected in State 只能判斷當前選中行,不能判斷選中了哪幾行。
uj5u.com熱心網友回復:
Delphi 自帶的DBGrid不支持多選。多選,可使用第三方控制元件。或自己繼承一個新的DBGrid。
uj5u.com熱心網友回復:
var i:integer;
begin
for i:=0 to DBGrid1.SelectedRows.Count - 1 do
begin
DBGrid1.DataSource.DataSet.GotoBookmark(Pointer(DBGrid1.SelectedRows.Items[i]));
ShowMessage(DBGrid1.DataSource.DataSet.Fields[0].AsString);
end;
end;
uj5u.com熱心網友回復:
我不是要取選中的資料,我是要知道哪幾行選中了,然后選中的行變色
就象這樣,當前行沒選中不會變色,只有選中的行會變色
uj5u.com熱心網友回復:
前面回帖理解錯誤,現回帖如下:1、設定DBGrid可以多選:
設定Option中的dgRowSelect為True。
2、在DBGrid界面,通過shift+Ctrl+滑鼠點擊,選中行,選中的行,顯示為藍色。
3、選擇多行的代碼操作: 使用回圈,通過判斷,找到行列。
With DBGrid1.DataSouece.DataSet do
begin
First;
while not Eof do
begin
if DBGrid1.SelectedRows.CurrentRowSelected then // 獲得選中行
begin
for i := 0 to DbGrid1.Columns.Count - 1 do // 獲得名列
begin
DBGrid1.Columns.Items[i].Field.Value // 獲得行列值
end;
end;
Next;
end;
end;
uj5u.com熱心網友回復:
使用SelectedRows和書簽 bookmark即可處理uj5u.com熱心網友回復:
請大家仔細看看我三樓的圖,只有選中的行變色,沒選中的行(即使這行是當前行)是不變色的,就像圖上的第3行一樣。uj5u.com熱心網友回復:
2樓和4樓都是獲取選中行的值的代碼,不是我想要的。不過也還是要謝謝兩位抽空看了我的問題,謝謝!uj5u.com熱心網友回復:
選中本來就是自動變色。不需要另外寫程序設定底色uj5u.com熱心網友回復:
用DBGridEh實作比較省事uj5u.com熱心網友回復:
用CXgrid,checkboxuj5u.com熱心網友回復:
使用DBGridEh,將Option里面的dgRowSelect和dgMultiSelect設為true,即可按住ctrl選擇多行,但是這樣的話不允許修改單元格。uj5u.com熱心網友回復:
下面代碼,可以實作:if self.DBGridEh1.Selection.SelectionType=gstRectangle then
self.DBGridEh1.DataSource.DataSet.Bookmark:=dbgridEh1.Selection.Rect.TopRow;
while not self.ADOQuery1.Eof do
begin
if DBGridEh1.DataSource.Dataset.CompareBookmarks(TBookmark(DBGridEh1.Selection.Rect.BottomRow),
TBookmark(DBGridEh1.DataSource.DataSet.Bookmark)) = 0 then Break;
showMessage(self.ADOQuery1.FieldByName('a0188').Asstring);
self.ADOQuery1.Next;
end;
uj5u.com熱心網友回復:
字體變色控制是表格的ONDRAWDATACELL事件中判斷SELECTED,然后將GRID的FONT的顏色改變轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/60236.html
標籤:語言基礎/算法/系統設計
上一篇:誰能幫我把這段代碼轉成C#
