Delphi TreeView 使用方法。连接access数据库。(高分)
TreeView 连接了一个access数据库,并且可以通过两个DBEdit1,对TreeView 进行操作,同时也对access数据库的数据进行操作。不难,满意加分。
补充:请把源码发下,把程序也发给我。443030595@qq.com
追问:把程序也发给我,谢谢。
补充:请把源码发下,把程序也发给我。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