InfoDBGrid快速讀取勾選的項目

InfoDBGrid快速讀取勾選的項目

image

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;