首页 > 其他 > 详细

Unigui树形TreeView的使用

时间:2020-08-09 20:10:05      阅读:102      评论:0      收藏:0      [点我收藏+]

Treeview使用还是较多的,树形结构的生成,在管理系统中部门架构使用的很多,并且可能还有多个窗体多次调用。在Unigui开的时候,为了提高生成的效率,我吧树形TUniMenuItem在主页面生成,共享给其他页面使用的treeview控件使用。为了提高遍历效率,第一次吧所有节点数据载入的内存表,在内存表中在进行操作。

部门表有ID,dept_name,Parent_id

 

功能预览地址 http://ehr.kopsoft.cn:82/

 

1,生成第一级菜单

procedure TAppMainForm.GetDept;
var
MenuItem: TUniMenuItem;
vrtltbl_dept: TVirtualTable;
begin

unqry_dept.Close;
unqry_dept.SQL.Text := ‘SELECT * FROM [dbo].[Table_HR_Department] WHERE [IS_CANCEL]=0 ORDER BY ORDER_ID‘;
unqry_dept.Open;

vrtltbl_dept := TVirtualTable.Create(Self);
vrtltbl_dept.Assign(unqry_dept);
vrtltbl_dept.Open;

vrtltbl_dept.Filtered := False;
vrtltbl_dept.Filter := ‘DEPT_PARENT_ID=‘ + IntToStr(0);
vrtltbl_dept.Filtered := True;

while not vrtltbl_dept.eof do
begin
MenuItem := TUniMenuItem.Create(Self);
MenuItem.Caption := vrtltbl_dept.FieldByName(‘DEPT_NAME‘).AsString;
MenuItem.Tag := vrtltbl_dept.FieldByName(‘DEPT_ID‘).AsInteger;
unmntms_Main_Dept.Items.Add(MenuItem);

GetChildDept(MenuItem);//子节点的递归
vrtltbl_dept.Next;
end;

end;

 

 

 

 

2,子节点递归


procedure TAppMainForm.GetChildDept(ParentMenuIte: TUniMenuItem);
var
ChildMenuItem: TUniMenuItem;
vt: TVirtualTable;
begin
vt := TVirtualTable.Create(Self);
vt.Assign(unqry_dept);
vt.Open;

vt.Filtered := False;
vt.Filter := ‘DEPT_PARENT_ID=‘ + IntToStr(ParentMenuIte.Tag);
vt.Filtered := True;

while not vt.Eof do
begin

ChildMenuItem := TUniMenuItem.Create(Self);
ChildMenuItem.Caption := vt.FieldByName(‘DEPT_NAME‘).AsString;
ChildMenuItem.Tag := vt.FieldByName(‘DEPT_ID‘).AsInteger;
ParentMenuIte.Add(ChildMenuItem);

GetChildDept(ChildMenuItem);
vt.Next;
end;
vt.Destroy;

end;

Unigui树形TreeView的使用

原文:https://www.cnblogs.com/Unigui/p/13463896.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!