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

📄 tbltreeview.~pas

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