📄 filetreeview.pas
字号:
var
STreeNode:TTreeNode;
begin
Self.Items.BeginUpdate;
try
STreeNode := TreeFindItem(nil,ID);
if not (STreeNode = nil) then STreeNode.Delete;
finally
Self.Items.EndUpdate;
end;
end;
procedure TFileTreeView.TreeModifyItem(ItemList: TStrings);
var
FKey: PTNKEY;
begin
New(FKey);
FKey^.ID := ItemList[0];
FKey^.NODETYPE := ItemList[1];
FKey^.FILENAME := ItemList[2];
FKey^.MMROOMID := ItemList[3];
FKey^.PARENTID := ItemList[4];
Self.Items.BeginUpdate;
try
Self.Selected.Data:= FKey;
Self.Selected.Text:= ItemList[2];
if ItemList[1] = 'MMROOM' then
begin
Self.Selected.ImageIndex:=0;
Self.Selected.SelectedIndex:=0;
end;
if ItemList[1] = 'CLSC' then
begin
Self.Selected.ImageIndex:=1;
Self.Selected.SelectedIndex:=1;
end;
if ItemList[1] = 'USET' then
begin
Self.Selected.ImageIndex:=2;
Self.Selected.SelectedIndex:=2;
end;
finally
Self.Items.EndUpdate;
end;
end;
//移动节点
procedure TFileTreeView.TreeMoveItem(ParentID:string;ID:String);
begin
if ParentID = PTNKEY(TreeFindItem(nil,ID).Parent.Data)^.ID then Exit;
TreeFindItem(nil,ID).MoveTo(TreeFindItem(nil,ParentID),naAddChild);
end;
//得到节点ID值
function TFileTreeView.GetTreeNodeID():String;
begin
if Self.Items.Count = 0 then
Result:='0'
else begin
if Copy(PTNKEY(Self.Selected.Data)^.ID,1,1) = 'M' then
Result:=Copy(PTNKEY(Self.Selected.Data)^.ID,2,Length(PTNKEY(Self.Selected.Data)^.ID) - 1)
else
Result:=PTNKEY(Self.Selected.Data)^.ID;
end;
end;
function TFileTreeView.GetTreeNodeID(ID:string):String;
begin
if Self.Items.Count = 0 then
Result:='0'
else begin
if Copy(PTNKEY(TreeFindItem(nil,ID).Data)^.ID,1,1) = 'M' then
Result:=Copy(PTNKEY(TreeFindItem(nil,ID).Data)^.ID,2,Length(PTNKEY(TreeFindItem(nil,ID).Data)^.ID) - 1)
else
Result:=PTNKEY(TreeFindItem(nil,ID).Data)^.ID;
end;
end;
//得到节点NODETYPE值
function TFileTreeView.GetTreeNodeNODETYPE():String;
begin
if Self.Items.Count = 0 then
Result:=''
else
Result:=PTNKEY(Self.Selected.Data)^.NODETYPE;
end;
function TFileTreeView.GetTreeNodeNODETYPE(ID:string):String;
begin
if Self.Items.Count = 0 then
Result:=''
else
Result:=PTNKEY(TreeFindItem(nil,ID).Data)^.NODETYPE;
end;
//得到节点FILENAME值
function TFileTreeView.GetTreeNodeFILENAME():String;
begin
if Self.Items.Count = 0 then
Result:=''
else
Result:=PTNKEY(Self.Selected.Data)^.FILENAME;
end;
function TFileTreeView.GetTreeNodeFILENAME(ID:string):String;
begin
if Self.Items.Count = 0 then
Result:=''
else
Result:=PTNKEY(TreeFindItem(nil,ID).Data)^.FILENAME;
end;
//得到节点MMROOMID值
function TFileTreeView.GetTreeNodeMMROOMID():String;
begin
if Self.Items.Count = 0 then
Result:=''
else
Result:=PTNKEY(Self.Selected.Data)^.MMROOMID;
end;
function TFileTreeView.GetTreeNodeMMROOMID(ID:string):String;
begin
if Self.Items.Count = 0 then
Result:=''
else
Result:=PTNKEY(TreeFindItem(nil,ID).Data)^.MMROOMID;
end;
//得到节点PARENTID值
function TFileTreeView.GetTreeNodePARENTID():String;
begin
if Self.Items.Count = 0 then
Result:=''
else
Result:=PTNKEY(Self.Selected.Data)^.PARENTID;
end;
function TFileTreeView.GetTreeNodePARENTID(ID:string):String;
begin
if Self.Items.Count = 0 then
Result:=''
else
Result:=PTNKEY(TreeFindItem(nil,ID).Data)^.PARENTID;
end;
//角色的档案权限树
Procedure TFileTreeView.TreeCreateByRolePower(RoleCode:string);
var
adoquery:TADOQuery;
itemList:TStrings;
strSql: String;
sT:String;
begin
try
//建立档案室
strSql:='SELECT ID,C_MMROOMNAME FROM SYS_MMROOM ORDER BY C_MMROOMCODE';
adoquery := TADOQuery.Create(self);
adoquery.Connection:=FADOconn;
adoquery.SQL.add(strSql);
adoquery.Open;
Self.Items.Clear;
itemList:=TStringList.Create;
while not adoquery.Eof do
Begin
itemList.Add('M' + adoquery.Fields[0].AsString);
itemList.Add('MMROOM');
itemList.Add(adoquery.Fields[1].AsString);
itemList.Add(adoquery.Fields[0].AsString);
itemList.Add('');
TreeAddItem(itemList);
itemList.Clear;
adoquery.Next;
End;
adoquery.Close;
adoquery.SQL.Clear;
//建树
strSql:='SELECT ID,C_TYPE,C_EXPLAIN,I_MMROOMID,I_PARENTID FROM SYS_FILEMANAGE WHERE (C_TYPE = ''CLSC'' OR C_TYPE = ''USET'') ORDER BY C_TYPE,I_LEVEL,I_ORDER,I_PARENTID';
adoquery.SQL.add(strSql);
adoquery.Open;
while not adoquery.Eof do
Begin
itemList.Add(adoquery.Fields[0].AsString);
itemList.Add(adoquery.Fields[1].AsString);
if adoquery.Fields[1].AsString = 'CLSC' then
itemList.Add(adoquery.Fields[2].AsString)
else begin
sT:=GetValueBySQL('SELECT I_FILEID FROM SYS_GROUPFILEOP WHERE I_FILEID = ' + adoquery.Fields[0].AsString + ' AND C_GROUPCODE = ''' + RoleCode + '''');
if sT = '''' then
itemList.Add(adoquery.Fields[2].AsString + ' [无授权]')
else
itemList.Add(adoquery.Fields[2].AsString + ' [已授权]');
end;
itemList.Add(adoquery.Fields[3].AsString);
itemList.Add(adoquery.Fields[4].AsString);
TreeAddItem(itemList);
itemList.Clear;
adoquery.Next;
End;
adoquery.Close;
adoquery.Destroy;
if Self.Items.Count > 0 then
begin
Self.Items.Item[0].Selected:=true;
Self.FullCollapse;
Self.Items.Item[0].Expand(false);
//Self.Items.Item[0].Selected:=true;
end;
except
on E:Exception do
Messagebox(self.Handle,PAnsiChar('数据库操作失败!请检查数据连接是否正常。'+ chr(10) + chr(13) + '详细错误信息如下:' + chr(10) + chr(13) + E.Message),PAnsiChar('信息'),MB_OK+MB_ICONINFORMATION);
end;
end;
//用户的档案权限树
procedure TFileTreeView.TreeCreateByUserPower(UserID:string);
var
adoquery:TADOQuery;
itemList:TStrings;
strSql: String;
sT:String;
begin
try
//建立档案室
strSql:='SELECT ID,C_MMROOMNAME FROM SYS_MMROOM ORDER BY C_MMROOMCODE';
adoquery := TADOQuery.Create(self);
adoquery.Connection:=FADOconn;
adoquery.SQL.add(strSql);
adoquery.Open;
Self.Items.Clear;
itemList:=TStringList.Create;
while not adoquery.Eof do
Begin
itemList.Add('M' + adoquery.Fields[0].AsString);
itemList.Add('MMROOM');
itemList.Add(adoquery.Fields[1].AsString);
itemList.Add(adoquery.Fields[0].AsString);
itemList.Add('');
TreeAddItem(itemList);
itemList.Clear;
adoquery.Next;
End;
adoquery.Close;
adoquery.SQL.Clear;
//建树
strSql:='SELECT ID,C_TYPE,C_EXPLAIN,I_MMROOMID,I_PARENTID FROM SYS_FILEMANAGE WHERE (C_TYPE = ''CLSC'' OR C_TYPE = ''USET'') ORDER BY C_TYPE,I_LEVEL,I_ORDER,I_PARENTID';
adoquery.SQL.add(strSql);
adoquery.Open;
while not adoquery.Eof do
Begin
itemList.Add(adoquery.Fields[0].AsString);
itemList.Add(adoquery.Fields[1].AsString);
if adoquery.Fields[1].AsString = 'CLSC' then
itemList.Add(adoquery.Fields[2].AsString)
else begin
sT:=GetValueBySQL('SELECT I_SET FROM SYS_USERFILEOP WHERE I_FILEID = ' + adoquery.Fields[0].AsString + ' AND I_USERID = ' + UserID );
if sT = '''' then
itemList.Add(adoquery.Fields[2].AsString + ' [无授权]')
else if sT = '-1' then
itemList.Add(adoquery.Fields[2].AsString + ' [拒绝授权]')
else
itemList.Add(adoquery.Fields[2].AsString + ' [已授权]')
end;
itemList.Add(adoquery.Fields[3].AsString);
itemList.Add(adoquery.Fields[4].AsString);
TreeAddItem(itemList);
itemList.Clear;
adoquery.Next;
End;
adoquery.Close;
adoquery.Destroy;
if Self.Items.Count > 0 then
begin
Self.Items.Item[0].Selected:=true;
Self.FullCollapse;
Self.Items.Item[0].Expand(false);
end;
except
on E:Exception do
Messagebox(self.Handle,PAnsiChar('数据库操作失败!请检查数据连接是否正常。'+ chr(10) + chr(13) + '详细错误信息如下:' + chr(10) + chr(13) + E.Message),PAnsiChar('信息'),MB_OK+MB_ICONINFORMATION);
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -