我想请教一下怎么样将TreeView的节点存入数据库中
还有怎么样从数据库中读取数据显示到TreeView中
还有怎么样从数据库中读取数据显示到TreeView中
解决方案 »
- ACTIVEX如何在ACTVFORM窗口中创建新窗口。
- 求助: 怎样得到一个EXE程序被安装的路径名和EXE程序名?
- 有什么办法知道当前网络上哪台电脑联接到我的计算机,并对本机进行了什么样的操作?
- 问一个很怪的问题:怎么编程实现往资源文件里写入(res文件)字符串?高分酬谢!
- 求助powercad/vcl源码
- Exe 文件打包问题,求高手指点!
- 谁知道dxdbgrid控件中各个小栅格(CELL)中某一个小栅格(CELL)失去焦点时将触发什么事件?(
- 编程怎样实现access中对数据库的修复功能。
- 问个基础问题,谁知道什么意思呢?//007pro
- 谈谈Delphi的面试经验
- ★★★我15岁堂弟学delphi10天左右的作品
- CSDN有这些人在肯定人气不行,现在上delphi版的越来越少了
begin
query1.sql.text:='select * from table order by fatherarea'
query1.open;
Query1.First;
while not Query1.Eof do
begin
if Query1.FieldByName('fatherarea').AsInteger=0 then TreeView1.Items.AddObject(TreeView1.TopItem,Query1.FieldByName('areaclcode').AsString+Query1.FieldByName('areaclname').AsString,pointer(Query1.FieldByName('areacl').asinteger))
else
begin
TreeView1.Items.AddChildObject(TreeView1.Items[getindex(pointer(Query1.FieldByName('fatherarea').AsInteger))],Query1.FieldByName('areaclcode').AsString+Query1.FieldByName('areaclname').AsString,pointer(Query1.FieldByName('areacl').asinteger))
end;
Query1.Next;
end;
end;function TForm1.getindex(idvalue:pointer): integer;
var
i:integer;
inde:integer;
begin
inde:=0;
for i:=0 to TreeView1.Items.Count-1 do
begin
if TreeView1.Items[i].Data=idvalue then
begin
inde:=i;
break;
end;
end;
Result:=inde;
end;
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ComCtrls, Db, ADODB, StdCtrls;type
TfrmMain = class(TForm)
TreeView1: TTreeView;
ADOConnection1: TADOConnection;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
function getindex(idvalue: Integer): integer;
public
{ Public declarations }
end;var
frmMain: TfrmMain;implementation{$R *.DFM}procedure TfrmMain.Button1Click(Sender: TObject);
begin
with TADOQuery.Create(nil) do
begin
Connection := ADOConnection1;
sql.text:='select * from Tree order by Parent_ID';
open;
First;
while not Eof do
begin
if FieldByName('Parent_ID').AsInteger=0 then
begin
with TreeView1.Items.Add(TreeView1.TopItem,
FieldByName('Node_Name').AsString) do
begin
StateIndex := FieldByName('ID').AsInteger;
end;
end
else
begin
with TreeView1.Items.AddChild(TreeView1.Items[getindex(FieldByName('Parent_ID').AsInteger)],
FieldByName('Node_Name').AsString) do
begin
StateIndex := FieldByName('ID').AsInteger;
end;
end;
Next;
end;
end;
end;function TfrmMain.getindex(idvalue: Integer): integer;
var
i:integer;
inde:integer;
begin
//
inde:=0;
for i:=0 to TreeView1.Items.Count-1 do
begin
if TreeView1.Items[i].StateIndex = idvalue then
begin
inde:=i;
break;
end;
end;
Result:=inde;
end;end.
数据库:只有一个表Tree
ID:自动编号
Parent_ID:父节点编号
Node_Name:节点Caption
页面Form1
就一个TreeView和一个Button,都是默认值。