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

📄 unit1.pas

📁 asd码,非常好的有 码,非常好的有
💻 PAS
字号:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls, DB, ADODB, Menus;

type
  TForm1 = class(TForm)
    TreeView1: TTreeView;
    du: TButton;
    ADOQuery1: TADOQuery;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    change: TButton;
    add: TButton;
    addchild: TButton;
    PopupMenu1: TPopupMenu;
    Nadd: TMenuItem;
    Naddchild: TMenuItem;
    Nchange: TMenuItem;
    Ndelete: TMenuItem;
    procedure duClick(Sender: TObject);
    Function AddNode(TreeView:TTreeView;Node:TTreeNode;ADOQ:TADOQuery):TTreeNode;
    Function SearchNode(TreeView:TTreeView;Txts:String):TTreeNode;
    procedure TreeView1Change(Sender: TObject; Node: TTreeNode);
    procedure changeClick(Sender: TObject);
    procedure addClick(Sender: TObject);
    procedure addchildClick(Sender: TObject);
    procedure NaddClick(Sender: TObject);
    procedure NaddchildClick(Sender: TObject);
    procedure NchangeClick(Sender: TObject);
    procedure NdeleteClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

Function TForm1.AddNode(TreeView:TTreeview;Node:TTreeNode;ADOQ:TADOQuery):TTreeNode;
var
  Node1:TTreeNode;
  s:PString;
begin
  Node1:=TreeView.Items.AddChild(Node,ADOQ.FieldByName('text').Text);
  New(s);
  s^:=ADOQ.FieldByName('id').Text;
  Node1.Data:=s;
  Result:=Node1;
end;

Function TForm1.SearchNode(TreeView:TTreeView;Txts:String):TTreeNode;
var
  i:integer;
  s:PString;
begin
  Result:=nil;
  For i:=0 To TreeView.Items.Count-1 Do
    begin
      s:=TreeView.Items[i].Data;
      If s^=Txts Then
        begin
          Result:=TreeView.Items[i];
          Exit;
        end;
    end;
end;

procedure TForm1.duClick(Sender: TObject);
var
  i,Rec_Num:integer;
  Node1,Node2:TTreeNode;
begin
  TreeView1.Items.Clear;
  TreeView1.Items.BeginUpdate;
  Node1:=TreeView1.Items.GetFirstNode;
  with adoquery1 do
    begin
      close;
      sql.Clear;
      sql.Add('select * from tree order by id');
      open;
    end;
  If ADOquery1.RecordCount>0 Then
  Begin
    Rec_Num:= ADOQuery1.RecordCount;
    For i:=0 To Rec_Num-1 Do
    begin
      If ADOQuery1.FieldByName('pid').Text='0' Then
        Node2:=AddNode(TreeView1,Node1,ADOQuery1)
      Else
        begin
          Node2:=SearchNode(TreeView1,ADOQuery1.FieldByName('pid').Text);
          If Node2<>nil Then
            AddNode(TreeView1,Node2,ADOQuery1);
        end;
        ADOQuery1.Next;
      end;
   End;
   TreeView1.Items.EndUpdate;
end;
//以上是从数据库显示一个树
procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);
var
p:pstring;
begin
p:=node.data;
with adoquery1 do
  begin
    close;
    sql.Clear;
    sql.Add('select * from tree where id=:a');
    parameters.ParamByName('a').Value :=p^;
    open;
    edit1.text:=fieldbyname('pid').Text;
    edit2.Text:=fieldbyname('id').Text;
    edit3.Text:=fieldbyname('text').Text; 
  end;
end;
//以上是显示子目录的ID,父ID,TEXT
procedure TForm1.changeClick(Sender: TObject);
begin
try
  with adoquery1 do
    begin
      close;
      sql.Clear;
      sql.Add('update tree set text=:a where id=:b');
      parameters.ParamByName('a').Value :=edit3.Text;
      parameters.ParamByName('b').Value :=edit2.Text;
      execsql;
    end;
except
  Application.MessageBox('记录修改失败!!!','提示信息',0);
end;
end;
//以上是修改子目录的TEXT
procedure TForm1.addClick(Sender: TObject);
begin
try
  with adoquery1 do
    begin
      close;
      sql.Clear;
      sql.Add('insert into tree (pid,text) values (:a,:b)');
      parameters.ParamByName('a').Value :=edit1.Text;
      parameters.ParamByName('b').Value :='未命名';
      execsql;
    end;
except
  Application.MessageBox('记录添加失败!!!','提示信息',0);
end;
end;
//以上是添加目录
procedure TForm1.addchildClick(Sender: TObject);
begin
try
  with adoquery1 do
    begin
      close;
      sql.Clear;
      sql.Add('insert into tree (pid,text) values (:a,:b)');
      parameters.ParamByName('a').Value :=edit2.Text;
      parameters.ParamByName('b').Value :='未命名';
      execsql;
    end;
except
  Application.MessageBox('记录添加失败!!!','提示信息',0);
end;
end;
//以上是添加子目录

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~以下是POPUPMENU的代码

procedure TForm1.NaddClick(Sender: TObject);
begin
try
  with adoquery1 do
    begin
      close;
      sql.Clear;
      sql.Add('insert into tree (pid,text) values (:a,:b)');
      parameters.ParamByName('a').Value :=edit1.Text;
      parameters.ParamByName('b').Value :='未命名';
      execsql;
    end;
except
  Application.MessageBox('记录添加失败!!!','提示信息',0);
end;
end;
//以上是添加目录

procedure TForm1.NaddchildClick(Sender: TObject);
begin
try
  with adoquery1 do
    begin
      close;
      sql.Clear;
      sql.Add('insert into tree (pid,text) values (:a,:b)');
      parameters.ParamByName('a').Value :=edit2.Text;
      parameters.ParamByName('b').Value :='未命名';
      execsql;
    end;
except
  Application.MessageBox('记录添加失败!!!','提示信息',0);
end;
end;
//以上是添加子目录

procedure TForm1.NchangeClick(Sender: TObject);
begin
try
  with adoquery1 do
    begin
      close;
      sql.Clear;
      sql.Add('update tree set text=:a where id=:b');
      parameters.ParamByName('a').Value :=edit3.Text;
      parameters.ParamByName('b').Value :=edit2.Text;
      execsql;
    end;
except
  Application.MessageBox('记录修改失败!!!','提示信息',0);
end;
end;
//以上是修改子目录的TEXT

procedure TForm1.NdeleteClick(Sender: TObject);
begin
try
  with adoquery1 do
    begin
      close;
      sql.Clear;
      sql.Add('delete from tree where id=:a');
      parameters.ParamByName('a').Value :=edit2.Text;
      execsql;
    end;
except
  Application.MessageBox('记录删除失败!!!','提示信息',0);
end;
end;
//以上是删除目录
end.

⌨️ 快捷键说明

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