📄 tbltreeview.~pas
字号:
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 TTBLTreeView.TreeRemoveItem();
begin
Self.Items.BeginUpdate;
try
Self.Selected.Delete;
finally
Self.Items.EndUpdate;
end;
end;
procedure TTBLTreeView.TreeRemoveItem(ID:string);
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 TTBLTreeView.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;
procedure TTBLTreeView.TreeLocation(ID:String);
begin
TreeFindItem(nil,ID).Selected:=true;
end;
//得到节点ID值
function TTBLTreeView.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 TTBLTreeView.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 TTBLTreeView.GetTreeNodeNODETYPE():String;
begin
if Self.Items.Count = 0 then
Result:=''
else
Result:=PTNKEY(Self.Selected.Data)^.NODETYPE;
end;
function TTBLTreeView.GetTreeNodeNODETYPE(ID:string):String;
begin
if Self.Items.Count = 0 then
Result:=''
else
Result:=PTNKEY(TreeFindItem(nil,ID).Data)^.NODETYPE;
end;
//得到节点TBLNAME值
function TTBLTreeView.GetTreeNodeTBLNAME():String;
begin
if Self.Items.Count = 0 then
Result:=''
else
Result:=PTNKEY(Self.Selected.Data)^.TBLNAME;
end;
function TTBLTreeView.GetTreeNodeTBLNAME(ID:string):String;
begin
if Self.Items.Count = 0 then
Result:=''
else
Result:=PTNKEY(TreeFindItem(nil,ID).Data)^.TBLNAME;
end;
//得到节点MMROOMID值
function TTBLTreeView.GetTreeNodeMMROOMID():String;
begin
if Self.Items.Count = 0 then
Result:=''
else
Result:=PTNKEY(Self.Selected.Data)^.MMROOMID;
end;
function TTBLTreeView.GetTreeNodeMMROOMID(ID:string):String;
begin
if Self.Items.Count = 0 then
Result:=''
else
Result:=PTNKEY(TreeFindItem(nil,ID).Data)^.MMROOMID;
end;
//得到节点TBLPROPERTY值
function TTBLTreeView.GetTreeNodeTBLPROPERTY():String;
begin
if Self.Items.Count = 0 then
Result:=''
else
Result:=PTNKEY(Self.Selected.Data)^.TBLPROPERTY;
end;
function TTBLTreeView.GetTreeNodeTBLPROPERTY(ID:string):String;
begin
if Self.Items.Count = 0 then
Result:=''
else
Result:=PTNKEY(TreeFindItem(nil,ID).Data)^.TBLPROPERTY;
end;
//得到节点TBLTYPE值
function TTBLTreeView.GetTreeNodeTBLTYPE():String;
begin
if Self.Items.Count = 0 then
Result:=''
else
Result:=PTNKEY(Self.Selected.Data)^.TBLTYPE;
end;
function TTBLTreeView.GetTreeNodeTBLTYPE(ID:string):String;
begin
if Self.Items.Count = 0 then
Result:=''
else
Result:=PTNKEY(TreeFindItem(nil,ID).Data)^.TBLTYPE;
end;
//得到节点PARENTID值
function TTBLTreeView.GetTreeNodePARENTID():String;
begin
if Self.Items.Count = 0 then
Result:=''
else
Result:=PTNKEY(Self.Selected.Data)^.PARENTID;
end;
function TTBLTreeView.GetTreeNodePARENTID(ID:string):String;
begin
if Self.Items.Count = 0 then
Result:=''
else
Result:=PTNKEY(TreeFindItem(nil,ID).Data)^.PARENTID;
end;
//角色的档案权限树
Procedure TTBLTreeView.TreeCreateByRolePower(RoleCode:string);
var
adoquery:TADOQuery;
itemList:TStrings;
strSql: String;
sT:TStrings;
strShowPower: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('');
itemList.Add('');
itemList.Add('');
TreeAddItem(itemList);
itemList.Clear;
adoquery.Next;
End;
adoquery.Close;
adoquery.SQL.Clear;
//建树
strSql:='SELECT ID,C_TYPE,C_TBLNAME,I_MMROOMID,C_PROPERTY,C_TBLTYPE,I_PARENTID FROM SYS_TBL 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:=GetValuesBySQL('SELECT C_TSET,C_YSET FROM SYS_GROUPAR WHERE I_TBLID = ' + adoquery.Fields[0].AsString + ' AND C_GROUPCODE = ''' + RoleCode + '''');
if sT.Count = 0 then
itemList.Add(adoquery.Fields[2].AsString + ' [无授权]')
else begin
strShowPower := adoquery.Fields[2].AsString + ' ';
if sT[0] = 'R' then
strShowPower := strShowPower + '[只读目录]'
else
strShowPower := strShowPower + '[读写目录]';
if sT[1] = 'R' then
strShowPower := strShowPower + '[只读原文]'
else if sT[1] = 'W' then
strShowPower := strShowPower + '[读写原文]'
else
strShowPower := strShowPower + '[禁读原文]';
itemList.Add(strShowPower);
end;
end;
itemList.Add(adoquery.Fields[3].AsString);
itemList.Add(adoquery.Fields[4].AsString);
itemList.Add(adoquery.Fields[5].AsString);
itemList.Add(adoquery.Fields[6].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 TTBLTreeView.TreeCreateByUserPower(UserID:string);
var
adoquery:TADOQuery;
itemList:TStrings;
strSql: String;
sT:TStrings;
strShowPower: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('');
itemList.Add('');
itemList.Add('');
TreeAddItem(itemList);
itemList.Clear;
adoquery.Next;
End;
adoquery.Close;
adoquery.SQL.Clear;
//建树
strSql:='SELECT ID,C_TYPE,C_TBLNAME,I_MMROOMID,C_PROPERTY,C_TBLTYPE,I_PARENTID FROM SYS_TBL 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:=GetValuesBySQL('SELECT I_SET,C_TSET,C_YSET FROM SYS_USERAR WHERE I_TBLID = ' + adoquery.Fields[0].AsString + ' AND I_USERID = ' + UserID );
if sT.Count = 0 then
itemList.Add(adoquery.Fields[2].AsString + ' [无授权]')
else begin
if strtoint(sT[0]) = -1 then
strShowPower := adoquery.Fields[2].AsString + ' [拒绝授权]'
else begin
strShowPower := adoquery.Fields[2].AsString + ' ';
if sT[1] = 'R' then
strShowPower := strShowPower + '[只读目录]'
else
strShowPower := strShowPower + '[读写目录]';
if sT[2] = 'R' then
strShowPower := strShowPower + '[只读原文]'
else if sT[2] = 'W' then
strShowPower := strShowPower + '[读写原文]'
else
strShowPower := strShowPower + '[禁读原文]';
end;
itemList.Add(strShowPower);
end;
end;
itemList.Add(adoquery.Fields[3].AsString);
itemList.Add(adoquery.Fields[4].AsString);
itemList.Add(adoquery.Fields[5].AsString);
itemList.Add(adoquery.Fields[6].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 + -