哪位大侠能帖一个TreeView1控件的使用例子吗? 同上 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 TreeView如要静态写入,只要在items中添加具体的结构,就行了,如要改变TreeView的背景色和节点色就在oncustomdrw和oncustomdrwitem事件中写入。 unit TreeTest;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, DB, ADODB, ComCtrls, ExtCtrls, Grids, DBGrids, DBCtrls, Mask;type TForm1 = class(TForm) Panel1: TPanel; TreeView1: TTreeView; Panel2: TPanel; DataSource1: TDataSource; ADOConnection1: TADOConnection; ADOQuery1: TADOQuery; Panel3: TPanel; BitBtn1: TBitBtn; BitBtn2: TBitBtn; BitBtn3: TBitBtn; Panel4: TPanel; Panel5: TPanel; DBGrid1: TDBGrid; DBGrid2: TDBGrid; ADOQuery2: TADOQuery; DataSource2: TDataSource; BitBtn4: TBitBtn; DBNavigator1: TDBNavigator; DBEdit1: TDBEdit; ADOQuery1DEPID: TStringField; ADOQuery1NAME: TStringField; ADOQuery1UPDEP: TStringField; ADOQuery1NUMBER: TIntegerField; procedure FormShow(Sender: TObject); procedure ADOQuery1AfterPost(DataSet: TDataSet); procedure BitBtn1Click(Sender: TObject); procedure BitBtn3Click(Sender: TObject); procedure TreeView1DragDrop(Sender, Source: TObject; X, Y: Integer); procedure TreeView1DragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean); private procedure AddSubChild(FNodeName:String;Node:TTreeNode=nil); { Private declarations } public { Public declarations } end;var Form1: TForm1;implementation{$R *.dfm}procedure TForm1.AddSubChild(FNodeName: String; Node: TTreeNode=nil);var LocalName:String; AddChild:TTreeNode; ADOQueryTemp:TADOQuery;begin ADOQueryTemp:=TADOQuery.Create(nil); ADOQueryTemp.Connection:=ADOConnection1; with ADOQueryTemp do begin ADOQueryTemp.Close; ADOQueryTemp.SQL.Clear; ADOQueryTemp.SQL.Add('select * from master where updep='''+FNodeName+''''); ADOQueryTemp.Open; ADOQueryTemp.First; while not eof do begin LocalName:=ADOQueryTemp.fieldByName('Depid').AsString; AddChild:=TreeView1.Items.AddChild(Node,FieldByName('name').AsString); AddSubChild(LocalName,AddChild); Next; end; end;end;procedure TForm1.FormShow(Sender: TObject);begin AddSubChild('S',nil);end;procedure TForm1.ADOQuery1AfterPost(DataSet: TDataSet);var InsertQuery:TADOQuery; ParentID:String; InsertName:String; InsertNode:TTreeNode;begin InsertQuery:=TADOQuery.Create(nil); InsertQuery.Connection:=ADOConnection1; TreeView1.Items.Clear; AddSubChild('S',nil); TreeView1.Items.Owner.FullExpand;end;procedure TForm1.BitBtn1Click(Sender: TObject);begin DBGrid1.DataSource.DataSet.Append;end;procedure TForm1.BitBtn3Click(Sender: TObject);var DeleteItem:String;begin ADOQuery1.Close; ADOQuery1.SQL.Clear; ADOQuery1.SQL.Add('delete from master where name='''+TreeView1.Selected.Text+''''); ADOQuery1.ExecSQL; ADOQuery1.Close; ADOQuery1.SQL.Clear; ADOQuery1.SQL.Add('select * from master'); ADOQuery1.Open; TreeView1.Selected.Delete;end;procedure TForm1.TreeView1DragDrop(Sender, Source: TObject; X, Y: Integer);var TargetNode,SourceNode:TTreeNode;begin TargetNode:=TreeView1.GetNodeAt(X,Y); if TargetNode<>nil then begin SourceNode:=TreeView1.Selected; SourceNode.MoveTo(TargetNode,naAddChildFirst); TargetNode.Expand(false); TreeView1.Selected:=TargetNode; end;end;procedure TForm1.TreeView1DragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean);var TargetNode,SourceNode:TTreeNode;begin TargetNode:=TreeView1.GetNodeAt(X,Y); if (Source=Sender) and(TargetNode<>nil) then begin Accept:=True; SourceNode:=TreeView1.Selected; while(TargetNode.Parent<>nil)and (TargetNode<>SourceNode) do begin TargetNode:=TargetNode.Parent; if TargetNode=SourceNode then Accept:=false; end; end else Accept:=false;end;end. 缓存更新 郁闷死了,为什么delphi程序总有内存错误 急求Servers下的Word对象的详细教程或说明文本!!!! delphi的bde更新问题 在线等待,解决立刻揭帖送分 TXT、DBF文件怎么连ADO?在线等待,急!!!解决马上给分 如何在程序中标控制REPORT PREVIEW的关闭如何休改他的确标题! 关于读文件的问题!! 如何使程序不出现在任务列表中? 用delphi xe如何设计一个查阅word文档的手机软件 关于窗体的标题栏 Locate('emp_name',vararrayof(['']),[])函数的意思是什么 大家说说,深圳国电信息技术公司,怎么样啊?
和节点色就在oncustomdrw和oncustomdrwitem事件中写入。
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, DB, ADODB, ComCtrls, ExtCtrls, Grids, DBGrids,
DBCtrls, Mask;type
TForm1 = class(TForm)
Panel1: TPanel;
TreeView1: TTreeView;
Panel2: TPanel;
DataSource1: TDataSource;
ADOConnection1: TADOConnection;
ADOQuery1: TADOQuery;
Panel3: TPanel;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
BitBtn3: TBitBtn;
Panel4: TPanel;
Panel5: TPanel;
DBGrid1: TDBGrid;
DBGrid2: TDBGrid;
ADOQuery2: TADOQuery;
DataSource2: TDataSource;
BitBtn4: TBitBtn;
DBNavigator1: TDBNavigator;
DBEdit1: TDBEdit;
ADOQuery1DEPID: TStringField;
ADOQuery1NAME: TStringField;
ADOQuery1UPDEP: TStringField;
ADOQuery1NUMBER: TIntegerField;
procedure FormShow(Sender: TObject);
procedure ADOQuery1AfterPost(DataSet: TDataSet);
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure TreeView1DragDrop(Sender, Source: TObject; X, Y: Integer);
procedure TreeView1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
private
procedure AddSubChild(FNodeName:String;Node:TTreeNode=nil);
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.AddSubChild(FNodeName: String; Node: TTreeNode=nil);
var
LocalName:String;
AddChild:TTreeNode;
ADOQueryTemp:TADOQuery;
begin
ADOQueryTemp:=TADOQuery.Create(nil);
ADOQueryTemp.Connection:=ADOConnection1;
with ADOQueryTemp do
begin
ADOQueryTemp.Close;
ADOQueryTemp.SQL.Clear;
ADOQueryTemp.SQL.Add('select * from master where updep='''+FNodeName+'''');
ADOQueryTemp.Open;
ADOQueryTemp.First;
while not eof do
begin
LocalName:=ADOQueryTemp.fieldByName('Depid').AsString;
AddChild:=TreeView1.Items.AddChild(Node,FieldByName('name').AsString);
AddSubChild(LocalName,AddChild);
Next;
end;
end;
end;procedure TForm1.FormShow(Sender: TObject);
begin
AddSubChild('S',nil);
end;procedure TForm1.ADOQuery1AfterPost(DataSet: TDataSet);
var
InsertQuery:TADOQuery;
ParentID:String;
InsertName:String;
InsertNode:TTreeNode;
begin
InsertQuery:=TADOQuery.Create(nil);
InsertQuery.Connection:=ADOConnection1;
TreeView1.Items.Clear;
AddSubChild('S',nil);
TreeView1.Items.Owner.FullExpand;end;procedure TForm1.BitBtn1Click(Sender: TObject);
begin
DBGrid1.DataSource.DataSet.Append;
end;procedure TForm1.BitBtn3Click(Sender: TObject);
var
DeleteItem:String;
begin
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('delete from master where name='''+TreeView1.Selected.Text+'''');
ADOQuery1.ExecSQL;
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select * from master');
ADOQuery1.Open;
TreeView1.Selected.Delete;
end;procedure TForm1.TreeView1DragDrop(Sender, Source: TObject; X, Y: Integer);
var
TargetNode,SourceNode:TTreeNode;
begin
TargetNode:=TreeView1.GetNodeAt(X,Y);
if TargetNode<>nil then
begin
SourceNode:=TreeView1.Selected;
SourceNode.MoveTo(TargetNode,naAddChildFirst);
TargetNode.Expand(false);
TreeView1.Selected:=TargetNode;
end;
end;procedure TForm1.TreeView1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
var
TargetNode,SourceNode:TTreeNode;
begin
TargetNode:=TreeView1.GetNodeAt(X,Y);
if (Source=Sender) and(TargetNode<>nil) then
begin
Accept:=True;
SourceNode:=TreeView1.Selected;
while(TargetNode.Parent<>nil)and (TargetNode<>SourceNode) do
begin
TargetNode:=TargetNode.Parent;
if TargetNode=SourceNode then
Accept:=false;
end;
end
else
Accept:=false;
end;end.