【发布时间】:2022-01-25 15:59:11
【问题描述】:
我希望将来自TADOQuery 的信息加载到TTreeView。例如,我希望它在Table1 中加载为Field1->Add,在buttonClick 中加载为Field2->AddChild。但是当我运行代码时,我得到一个错误:
模块“TRV2.exe”中地址 0043616B 的访问冲突
我犯了一个错误或缺少某些东西。你能指导我吗?
procedure TForm1.AddButtonClick(Sender: TObject);
var
t: Integer;
MyNode, Node : TTreeNode;
begin
MyNode := Node;
t := Node.AbsoluteIndex;
TreeView1.Items.Add(MyNode, ADOQuery1.FieldByName('CODE_NAME').AsString);
end;
procedure TForm1.AddChildButtonClick(Sender: TObject);
var
t: Integer;
MyNode, Node: TTreeNode;
begin
MyNode := Node;
t := Node.AbsoluteIndex;
TreeView1.Items.Add(MyNode, ADOQuery1.FieldByName('CODE_CHILD').AsString);
end;
procedure TForm1.FormCreate(Sender: TObject);
var
t: Integer;
MyNode, Node: TTreeNode;
begin
MyNode := Node;
t := Node.AbsoluteIndex;
ADOQuery1.Open;
end;
更新:当我向数据库添加新的 Add 和 Child 时,我想获取整个表并更新 TTreeView。使用这些代码(AddButtonClick 和AddChildButtonClick)我只能将第一个值导入TTreeView。我想知道是否需要循环?
【问题讨论】:
-
MyNode:=Node;是有问题的:两者都是未初始化的局部变量,它们的值是随机的。访问 Node 或 MyNode 可能会产生访问冲突。