当前位置:编程学习 > Delphi >>

Delphi TreeView 使用方法。连接access数据库。(高分)


TreeView 连接了一个access数据库,并且可以通过两个DBEdit1,对TreeView 进行操作,同时也对access数据库的数据进行操作。不难,满意加分。
补充:请把源码发下,把程序也发给我。443030595@qq.com
		
追问:

把程序也发给我,谢谢。

答案:unit Unit1;
interface
uses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs, StdCtrls, DB, ADODB, ComCtrls;
type  TForm1 = class(TForm)    TreeView1: TTreeView;    Button1: TButton;    Button2: TButton;    Button3: TButton;    Button4: TButton;    Label1: TLabel;    procedure FormCreate(Sender: TObject);    procedure Button1Click(Sender: TObject);    procedure Button2Click(Sender: TObject);    procedure Button3Click(Sender: TObject);    procedure Button4Click(Sender: TObject);  private    { Private declarations }    procedure AddClass(AId:integer;FatherNode:TTreeNode);//添加分类过程    procedure AddDataToDB(CurrNode,FatherNode:TTreeNode);//添加实际数据到数据库  public    { Public declarations }  end;
var  Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.AddClass(AId: integer;FatherNode:TTreeNode);var    QryTmp:TADOQuery;    myNode:TTreeNode;    myLabel:TLabel;begin    QryTmp:=TADOQuery.Create(self);    QryTmp.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+extractfilepath(application.ExeName)+'test.mdb;Persist Security Info=False';    QryTmp.SQL.Add('select * from tb1');    QryTmp.SQL.Add('where FatherId='+inttostr(AId));    QryTmp.Open;    while not QryTmp.Eof do    begin        myNode:=Treeview1.Items.AddChild(FatherNode,QryTmp.fieldbyname('CName').AsString);
        //创建标签,caption存放各分支的AutoId表识        myLabel:=TLabel.Create(self);        myLabel.Visible:=false;        myLabel.Caption:=QryTmp.fieldbyname('AutoId').AsString;        myNode.Data:=myLabel;
        AddClass(QryTmp.fieldbyname('AutoId').AsInteger,myNode); //递归调用过程        QryTmp.Next;    end;    QryTmp.Free;end;
procedure TForm1.FormCreate(Sender: TObject);begin    AddClass(0,nil);end;
procedure TForm1.Button1Click(Sender: TObject);var    strName:string;    myNode:TTreeNode;begin    strName:=inputbox('新增','请输入分类名称:  ','');    strName:=trim(strName);    if strName='' then        exit;    myNode:=treeview1.Items.Add(treeview1.Selected,strName);    if assigned(treeview1.Selected) then        AddDataToDB(myNode,treeview1.Selected.Parent)    else        AddDataToDB(myNode,nil);    myNode.selected:=true;end;
procedure TForm1.Button2Click(Sender: TObject);var    strName:string;    myNode:TTreeNode;begin    strName:=inputbox('新增','请输入分类名称:  ','');    strName:=trim(strName);    if strName='' then        exit;    myNode:=treeview1.Items.AddChild(treeview1.Selected,strName);    AddDataToDB(myNode,treeview1.Selected);    myNode.selected:=true;end;
procedure TForm1.AddDataToDB(CurrNode,FatherNode: TTreeNode);var    myLabel:TLabel;    QryTmp:TADOQuery;    AId:integer;begin    if not assigned(FatherNode) then        AId:=0    else if not assigned(FatherNode.Data) then        AId:=0    else        AId:=strtoint(TLabel(FatherNode.Data).caption);    QryTmp:=TADOQuery.Create(self);    QryTmp.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+extractfilepath(application.ExeName)+'test.mdb;Persist Security Info=False';    QryTmp.SQL.Add('select * from tb1');    QryTmp.SQL.Add('where FatherId='+inttostr(AId));    QryTmp.Open;    QryTmp.Append;    QryTmp['FatherId']:=AId;    QryTmp['CName']:=CurrNode.Text;    QryTmp.Post;
    //创建记录currNode的AutoId表识标    myLabel:=TLabel.Create(self);    myLabel.Visible:=False;    MyLabel.Caption:=QryTmp.fieldbyname('AutoId').AsString;    CurrNode.Data:=myLabel;        QryTmp.Free;end;
procedure TForm1.Button3Click(Sender: TObject);var    QryTmp:TADOQuery;begin    if not assigned(treeview1.Selected) then        exit;    if application.MessageBox('是否删除分类及下级分类?','提示',mb_yesno+mb_iconquestion)=idno then        exit;    //删除下级别分类    QryTmp:=TADOQuery.Create(self);    QryTmp.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+extractfilepath(application.ExeName)+'test.mdb;Persist Security Info=False';    QryTmp.SQL.Add('delete * from tb1');    QryTmp.SQL.Add('where FatherId='+TLabel(Treeview1.Selected.data).Caption);    QryTmp.ExecSQL;    QryTmp.SQL.Clear;    QryTmp.SQL.Add('delete * from tb1');    QryTmp.SQL.Add('where AutoId='+TLabel(Treeview1.Selected.data).Caption);    QryTmp.ExecSQL;    Treeview1.Selected.Delete;end;
procedure TForm1.Button4Click(Sender: TObject);var    QryTmp:TADOQuery;    strName:string;begin    if not assigned(treeview1.Selected) then        exit;    strName:=inputbox('更改','请输入新的名称: ','');    strName:=trim(strName);    if strName='' then        exit;    //删除下级别分类    QryTmp:=TADOQuery.Create(self);    QryTmp.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+extractfilepath(application.ExeName)+'test.mdb;Persist Security Info=False';    QryTmp.SQL.Add('update tb1 set CName='+''''+strName+'''');    QryTmp.SQL.Add('where AutoId='+TLabel(Treeview1.Selected.data).Caption);    QryTmp.ExecSQL;    Treeview1.Selected.Text:=strName;end;
end.
程序已经发给你了。unit Unit1;

interface

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

type
TForm1 = class(TForm)
TreeView1: TTreeView;
Button1: TButton;
Button2: TButton;
Button3: TButton;
ADOConnection1: TADOConnection;
ADOQuery1: TADOQuery;
DataSource1: TDataSource;
DBEdit1: TDBEdit;
DBEdit2: TDBEdit;
TempQy: TADOQuery;
TempDs: TDataSource;
Button4: TButton;
procedure InitList;
procedure FormShow(Sender: TObject);
procedure TreeView1Change(Sender: TObject; Node: TTreeNode);
procedure Button1Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
Function FindMaxCode(CodLength:Integer;ParentCode:string):string;
private

public

end;

var
Form1: TForm1;

type myint = ^string;

var
pt : myint;

imple

上一个:会delphi的来解释下这段代码。。
下一个:学了delphi有没有必要再学WIN32汇编呢?

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,