Unigui树形TreeView的使⽤
Treeview使⽤还是较多的,树形结构的⽣成,在管理系统中部门架构使⽤的很多,并且可能还有多个窗体多次调⽤。在Unigui开的时候,为了提⾼⽣成的效率,我吧树形TUniMenuItem在主页⾯⽣成,共享给其他页⾯使⽤的treeview控件使⽤。为了提⾼遍历效率,第⼀次吧所有节点数据载⼊的内存表,在内存表中在进⾏操作。
部门表有ID,dept_name,Parent_id
免费⼈⼒资源管理软件,免费Mes系统,免费仓库管理软件WMS
功能预览地址
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 f 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;
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论