码迷,mamicode.com
首页 > 其他好文 > 详细

局域网技术

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

标签:同步控制   lis   集中   alt   利用   最大   改进   空闲   算法   

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;

局域网技术

标签:同步控制   lis   集中   alt   利用   最大   改进   空闲   算法   

原文地址:https://blog.51cto.com/4097978/2518142

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!