请求解决方法! (100分)

  • 主题发起人 主题发起人 Free_sky
  • 开始时间 开始时间
F

Free_sky

Unregistered / Unconfirmed
GUEST, unregistred user!
DB0 DB1 DB2 DB3 DB4 DB5 DB6 DB7 DB8 标识 数量 名称 部套名称 计算机
0 计算机
1 显示器
2 显象管
1 机箱
2 主板
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
最少有八层!层与层之间是包含关系!用delphi和SQL数据库。用树形图解决!但层里包含
的层(这里指部套)是根据用户的需要(随机的)输入,每层下有多少层不固定,
这样在树形图里按关系载入它们!在增加和修改节点时需要把数据增加和更新到数据库!
主要是必须明显的表示出层与层之间的关系!到时还要打印报表!谢谢大家!
(树形图的节点显示的是数据表的名称)
 
用一个链表来做把
用链表配合堆栈来保存关系,就看你的数据结构的功底了
 
增加一个字段吧!用来标志它所在的位置!
也就是这样存储:
0
01
012
0123
。。。。
这样就很容易的就知道它所在的位置,以及上级,上上级。。。,是谁!
建树时开始可以只建一层,当点击了节点时,再建它的下一层,
这样处理起来比较简单,速度也快得多,新增可以根据用户选中的位置
得到一个treenode,再用一个循环得到他的上层,上上层。。。
while treenode<>nil do
begin
//得到相应的数据
treenode:=treenode.parent;
end;
这样就得到该字段的值!
 
可能有10层以上,那样标识太麻烦了!
而且每层下面还有很多层啊!
procedure TForm1.N4Click(Sender: TObject);
var
InsertNode:TtreeNode;
begin
treeview1.MultiSelect :=false;
InsertNode:=treeview1.Selected;

case InsertNode.Level of
0:
with query1 do
try
InsertNode:=treeview1.Items.AddChild(treeview1.Selected,'');
treeview1.Selected.Expand(true);
insertNode.Focused:=true;
InsertNode.EditText ;
try
close;
sql.Clear;
SQL.Add('insert into TempMx(DB0,名称) values (:vid,:vname) ');
ParambyName('vid').asstring:='0';
if InsertNode.Text <>'' then
begin
ParamByName('vname').asstring:=InsertNode.Text;
ExecSql;
treeview1.Update;
end;
except
MessageDlg('增加新节点失败!',mtInformation,[mbOk],0);
end;
finally
free;
end;
end;
end;
这是一个增加节点,然后在表里增加记录!是不是有错啊!为什么
增加不了记录!请指点。谢谢
 
往表里增加记录不应该好像放在这里吧?
你这里增加记录,用户的数据还没有输入呢,
是不是一个换一个事件?
 
To book532:
我想在增加完节点后立即就增加记录!增加完记录后在DBGRID里立即显示出来!
因为有很多字段增加完后我想在DBGRID里在修改这条记录!不知您可有什么好
方法!谢谢您!
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部