如何使用delphi中的TTreeview将数据绑定到中的编辑控件
如何在Delphi中将数据从TTreeview控件绑定到Edit控件。。 当我点击提交按钮时。就像我可以编辑数据并更新它一样如何使用delphi中的TTreeview将数据绑定到中的编辑控件,delphi,delphi-7,Delphi,Delphi 7,如何在Delphi中将数据从TTreeview控件绑定到Edit控件。。 当我点击提交按钮时。就像我可以编辑数据并更新它一样 procedure TForm1.Button1Click(Sender: TObject); var CurrentDeptID, RecordDeptID: Integer; RootNode, DeptNode: TTreeNode; begin CurrentDeptID := 0; TreeList1.Items.Clear; RootNod
procedure TForm1.Button1Click(Sender: TObject);
var
CurrentDeptID, RecordDeptID: Integer;
RootNode, DeptNode: TTreeNode;
begin
CurrentDeptID := 0;
TreeList1.Items.Clear;
RootNode := TreeList1.Items.Add(nil, 'Departments');
DeptNode := nil;
ADOQuery1.SQL.Text := 'SELECT sd.DeptID, sd.Name, d.Dept FROM SubDepartments sd INNER JOIN Departments d ON (sd.DeptID = d.DeptID) ORDER BY d.Dept, sd.Name';
ADOQuery1.Open;
try
ADOQuery1.First;
while not ADOQuery1.Eof do
begin
RecordDeptID := ADOQuery1.FieldByName('DeptID').AsInteger;
if (DeptNode = nil) or (RecordDeptID <> CurrentDeptID) then
begin
DeptNode := TreeList1.Items.AddChild(RootNode, ADOQuery1.FieldByName('Dept').AsString);
CurrentDeptID := RecordDeptID;
end;
TreeList1.Items.AddChild(DeptNode, ADOQuery1.FieldByName('Name').AsString);
ADOQuery1.Next;
end;
finally
ADOQuery1.Close;
end;
procedure TForm1.按钮1点击(发送方:TObject);
变量
CurrentDeptID,RecordDeptID:整数;
RootNode,DeptNode:TTreeNode;
开始
CurrentDeptID:=0;
树列表1.Items.Clear;
RootNode:=TreeList1.Items.Add(nil,'Departments');
DeptNode:=nil;
ADOQuery1.SQL.Text:=“从子部门sd内部选择sd.DeptID、sd.Name、d.DeptID按d.DeptID、sd.Name在(sd.DeptID=d.DeptID)订单上加入部门d”;
ADOQuery1.打开;
尝试
A第一个问题;
而不是问1.Eof做什么
开始
RecordDeptID:=ADOQuery1.FieldByName('DeptID').AsInteger;
如果(DeptNode=nil)或(RecordDeptID CurrentDeptID),则
开始
DeptNode:=TreeList1.Items.AddChild(RootNode,ADOQuery1.FieldByName('Dept').AsString);
CurrentDeptID:=RecordDeptID;
结束;
TreeList1.Items.AddChild(DeptNode,ADOQuery1.FieldByName('Name').AssString);
ADOQuery1.下一步;
结束;
最后
ADOQuery1.关闭;
结束;
谢谢。在Delphi 7中没有作为标准的DB Treeview,并且在任何情况下,您的查询都是不可编辑的。如果要在窗体上使用数据感知控件,则需要添加附加的数据集以将编辑控件绑定到。您可以将子部门的关键引用存储在
TTreeItem
的数据属性中
procedure TForm1.Button1Click(Sender: TObject);
var
CurrentDeptID, RecordDeptID: Integer;
RootNode, DeptNode, SubDeptNode : TTreeNode;
begin
CurrentDeptID := 0;
TreeList1.Items.Clear;
RootNode := TreeList1.Items.Add(nil, 'Departments');
DeptNode := nil;
ADOQuery1.SQL.Text := 'SELECT sd.DeptID, sd.Name, d.Dept FROM SubDepartments sd INNER JOIN Departments d ON (sd.DeptID = d.DeptID) ORDER BY d.Dept, sd.Name';
ADOQuery1.Open;
try
ADOQuery1.First;
while not ADOQuery1.Eof do
begin
RecordDeptID := ADOQuery1.FieldByName('DeptID').AsInteger;
if (DeptNode = nil) or (RecordDeptID <> CurrentDeptID) then
begin
DeptNode := TreeList1.Items.AddChild(RootNode, ADOQuery1.FieldByName('Dept').AsString);
CurrentDeptID := RecordDeptID;
end;
SubDeptNode := TreeList1.Items.AddChild(DeptNode, ADOQuery1.FieldByName('Name').AsString);
SubDeptNode.Data := ADOQuery1.FieldByName('DeptID').AsInteger;
ADOQuery1.Next;
end;
finally
ADOQuery1.Close;
end;
什么样的数据?到目前为止你试着做什么?代码在哪里?现在我想显示编辑控件中的数据。。。
Procedure TForm1.TreeList1Click(Sender : TObject);
Var
lNode : TTreeNode;
lID : Integer;
Begin
lNode := TTreeList.Selected;
If Assigned(lNode) And (lNode.Level = 2) Then
Begin
lID := lNode.Data;
// Pass this lID to your additional query.
End;
End;