我想在窗体创建时将数据库中某张表中的某一字段的值加到TreeView控件中去。代码如下:
procedure TForm1.FormCreate(Sender: TObject);
var
qry_FindRecord:TQuery;
Record_no,Record_count:integer;
str_department:string;
node:TTreeNode;
begin
qry_FindRecord := TQuery.Create(nil);
try
with qry_FindRecord do
begin
close;
sql.Clear;
sql.Add('select department from D_EmployeeInfo group by department');
open;
if not eof then
begin
Record_count := qry_FindRecord.RecordCount;
for Record_no := 1 to Record_count do
begin
str_department := trim(qry_FindRecord.fieldbynam.('department').AsString);
node:=TreeView1.Selected;
node:=TreeView1.Items.AddChild(node,str_department);
qry_FindRecord.Next;
end;
end;
end;
finally
qry_FindRecord.Free;
end;
end;
我在TreeView已创建了一个项目'所有部门',本意是将得到的字段值作为这个项目的子项,但代码执行后,字段值和我创建的项目'所有部门'成了同级目录。我的代码哪里出错了,请赐教!
procedure TForm1.FormCreate(Sender: TObject);
var
qry_FindRecord:TQuery;
Record_no,Record_count:integer;
str_department:string;
node:TTreeNode;
begin
qry_FindRecord := TQuery.Create(nil);
try
with qry_FindRecord do
begin
close;
sql.Clear;
sql.Add('select department from D_EmployeeInfo group by department');
open;
if not eof then
begin
Record_count := qry_FindRecord.RecordCount;
for Record_no := 1 to Record_count do
begin
str_department := trim(qry_FindRecord.fieldbynam.('department').AsString);
node:=TreeView1.Selected;
node:=TreeView1.Items.AddChild(node,str_department);
qry_FindRecord.Next;
end;
end;
end;
finally
qry_FindRecord.Free;
end;
end;
我在TreeView已创建了一个项目'所有部门',本意是将得到的字段值作为这个项目的子项,但代码执行后,字段值和我创建的项目'所有部门'成了同级目录。我的代码哪里出错了,请赐教!
其实我知道问题出在这,但咋解决呢?
本来我可以先让treeview得到焦点,问题就可以解决。
但在TForm1.FormCreate事件中写treeview1.setfouc是不行的。
var
RootNode, DepNode: TTreeNode;
i: integer;
begin
RootNode := TreeView1.GetFirstNode;
with Query1 do
begin
Open;
First;
while not Query1.Eof do
begin
DepNode := TreeView1.Items.AddChild(RootNode, FieldByName('epartment').AsStirng);
Next;
end;
end;
end;
//事件不一非要写到FormCreate中,写到FormShow中更好.
//随手写的,没有测试,思路就是这样