求助急急急急急!按某个条件分组后怎么做部分全选

coffee__lover 2014-02-12 03:49:58

本来是上图这样,点击左边这个全选,可以选择按钮全部全选
现在比如按照省编码分组之后,在捕捉到点击+号,点击下图
全选按钮,把+号下面的选择框全选
请教dephi大神,给个思路该怎么做,或者给下代码,3QQQQQQQQ

...全文
325 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
火龙岛主 2014-04-02
  • 打赏
  • 举报
回复
换个控件cxTreeList
coffee__lover 2014-03-26
  • 打赏
  • 举报
回复
引用 2 楼 simonhehe 的回复:
第一个全选是整个table遍历并选中下级. 第二个全选先定位到选中的分组, 然后选中下级.
procedure TfrmFymxsh.cxchckbx1PropertiesEditValueChanged(
  Sender: TObject);
var
  i: Integer;
begin
    inherited;
   if cxchckbx1.Checked then          //全选
    begin
      for i := 0 to Grd_mxlbDBTV.ViewData.RowCount-1 do begin
       if Grd_mxlbDBTV.ViewData.Rows[i].IsData then
         Grd_mxlbDBTV.ViewData.Rows[i].Values[0]:=true;
      end;
    end
   else    //反选
   begin
      for i := 0 to Grd_mxlbDBTV.ViewData.RowCount-1 do begin
       if Grd_mxlbDBTV.ViewData.Rows[i].IsData then
         Grd_mxlbDBTV.ViewData.Rows[i].Values[0]:=false;
      end;
   end;
end; 
我现在就写成这样了,能选中展开分组下的选择框。但是有个bug,就是对选中的选择框进行操作的时候,提示没有选择 选择框!
coffee__lover 2014-03-26
  • 打赏
  • 举报
回复
引用 6 楼 simonhehe 的回复:
做个判断就可以, 下边是示意代码
procedure TfrmFymxsh.cb_select_allPropertiesEditValueChanged(
  Sender: TObject);
begin
  inherited;
  if cds_mxlb.RecordCount = 0 then
    cb_select_all.Checked := false;
  cds_mxlb.DisableControls;
  if cb_select_all.Checked then   //全选
  begin
    cds_mxlb.First;
    while not cds_mxlb.Eof do
    begin
    cds_mxlb.Edit;
    cds_mxlb.FieldByName('select').AsBoolean := true;
    cds_mxlb.Post;
    cds_mxlb.Next;
    end;
  end
  else
  if cb_select_Curr.Checked then   //选中当前
  begin
    cds_mxlb.First;
    while not cds_mxlb.Eof do
    begin
    	//如果明显表中的地区编码等于当前选中的分组编码, 则选中
    	if cds_mxlb.FieldByName('dqbm').AsString = 'aaa' then
    	begin
		    cds_mxlb.Edit;
		    cds_mxlb.FieldByName('select').AsBoolean := true;
		    cds_mxlb.Post;
    	end;
    	cds_mxlb.Next;
    end;
  end
  else    //全不选
  begin
    cds_mxlb.First;
    while not cds_mxlb.Eof do
    begin
      cds_mxlb.Edit;
      cds_mxlb.FieldByName('select').AsBoolean := false;
      cds_mxlb.Post;
      cds_mxlb.Next;
    end;
  end;
  cds_mxlb.EnableControls;
  cds_mxlb.First;
end;
if cds_mxlb.FieldByName('dqbm').AsString = 'aaa' then 这段是什么意思啊,aaa 是什么
踏雪无痕 2014-02-14
  • 打赏
  • 举报
回复
我的想法是:点击全选按钮,先取消所有选择,再遍历展开的组,最后选择展开组的数据行
simonhehe 2014-02-14
  • 打赏
  • 举报
回复
做个判断就可以, 下边是示意代码
procedure TfrmFymxsh.cb_select_allPropertiesEditValueChanged(
  Sender: TObject);
begin
  inherited;
  if cds_mxlb.RecordCount = 0 then
    cb_select_all.Checked := false;
  cds_mxlb.DisableControls;
  if cb_select_all.Checked then   //全选
  begin
    cds_mxlb.First;
    while not cds_mxlb.Eof do
    begin
    cds_mxlb.Edit;
    cds_mxlb.FieldByName('select').AsBoolean := true;
    cds_mxlb.Post;
    cds_mxlb.Next;
    end;
  end
  else
  if cb_select_Curr.Checked then   //选中当前
  begin
    cds_mxlb.First;
    while not cds_mxlb.Eof do
    begin
    	//如果明显表中的地区编码等于当前选中的分组编码, 则选中
    	if cds_mxlb.FieldByName('dqbm').AsString = 'aaa' then
    	begin
		    cds_mxlb.Edit;
		    cds_mxlb.FieldByName('select').AsBoolean := true;
		    cds_mxlb.Post;
    	end;
    	cds_mxlb.Next;
    end;
  end
  else    //全不选
  begin
    cds_mxlb.First;
    while not cds_mxlb.Eof do
    begin
      cds_mxlb.Edit;
      cds_mxlb.FieldByName('select').AsBoolean := false;
      cds_mxlb.Post;
      cds_mxlb.Next;
    end;
  end;
  cds_mxlb.EnableControls;
  cds_mxlb.First;
end;
coffee__lover 2014-02-13
  • 打赏
  • 举报
回复
大侠们帮帮忙啊
coffee__lover 2014-02-13
  • 打赏
  • 举报
回复
引用 2 楼 simonhehe 的回复:
第一个全选是整个table遍历并选中下级. 第二个全选先定位到选中的分组, 然后选中下级.
我第一个全选按钮是这么做的 procedure TfrmFymxsh.cb_select_allPropertiesEditValueChanged( Sender: TObject); begin inherited; if cds_mxlb.RecordCount = 0 then cb_select_all.Checked := false; cds_mxlb.DisableControls; if cb_select_all.Checked then //全选 begin cds_mxlb.First; while not cds_mxlb.Eof do begin cds_mxlb.Edit; cds_mxlb.FieldByName('select').AsBoolean := true; cds_mxlb.Post; cds_mxlb.Next; end; end else //全不选 begin cds_mxlb.First; while not cds_mxlb.Eof do begin cds_mxlb.Edit; cds_mxlb.FieldByName('select').AsBoolean := false; cds_mxlb.Post; cds_mxlb.Next; end; end; cds_mxlb.EnableControls; cds_mxlb.First; end;
coffee__lover 2014-02-13
  • 打赏
  • 举报
回复
引用 2 楼 simonhehe 的回复:
第一个全选是整个table遍历并选中下级. 第二个全选先定位到选中的分组, 然后选中下级.
对dephi不是很懂,大神能否简单写下代码给我参考一下
simonhehe 2014-02-13
  • 打赏
  • 举报
回复
第一个全选是整个table遍历并选中下级. 第二个全选先定位到选中的分组, 然后选中下级.
coffee__lover 2014-02-12
  • 打赏
  • 举报
回复
用的是tcxGrid 控件
课程介绍:第一章:正则表达式(regularexpression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。第二章:http协议是一种无状态协议,不记录用户行为,我们可以利用cookie记录数据,方便用户操作,提升用户体验。第三章:ECMAScript6.0(以下简称ES6)是JavaScript语言的下一代标准,已经在2015年6月正式发布了。它的目标,是使得JavaScript语言可以用来编写复杂的大型应用程序,成为企业级开发语言。第四章:本章主要讲解JS动画原理、动画函数封装和轮播。第五章:本章主要讲解面向对象、构造函数和继承、原型链和继承。第六章:本节课程主要讲解了什么是Ajax、如何使用Ajax发送get请求、如何使用Ajax发送post请求、JSON数据格式、回调地狱、Promise和Ajax的同源策略、跨域请求。第七章:本章主要讲解html、val、attr、prop、class、全选框、动画、节点遍历、ajax、sonp、event、multiple、plugin、plugin、magnifier。第八章:本章主要讲解UML类图、单例模式、工厂模式、策略模式、代理模式、观察者模式。第九章:本章主要讲解为什么要模块化、原生JS中,模块的写法、AMD、CommonJS&Webpack。第十章:本节课程主要讲解了服务器安装环境配置、端口及ip基本常识、简单认识PHP(helloworld)、基本语法和动态网页原理。第十一章:本节课程主要讲解了什么是SASS、SASS的预处理、ass语法(变量、嵌套、导入、mixin、扩展、function、expression)。第十二章:本节课程主要讲解了什么是GULP、GULP环境配置、GULP基本使用及GULP的插件安装与使用。

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧