请高手指教
treeview控件,如何从数据库中一个表中一个字段的所有值(string),取出,
建立一棵数,数的结点即为表中一列的每一个值。并且每个结点对应一个窗体,当
鼠标点到某个结点的时候,在一个botton中实现对应窗体的弹出。
如果 可能的话。能不能 将窗体在点到时候才动态创建!!!
请各位高手指点!!谢谢!!!!
treeview控件,如何从数据库中一个表中一个字段的所有值(string),取出,
建立一棵数,数的结点即为表中一列的每一个值。并且每个结点对应一个窗体,当
鼠标点到某个结点的时候,在一个botton中实现对应窗体的弹出。
如果 可能的话。能不能 将窗体在点到时候才动态创建!!!
请各位高手指点!!谢谢!!!!
解决方案 »
- 大家好,问个简单的问题,Canvas.textOut 到label上时,怎么保持不被刷新?
- 这个简单的SQL哪错了?
- 为什么出现JPEG Error #41错误?
- IntraWeb退出同时把IE窗口关掉!
- 急需!!固定资产的软件!500元
- 请教用delphi怎样写web service的后台程序(50分请教)
- 送100分
- 高手看过来:用Richedit能实现打开*.doc文件的功能吗?没研究的人不要随便发表意见哦:)
- 请问怎么在DELPHI中命令POWERPOINT打开一个指定的.ppt文件?
- 求教:一个简单的计算问题???
- 有没有不用安装Adobe Reader就能显示pdf文件的控件?
- 现在的CSDN一点不好用·
begin
treeview1.items.add(nil,AdoTable1.fieldbyname('a').asstring);
adotable1.next;
end;procedure TForm1.TreeView1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
TreeHitTest:THitTests;
begin
TreeHitTest:=Treeview1.GetHitTestInfoAt(x,y);
if ssLeft in Shift then
begin
if (htOnLabel in TreeHitTest) then showmessage('ok');//按在Label上
end;
end;
id name parent
1 中国 0
2 浙江 1
3 湖南 1
4 美国 0
5 杭州 2
........
//parent为0表示为根结点function TForm1.Get_node(parent:integer):TTreeNode;
var
root,temp:TTreeNode;
i:integer;
begin
ado.Close;
ado.SQL.Clear;
ado.SQL.Add('select parent from menu where id='+IntToStr(parent)); //求要添加的结点的父结点的parent
ado.Open;
i:=ado.Fields.Fields[0].AsInteger;
ado.Close;
if i=0 then root:=TreeView1.TopItem //为parent为0的结点
else
begin
temp:=Get_node(i);
root:=temp.getFirstChild; //取首个子结点
end;
ado.SQL.Clear;
ado.SQL.Add('select id from menu where parent='+IntToStr(i)+' order by id');
ado.Open;
ado.First;
while not ado.Eof do//比较兄弟,求出所求父结点
begin
if ado.Fields.Fields[0].AsInteger=parent then
break;
root:=root.GetNextChild(root);
ado.Next;
end;
ado.Close;
result:=root;
end;procedure TForm1.Button1Click(Sender: TObject);
var
nod1,nod2:TTreeNode;
begin
TreeView1.Items.Clear;
ADOQuery1.First;
ADOQuery1.DisableControls;
while not ADOQuery1.Eof do
begin
if ADOQuery1.FieldByName('parent').AsInteger=0 then
nod1:=TreeView1.Items.Add(nil,adoQuery1.FieldValues['name'])
else
begin
nod2:=Get_node(adoquery1.FieldValues['parent']); //递归求父结点
nod1:=TreeView1.Items.AddChild(nod2,adoquery1.FieldValues['name']);
end;
ADOQuery1.Next;
end;
ADOQuery1.EnableControls;
end;