我现在的treeview的数据都是写死在程序里的。我想从服务器上加载treeview的数据,实现如下功能:每次启动软件的时候,从服务器上更新下treeview的列表。treeview有二级比如一级为省,二级为城市,如果双击二级,则显示城市对应的信息,而每个城市对应的信息也是在服务器更新下载的。服务器上数据大概的存放意思就是江苏
->南京
->南京不好玩浙江
->杭州
->杭州有西湖意思就是我在treeview里点击南京,就显示南京不好玩
->南京
->南京不好玩浙江
->杭州
->杭州有西湖意思就是我在treeview里点击南京,就显示南京不好玩
可以用文本文件
你在Treeview上添加些数据,然后用TreeView1.SaveToFile();
保存一个文件就明白了
同样可以用TreeView1.LoadFromFile();把数据加载进来
如果该节点没有有子节点,则从服务器上取数据,然后,增加子节点,显示相关信息
procedure TForm1.FindLeechDom(Leechdomname: String;node: TTreeNode);
var
temp: TQuery;
node1: TTreeNode;
begin
Try
temp := TQuery.Create(Self);
temp.DatabaseName := ExtractFilePath(Application.ExeName);
With temp do
begin
Close;
SQL.Clear;
SQL.Add('select * from leechdom.db where 上级编码 = :Value');
ParamByName('value').AsString := Leechdomname;
Open;
end;
while Not Temp.Eof do
begin
node1 := TreeView1.Items.AddChild(node,temp.FieldByName('药品类别').AsString);
FindLeechDom(temp.FieldByName('药品类别').AsString,node1);
temp.Next;
end;
Finally
temp.Free;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
var
temp: TTreeNode;
begin
if FileExists(ExtractFilePath(Application.ExeName)+'leechdom.db') then
begin
Query1.DatabaseName := ExtractFilePath(Application.ExeName);
With Query1 do
begin
Close;
SQL.Clear;
SQL.Add('select * from leechdom.db');
Open;
end;
while not Query1.Eof do
begin
if Query1.FieldByName('上级编码').AsString = '' then
begin
temp := TreeView1.Items.AddChild(TreeView1.Items[0],Query1.FieldByName('药品类别').AsString);
FindLeechDom(Query1.FieldByName('药品类别').AsString,temp);
end;
Query1.Next;
end;
end;
end;