• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

delphicxgrid里面的虚拟字段的checkbox可以多选并抓取选定的数据字段 ...

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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;

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
MATLAB数值计算——0发布时间:2022-07-18
下一篇:
delphi xe 10.2.3 与delphi xe 8发布文件的写法不一样发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap