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;
|
请发表评论