首页 > 其他分享 >delphi 再说TcxDBTreeList

delphi 再说TcxDBTreeList

时间:2023-03-15 15:55:31浏览次数:36  
标签:TcxDBTreeList 仓库 delphi 节点 再说 str 列表 cxDBTreeList1 select

1.当我们绑定好数据库之后,默认是全部折叠的,只显示   + 全部  

 

 

cxDBTreeList1.Root.getFirstChild.Expand(False);   //只展开第一层目录
cxDBTreeList1.FullExpand;  //展开所有节点
cxDBTreeList1.FullCollapse;  //折叠所有节点
if cxDBTreeList1.FocusedNode.Level=1 then   //判断是不是子节点,1是子节点,0是父节点
cxDBTreeList1.FocusedNode.Texts[0];  //当前选择的数据,也可以直接取FDQuery或者其他数据集中取
cxDBTreeList1.FocusedNode.Parent.Texts[0];  //获取当点选中节点的父节点,如果之上还有父父父...节点呢?思考一下
cxDBTreeList1.FocusedNode.HasChildren; //判断是否存在子节点

2.列标题默认是左对齐的,如果让列标题居中显示?

 

 

 右击cxDBTreeList1-Columns,弹出列管理窗口,在caption下设置 AlignHorz  为 taCenter 即可.顺便说一下 AlignVert 是设置标题垂直方向上的对齐方式的.

 

 

 3.FindPanel,也就是搜索框.

 

 

 特点:

  1.它太丑了.还不能拓展功能.

  2.它太丑了.按钮还不能自定义.

  3.它太丑了.样式也不能自定义.

  4.基本功能它都能满足,对UI无要求的话,用它就对了

自定义搜索框:我这里只加了一个scgpEdit,其他控件你们自己按业务来加

  

大概需求如下:

 

 为了让搜索结果,显示出节点结果,我花了一个早上来想这条SQL,我SQL学得也很浅,不知道有没有更优解,如果有的话,请给我留言(我这里用的是ACCESS数据库)

procedure T新增编码.ssEditChange(Sender: TObject);
var
  isql, str: string;
begin
  with FDQCK do
  begin
    Close;
    isql := 'select * from 仓库列表 WHERE 禁用=0 ';  //默认返回全部数据
    str := UpperCase(Trim(ssEdit.Text));
    if str <> '' then   //如果有在搜索,则返回带节点结构的数据集
      isql := 'select * from 仓库列表 where 仓库名称=' + QuotedStr('全部') +    //root节点  
        ' union ' +
        'select * from 仓库列表 where 禁用= 0 and 仓库名称 like ' + QuotedStr('%' + str + '%') +  //搜索结果
        ' union ' +
        'select 仓库列表.* from( 仓库列表 RIGHT join ' +
        '(select * from 仓库列表 where 禁用= 0 and 仓库名称 like ' + QuotedStr('%' + str + '%') + ') AS A ' +  //父节点
        ' on 仓库列表.仓库ID = A.父级ID)';
    SQL.Text := isql;
    Open();
    cxDBTreeList1.FullExpand; //全部展开
  end;
end;

效果如下:

 

标签:TcxDBTreeList,仓库,delphi,节点,再说,str,列表,cxDBTreeList1,select
From: https://www.cnblogs.com/yoooos/p/17218836.html

相关文章