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

📄 u_managertree.pas

📁 软件功能:下载一个网站上所有的彩铃! 铃声下载完后
💻 PAS
📖 第 1 页 / 共 2 页
字号:
unit U_ManagerTree;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Menus,
  Dialogs, Buttons, StdCtrls, Mask, ExtCtrls,ADODB, QControls,ComCtrls,IniFiles,CheckLst,
  ShellAPI,DateUtils,ComObj,Math,U_RecordStruct;
Const
  MaxNodeAmount=1000;
Type
  TManagerTree=Class
  //过程声明
  Private
    {Private declarations}
  Public
    ADOConnection:TADOConnection;
    ConnectionCount,CurrNodeIndex:Integer;
    //Curr:Array[1..MaxNodeAmount] Of CurrentNode;
    CurrNode:Array [1..MaxNodeAmount] Of TTreeNode;
    StopSearch:Boolean;
    OperatorOption:Integer;//为0是无操作为1是添加节点为2是修改节点为3是添加子节点
    NodeValueBeforUpdate:String;
    //树管理对象初始化
    Constructor Create(ComputerName,DataBaseName,UserName,UserPassWord:String);
    //树的搜索及遍历(Option为1是设置属性、为2是添加模块)
    Function SearchTree(TreeItem:TTreeNode;UserCode:String;Send:TObject):TTreeNode;OverLoad;
    Function SearchTree(TreeItem:TTreeNode;UserCode,UserName:String;Send:TObject):TTreeNode;OverLoad;
    //判断节点是否存在
    Function NodeIsExist(UserCode,ParentNodeValue,ChildNodeValue:String;Enable:Integer;Send:TObject):Boolean;
    //从数据表中取出树的值
    Procedure GetTreeValue(Var TreeView:TTreeView;UserCode,ParentNodeValue:String;Send:TObject);
    //往树添加一个节点
    Procedure InsertNode(Var TreeView:TTreeView);
    //往树添加一个子节点
    Procedure InsertChildNode(Var TreeView:TTreeView);
    //删除当前节点
    Procedure DeleteNode(Var TreeView:TTreeView);
    //修改当前节点的值
    Procedure UpdateNode(Var TreeView:TTreeView);
    //获取当前节点的路径
    Function GetNodeParentValues(Var TreeView:TTreeView):String;OverLoad;
    //获取当前树节点的路径
    Function GetNodeParentValues(TreeNode:TTreeNode):String;OverLoad;
    //获取节点数目
    Function GetNodeAmount:Integer;
    //修改节点的属性
    Procedure UpdateModuleValue(TreeNode:TTreeNode;UserCode:String;Enable:Integer);Overload;
    //修改节点的属性
    Procedure UpdateModuleValue(NewUserCode,NewUserName,OldUserCode:String);Overload;
    //添加用户模块信息
    Procedure InsertUserModuleMsg(UserCode,UserName:String);
    {Public declarations}
    //树管理对象析构函数
    DesTructor Destroy;
  End;

//Var
  //变量声明
Implementation
  Uses U_OtherPublicPack,U_DBPublicPack;
  
//树管理对象初始化
Constructor TManagerTree.Create(ComputerName,DataBaseName,UserName,UserPassWord:String);
Begin
  OperatorOption:=0;
  ADOConnection:=TADOConnection.Create(nil);
  ConnectDataBase(ADOConnection,ComputerName,DataBaseName,UserName,UserPassWord);
End;
//添加用户模块信息
Procedure TManagerTree.InsertUserModuleMsg(UserCode,UserName:String);
Var
  ADOQuery:TADOQuery;
  SqlStr:String;
Begin
  ADOQuery:=TADOQuery.Create(nil);
  ADOQuery.Connection:=ADOConnection;
  ADOQuery.Close;
  ADOQuery.SQL.Clear;
  SqlStr:='Insert Into OperatorModuleMsg(UserCode,UserName,ParentNodeValue,ChildNodeValue,Enable)';
  SqlStr:=SqlStr+' Select :UserCode,:UserName,ParentNodeValue,ChildNodeValue,Enable From OperatorModuleDefaultMsg';
  ADOQuery.SQL.Add(SqlStr);
  ADOQuery.Parameters.ParamByName('UserCode').Value:=UserCode;
  ADOQuery.Parameters.ParamByName('UserName').Value:=UserName;
  Try
    ADOQuery.ExecSQL;
  Except
  End;
  ADOQuery.Free;
End;
//判断节点是否存在
Function TManagerTree.NodeIsExist(UserCode,ParentNodeValue,ChildNodeValue:String;Enable:Integer;Send:TObject):Boolean;
Var
  ADOQuery:TADOQuery;
  SqlStr:String;
Begin
  ADOQuery:=TADOQuery.Create(nil);
  ADOQuery.Connection:=ADOConnection;
  ADOQuery.Close;
  ADOQuery.SQL.Clear;
  SqlStr:='Select * From OperatorModuleMsg Where ParentNodeValue=:ParentNodeValue';
  SqlStr:=SqlStr+' And ChildNodeValue=:ChildNodeValue';
  If UserCode<>'' Then
    SqlStr:=SqlStr+' And UserCode='+''''+UserCode+'''';
  If Enable>=0 Then
    SqlStr:=SqlStr+' And Enable='+IntToStr(Enable);
  ADOQuery.SQL.Add(SqlStr);
  ADOQuery.Parameters.ParamByName('ParentNodeValue').Value:=ParentNodeValue;
  ADOQuery.Parameters.ParamByName('ChildNodeValue').Value:=ChildNodeValue;
  Try
    ADOQuery.Open;
  Except
  End;
  If ADOQuery.Eof Then
    Result:=False
  Else
    Result:=True;
  ADOQuery.Free;
End;
//修改节点的属性
Procedure TManagerTree.UpdateModuleValue(TreeNode:TTreeNode;UserCode:String;Enable:Integer);
Var
  ADOQuery:TADOQuery;
  SqlStr:String;
Begin
  If TreeNode=nil Then
    Exit;
  ADOQuery:=TADOQuery.Create(nil);
  ADOQuery.Connection:=ADOConnection;
  ADOQuery.Close;
  ADOQuery.SQL.Clear;
  SqlStr:='Update OperatorModuleMsg Set Enable=:Enable Where ParentNodeValue=:ParentNodeValue';
  SqlStr:=SqlStr+' And ChildNodeValue=:ChildNodeValue';
  If UserCode<>'' Then
    SqlStr:=SqlStr+' And UserCode='+''''+UserCode+'''';
  ADOQuery.SQL.Add(SqlStr);
  ADOQuery.Parameters.ParamByName('ParentNodeValue').Value:=GetNodeParentValues(TreeNode);
  ADOQuery.Parameters.ParamByName('ChildNodeValue').Value:=TreeNode.Text;
  If Enable=-1 Then
    ADOQuery.Parameters.ParamByName('Enable').Value:=TreeNode.ImageIndex
  Else
    ADOQuery.Parameters.ParamByName('Enable').Value:=Enable;
  Try
    ADOQuery.ExecSQL;
  Except
  End;
  ADOQuery.Free;
End;
//修改节点的属性
Procedure TManagerTree.UpdateModuleValue(NewUserCode,NewUserName,OldUserCode:String);
Var
  ADOQuery:TADOQuery;
  SqlStr:String;
Begin
  ADOQuery:=TADOQuery.Create(nil);
  ADOQuery.Connection:=ADOConnection;
  ADOQuery.Close;
  ADOQuery.SQL.Clear;
  SqlStr:='Update OperatorModuleMsg Set UserCode=:NewUserCode,UserName=:NewUserName Where UserCode='+''''+OldUserCode+'''';
  ADOQuery.SQL.Add(SqlStr);
  ADOQuery.Parameters.ParamByName('NewUserCode').Value:=NewUserCode;
  ADOQuery.Parameters.ParamByName('NewUserName').Value:=NewUserName;
  Try
    ADOQuery.ExecSQL;
  Except
  End;
  ADOQuery.Free;
End;
//树的搜索及遍历
Function TManagerTree.SearchTree(TreeItem:TTreeNode;UserCode:String;Send:TObject):TTreeNode;
Var
  CurrentIndex,Count,Enable:Integer;
  CurrentItem:TTreeNode;
  ParentNodeValue,ChildNodeValue:String;
begin
  Count:=TreeItem.Count;
  If Count=0 Then
  Begin
    Exit;
  End
  Else
  Begin
    For CurrentIndex:=0 To Count-1 Do
    Begin
      If StopSearch=True Then
        Exit;
      Application.ProcessMessages;
      CurrentItem:=TreeItem.Item[CurrentIndex];
      ChildNodeValue:=CurrentItem.Text;
      ParentNodeValue:=GetNodeParentValues(CurrentItem);
      If NodeIsExist(UserCode,ParentNodeValue,ChildNodeValue,1,nil) Then
        CurrentItem.ImageIndex:=1
      Else
        CurrentItem.ImageIndex:=0;
      {
       **********************
       *****函数处理过程*****
       **********************
      }
      If (Send Is TMemo) Then
      Begin
        (Send As TMemo).Lines.Add(TreeItem.Item[CurrentIndex].Text);
        (Send As TMemo).Lines.Add(IntToStr(TreeItem.Item[CurrentIndex].Index));
      End;
      SearchTree(CurrentItem,UserCode,Send);
    End;
  End;
End;
//树的搜索
Function TManagerTree.SearchTree(TreeItem:TTreeNode;UserCode,UserName:String;Send:TObject):TTreeNode;
Var
  CurrentIndex,Count,Enable:Integer;
  CurrentItem:TTreeNode;
  ParentNodeValue,ChildNodeValue:String;
begin
  Count:=TreeItem.Count;
  If Count=0 Then
  Begin
    Exit;
  End
  Else
  Begin
    For CurrentIndex:=0 To Count-1 Do
    Begin
      If StopSearch=True Then
        Exit;
      Application.ProcessMessages;
      CurrentItem:=TreeItem.Item[CurrentIndex];
      ChildNodeValue:=CurrentItem.Text;
      ParentNodeValue:=GetNodeParentValues(CurrentItem);
      //AddOperatorModuleMsg(UserCode,UserName,ParentNodeValue,ChildNodeValue,CurrentItem.ImageIndex);
      {
       **********************
       *****函数处理过程*****
       **********************
      }
      If (Send Is TMemo) Then
      Begin
        (Send As TMemo).Lines.Add(TreeItem.Item[CurrentIndex].Text);
        (Send As TMemo).Lines.Add(IntToStr(TreeItem.Item[CurrentIndex].Index));
      End;
      SearchTree(CurrentItem,UserCode,UserName,Send);
    End;
  End;
End;
//从数据表中取出树的值

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -