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

📄 u_managertree.pas

📁 软件功能:下载一个网站上所有的彩铃! 铃声下载完后
💻 PAS
📖 第 1 页 / 共 2 页
字号:
Procedure TManagerTree.GetTreeValue(Var TreeView:TTreeView;UserCode,ParentNodeValue:String;Send:TObject);
Var
  ChildNodeValue,SqlStr:String;//子节点的值,Sql语句
  ParentNode,ChildNode:TTreeNode;//父节点,子节点
  ADOQuery:TADOQuery;//Sql语句的ADO执行变量
begin
  Inc(ConnectionCount);
  If ConnectionCount>MaxNodeAmount Then
    Exit;
  If CurrNodeIndex>=MaxNodeAmount Then
    Exit;
  SqlStr:='Select Distinct UserCode,Enable,ChildNodeValue,(ParentNodeValue'+'+'+''''+'\'+''''+'+'+'ChildNodeValue) As Path From OperatorModuleMsg';
  SqlStr:=SqlStr+' Where ParentNodeValue=:ParentNodeValue';
  If UserCode<>'' Then
    SqlStr:=SqlStr+' And UserCode='+''''+UserCode+'''';
  SqlStr:=SqlStr+' Order By ChildNodeValue';
  With ADOQuery Do
  Begin
    ADOQuery:=TADOQuery.Create(nil);
    ADOQuery.Connection:=ADOConnection;
    ADOQuery.Close;
    ADOQuery.SQL.Clear;
    ADOQuery.SQL.Add(SqlStr);
    ADOQuery.Parameters.ParamByName('ParentNodeValue').Value:=ParentNodeValue;
    Try
      ADOQuery.Open;
    Except
      If (Send Is TObject) Then
      (Send As TMemo).Lines.Add('获取数据库数据出错:'+ParentNodeValue+'---'+ChildNodeValue);
      Exit;
    End;
    While Not ADOQuery.Eof Do
    Begin
      ChildNodeValue:=Trim(ADOQuery.FieldByName('Path').AsString);
      {
       ************************
       *****函数体处理过程*****
       ************************
      }
      If (Send Is TObject) Then
      (Send As TMemo).Lines.Add(ParentNodeValue+'---'+ChildNodeValue);
      CurrNode[CurrNodeIndex+1]:=TreeView.Items.AddChild(CurrNode[CurrNodeIndex],Trim(ADOQuery.FieldByName('ChildNodeValue').AsString));
      If ADOQuery.FieldByName('Enable').AsInteger=1 Then
      Begin
        CurrNode[CurrNodeIndex+1].ImageIndex:=1;
        CurrNode[CurrNodeIndex+1].SelectedIndex:=CurrNode[CurrNodeIndex+1].ImageIndex;
      End
      Else
      Begin
        CurrNode[CurrNodeIndex+1].ImageIndex:=0;
        CurrNode[CurrNodeIndex+1].SelectedIndex:=CurrNode[CurrNodeIndex+1].ImageIndex;
      End;
      Inc(CurrNodeIndex);
      Application.ProcessMessages;
      GetTreeValue(TreeView,UserCode,ChildNodeValue,Send);
      Application.ProcessMessages;
      ADOQuery.Next;
    End;
    If ADOQuery.Eof Then
    Begin
      Dec(CurrNodeIndex);
      Exit;
    End;
  End;
  ADOQuery.Free;
End;
Function TManagerTree.GetNodeAmount:Integer;
Var
  ADOQuery:TADOQuery;
  SqlStr:String;
Begin
  ADOQuery:=TADOQuery.Create(nil);
  ADOQuery.Connection:=ADOConnection;
  ADOQuery.Close;
  ADOQuery.SQL.Clear;
  SqlStr:='Select Max(AutoID) As MaxAutoID From TreeValue';
  ADOQuery.SQL.Add(SqlStr);
  ADOQuery.Open;
  If Not ADOQuery.Eof Then
    Result:=ADOQuery.FieldByName('MaxAutoID').AsInteger
  Else
    Result:=0;
  ADOQuery.Free;
End;
//往树添加一个节点
Procedure TManagerTree.InsertNode(Var TreeView:TTreeView);
Var
  CurrNodes:TTreeNode;
  ADOQuery:TADOQuery;
  SqlStr,ParentNodeValue,ChildNodeValue:String;
Begin
  TreeView.SetFocus;
  If TreeView.SelectionCount=0 Then
  Begin
    CurrNodes:=TreeView.Items.Insert(nil,'模块'+IntToStr(GetNodeAmount));
    TreeView.Selected:=CurrNodes;
    Exit;
  End;
  CurrNodes:=TreeView.Selected;
  CurrNodes:=TreeView.Items.Insert(CurrNodes,'模块'+IntToStr(GetNodeAmount));
  TreeView.Selected:=CurrNodes;
  ParentNodeValue:=GetNodeParentValues(TreeView);
  ChildNodeValue:=Trim(CurrNodes.Text);
  ADOQuery:=TADOQuery.Create(nil);
  ADOQuery.Connection:=ADOConnection;
  ADOQuery.Close;
  ADOQuery.SQL.Clear;
  SqlStr:='Insert Into OperatorModuleMsg(ParentNodeValue,ChildNodeValue,Enable) Values(';
  SqlStr:=SqlStr+''''+ParentNodeValue+''''+','+''''+ChildNodeValue+''''+',1)';
  ADOQuery.SQL.Add(SqlStr);
  Try
    ADOQuery.ExecSQL;
  Except
  End;
  TreeView.ReadOnly:=True;
  UpdateNode(TreeView);
  ADOQuery.Free;
End;
//往树添加一个子节点
Procedure TManagerTree.InsertChildNode(Var TreeView:TTreeView);
Var
  CurrNodes:TTreeNode;
  ADOQuery:TADOQuery;
  SqlStr:String;
Begin
  TreeView.SetFocus;
  If TreeView.SelectionCount=0 Then
  Begin
    CurrNodes:=TreeView.Items.Insert(nil,'模块'+IntToStr(GetNodeAmount));
    TreeView.Selected:=CurrNodes;
    Exit;
  End;
  CurrNodes:=TreeView.Selected;
  CurrNodes:=TreeView.Items.AddChild(CurrNodes,'模块'+IntToStr(GetNodeAmount));
  TreeView.Selected:=CurrNodes;
  ADOQuery:=TADOQuery.Create(nil);
  ADOQuery.Connection:=ADOConnection;
  ADOQuery.Close;
  ADOQuery.SQL.Clear;
  SqlStr:='Insert Into OperatorModuleMsg(ParentNodeValue,ChildNodeValue,Enable) Values(';
  SqlStr:=SqlStr+''''+GetNodeParentValues(TreeView)+''''+','+''''+CurrNodes.Text+''''+',1)';
  ADOQuery.SQL.Add(SqlStr);
  Try
    ADOQuery.ExecSQL;
  Except
  End;
  TreeView.ReadOnly:=True;
  UpdateNode(TreeView);
  ADOQuery.Free;
End;
//删除当前节点
Procedure TManagerTree.DeleteNode(Var TreeView:TTreeView);
Var
  ADOQuery:TADOQuery;
  SqlText,ParentNodeValue,ChildNodeValue:String;
Begin
  OperatorOption:=3;
  TreeView.SetFocus;
  If TreeView.SelectionCount=0 Then
    Exit;
  ParentNodeValue:=Trim(GetNodeParentValues(TreeView));
  ChildNodeValue:=Trim(TreeView.Selected.Text);
  TreeView.Selected.Delete;
  SqlText:='Delete From OperatorModuleMsg Where ParentNodeValue='+''''+ParentNodeValue+'''';
  SqlText:=SqlText+'And ChildNodeValue='+''''+ChildNodeValue+'''';
  ADOQuery:=TADOQuery.Create(nil);
  ADOQuery.Connection:=ADOConnection;
  ADOQuery.Close;
  ADOQuery.SQL.Clear;
  ADOQuery.SQL.Add(SqlText);
  Try
    ADOQuery.ExecSQL;
  Except
  End;
  SqlText:='Delete From OperatorModuleMsg Where ParentNodeValue Like '+''''+ParentNodeValue+'\'+ChildNodeValue+'%'+'''';
  ADOQuery.Close;
  ADOQuery.SQL.Clear;
  ADOQuery.SQL.Add(SqlText);
  Try
    ADOQuery.ExecSQL;
  Except
  End;
  ADOQuery.Free;
End;
//修改树节点的值
Procedure TManagerTree.UpdateNode(Var TreeView:TTreeView);
Begin
  TreeView.SetFocus;
  TreeView.ReadOnly:=False;
  NodeValueBeforUpdate:=Trim(TreeView.Selected.Text);
  TreeView.Selected.EditText;
End;
//获取当前树节点的路径
Function TManagerTree.GetNodeParentValues(Var TreeView:TTreeView):String;
Var
  CurrNodes:TTreeNode;
  Str:String;
Begin
  If (TreeView.SelectionCount=0) Or (TreeView.Selected.Parent=nil) Then
  Begin
    CurrNodes:=nil;
    Str:='nil';
    Exit;
  End;
  CurrNodes:=TreeView.Selected;
  Str:=Trim(CurrNodes.Parent.Text);
  CurrNodes:=CurrNodes.Parent;
  While CurrNodes.Parent<>nil Do
  Begin
    Str:=Trim(CurrNodes.Parent.Text)+'\'+Str;
    CurrNodes:=CurrNodes.Parent;
  End;
  Result:=Str;
End;
//获取当前树节点的路径
Function TManagerTree.GetNodeParentValues(TreeNode:TTreeNode):String;
Var
  CurrNodes:TTreeNode;
  Str:String;
Begin
  If TreeNode=nil Then
  Begin
    CurrNodes:=nil;
    Str:='nil';
    Exit;
  End;
  CurrNodes:=TreeNode;
  Str:=Trim(CurrNodes.Parent.Text);
  CurrNodes:=CurrNodes.Parent;
  While CurrNodes.Parent<>nil Do
  Begin
    Str:=Trim(CurrNodes.Parent.Text)+'\'+Str;
    CurrNodes:=CurrNodes.Parent;
  End;
  Result:=Str;
End;
//树管理对象析构函数
DesTructor TManagerTree.Destroy;
Begin
  ADOConnection.Free;
End;

End.

⌨️ 快捷键说明

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