源代码下载
链接:https://pan.baidu.com/s/1kJTB0duF0c3hA3578MwOPA
提取码:14tw
更多知识,参见自带DEMO_C:\Program Files (x86)\FMSoft\Framework\uniGUI\Demos\Desktop\Grid - DBTreeGrid
ExpressDBTreeView学习(06) 原理一致。
01]只要设置UniDBTreeGrid1为数据库里的IdField,和其对应的idParentField,
02] code,Parent_code可以不显示在界面上,显示其他内容代替, 直接显示Name
03]获得结点名称
04]有个UseArrows设为True时,更好看
05]全部展开/收缩/只展开一级节点
06]动态插入数据
07]获得从根到叶结点的所有路径结点名
SELECT ccc.code ,ccc.parent_code, ccc.name from ccc
然后就可以预览效果
Delphi10.3的DBGrid中memo类型显示内容而不是(WIDEMEMO)(01)ForSQLite
01]只要设置UniDBTreeGrid1为数据库里的IdField,和其对应的idParentField,即可,UniGui会自动生成树显示,不用添加一行代码
02] code,Parent_code可以不显示在界面上,显示其他内容代替, 直接显示Name
在UniDBTreeGrid1的Columns上右键,Add item的一列
7
拖一个UniDBText1到界面上,设置它的DataField,DataSource
UniDBTreeGrid1.FullExpand; //全部展开 UniDBTreeGrid1.FullCollapse; //全部收缩
默认让UniDBTreeGrid展开一级节点
function store.nodeappend(sender, node, index, eOpts) { if (node.raw.depth==1) { node.expand(); } }
06]动态插入数据
fdquery2.SQL.Text:='insert into aaa values(90,3,''涂涂as'');'; fdquery2.ExecSQL; fdquery1.Refresh;
07]一定要点节点名,不能点 前头。
获得从根到叶结点的所有路径结点名,假设树最多,只有四层
procedure TMainForm.UniDBTreeGrid1CellClick(Column: TUniDBGridColumn); var aParentCode: string; // 假设根结点 的 parent_code为 aaa begin UniLabel1.Caption:= fdquery1.FieldByName('name').AsString ;; //fdquery1 是整个 树 //======================================第 2 层 parent========================================== aParentCode:= fdquery1.FieldByName('parent_code').AsString ; if aParentCode='aaa' then exit else begin fdquery2.Close; fdquery2.SQL.Text:='SELECT ccc.code ,ccc.parent_code, ccc.name from ccc where code = ' //fdquery2是找当前结点的 父结点 + aParentCode; fdquery2.Open; UniLabel1.Caption:= fdquery2.FieldByName('name').AsString +' / '+ UniLabel1.Caption ; aParentCode:= fdquery2.FieldByName('parent_code').AsString ; end; //=====================================第 3 层 parent=========================================== if aParentCode='aaa' then exit else begin fdquery2.Close; fdquery2.SQL.Text:='SELECT ccc.code ,ccc.parent_code, ccc.name from ccc where code = ' + aParentCode; fdquery2.Open; UniLabel1.Caption:= fdquery2.FieldByName('name').AsString +' / '+ UniLabel1.Caption ; aParentCode:= fdquery2.FieldByName('parent_code').AsString ; end; //======================================第 4 层 parent============================================ if aParentCode='aaa' then exit else begin fdquery2.Close; fdquery2.SQL.Text:='SELECT ccc.code ,ccc.parent_code, ccc.name from ccc where code = ' + aParentCode; fdquery2.Open; UniLabel1.Caption:= fdquery2.FieldByName('name').AsString +' / '+ UniLabel1.Caption ; end; end;
08]结点名前显示默认图标, 原理与 ExpressDBTreeView学习(06) 02]添加图标显示 类似