InfoDBGrid快速讀取勾選的項目
var selectedRowCount:Integer;
begin
try
cdsProducts.DisableControls; //關閉控制項的處理事件
selectedRowCount:= grdProducts.CheckedRecords.Count;
for I:= 0 to selectedRowCount -1 do
begin
//下面是重點:當infodbgrid在進行勾選時,會將記錄(書籤)的參考放到CheckedRecords的容器中
//所以只要單純去處理CheckedRecords容器中的items集合,轉型回指針型別再用clientdataset的方法gotobookmark
//移到那筆資料,之後再做自己想做的事,例如:塞資料…
cdsProducts.GotoBookmark(Pointer(grdProducts.CheckedRecords.Items[I]));
cdsDetail.InsertRecord([nil,nil,nil,
cdsProducts.FieldByName('ItemName').AsString,
cdsProducts.FieldByName('Itemcode').AsString,
nil,nil,nil,nil,
cdsMaster.FieldByName('SDate').AsString,
cdsMaster.FieldByName('EDate').AsString]);
//中間省略處理
Application.ProcessMessages;
end;
finally
cdsProducts.EnableControls;//回復控制項的處理事件
end;
end;