delphi cxgrid里面的虛擬字段的checkbox可以多選並抓取選定的數據字段


cxgrid里面的虛擬字段的checkbox可以多選需要設置:SmartRefresh:=True;KeyFieldNames=主鍵字段

 

多選checkbox以后循環抓取相應的字段:

var
ordersn:string;
sSQL,Fsql,scripno: string;
rptName: string;
ch: Boolean;
i, j: Integer;
flrft : Boolean; //過濾狀態標志
artFlt : Boolean; //代碼引起過濾標志
mStream : TStream; //存儲客戶設置過濾條件的內存流
begin
inherited;
ordersn:=adsMaster.fieldbyname('scripno').asstring;
try
mStream:=TMemoryStream.Create;
scripno:='';
artFlt:=true;//設置將要改變過濾的標志
mStream.Position:=0;//流指針指向開始位
tv_grdOrder.DataController.Filter.Root.Criteria.SaveToStream(mStream);//將過濾狀態存入流
flrft:=tv_grdOrder.DataController.Filter.Active;//保存過濾狀態是否激活
tv_grdOrder.DataController.Filter.Root.Clear;//清除原有過濾設置
tv_grdOrder.DataController.Filter.Root.AddItem(tv_grdOrder.Columns[0],foEqual,'True','√ ');//以0列為真過濾
tv_grdOrder.DataController.Filter.Active:=True;//激活過濾
ch:=tv_grdOrder.DataController.FilteredRecordCount>0;//過濾后的記錄數
if ch then //過濾后有記錄數
begin
for j:=0 to tv_grdOrder.ViewData.RowCount-1 do//以行數循環
begin
adsmaster.RecNo:=tv_grdOrder.ViewData.Rows[j].RecordIndex+1;
if(scripno<>'')then
scripno:=scripno+',';
scripno:=scripno+ QuotedStr(adsmaster.fieldbyname('scripno').AsString);
end;
end;
//恢復客戶過濾狀態:
tv_grdOrder.DataController.Filter.Root.Clear;//清除原有過濾設置
mStream.Position:=0;
tv_grdOrder.DataController.Filter.Root.Criteria.LoadFromStream(mStream);
tv_grdOrder.DataController.Filter.Active:=flrft;
artFlt:=false;
finally

end;
Doopendata();
adsMaster.Locate('scripno', ordersn, []);
if scripno='' then scripno:=QuotedStr(adsmaster.fieldbyname('scripno').AsString);

end;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM