我现在的treeview的数据都是写死在程序里的。我想从服务器上加载treeview的数据,实现如下功能:每次启动软件的时候,从服务器上更新下treeview的列表。treeview有二级比如一级为省,二级为城市,如果双击二级,则显示城市对应的信息,而每个城市对应的信息也是在服务器更新下载的。服务器上数据大概的存放意思就是江苏
  ->南京
  ->南京不好玩浙江
  ->杭州
  ->杭州有西湖意思就是我在treeview里点击南京,就显示南京不好玩

解决方案 »

  1.   


    可以用文本文件
    你在Treeview上添加些数据,然后用TreeView1.SaveToFile();
    保存一个文件就明白了
    同样可以用TreeView1.LoadFromFile();把数据加载进来
      

  2.   

    自己写个onclick事件处理
    如果该节点没有有子节点,则从服务器上取数据,然后,增加子节点,显示相关信息
      

  3.   

    给你个例子参考下,显示内容可以自己在数据表里加一列
    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;