⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 filetreeview.pas

📁 pde专用vcl
💻 PAS
📖 第 1 页 / 共 2 页
字号:
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 + -