想把XML解析出来的数据通过列表显示出来
就是相当于表格,有表头,每一行一条数据
xml为:
<data>
<student>
<id>1</id>
<name>zhang</name>
<age>21</age>
</student>
<student>
<id>2</id>
<name>wang</name>
<age>23</age>
</student>
</data>
显示为
       学生姓名   学生年龄   
         zhang      21
         wang       23xml可能包含N个学生,列表也能动态显示n行学生数据,点某一行
的时候能弹出个窗口,把id传到新窗口显示学生的详细信息(30多项目)请问在delphi里用什么控件比较好,ListView吗?具体怎么操作这个控件,
给出例子代码,100分全给

解决方案 »

  1.   

    给你点代码看看吧,不好不过大意就是这样;有个单元是用Delphi XML Data Bandig导入的
    data.pasprocedure TMainForm.btnCloseClick(Sender: TObject);
    begin
      Application.Terminate;
    end;procedure TMainForm.btnGetDataClick(Sender: TObject);
    var
      XMLFilePath: string;
    begin
      XMLFilePath := ExtractFileDir(ParamStr(0)) + '\data.xml';
      GetDataFromXMLToLV(XMLFilePath);
    end;procedure TMainForm.FormCreate(Sender: TObject);
    begin
      SetListViewColumn();
    end;{----------------------------------------------------------
     函数名称: GetDataFromXMLToLV;
     函数参数: const aXMLFilePath: string;
     参数说明: XML文件的路径;
     函数作者: kjiwu
     函数返回值: None
     函数说明: 从XML文件中取出数据到ListView中;
    ----------------------------------------------------------}
    procedure TMainForm.GetDataFromXMLToLV(const aXMLFilePath: string);
    var
      Root: IXMLData;
      i: Integer;
      Node: TListItem;
    begin
      Root := Loaddata(aXMLFilePath);
      for i := 0 to Root.Count-1 do
      begin
        Node := lv.Items.Add;
        with Node do
        begin
          Caption := Root.Student[i].Name;
          SubItems.Add(Root.Student[i].Age);
          SubItems.Add(Root.Student[i].Id);
        end;
      end;
    end;procedure TMainForm.lvClick(Sender: TObject);
    begin
      if lv.Selected = nil then Exit;  ShowMessage(lv.Selected.SubItems.Strings[1]);
    end;procedure TMainForm.SetListViewColumn;
    var
      i: Integer;
    begin
      lv.ViewStyle := vsReport;
      for i := 0 to 2 do
      begin
        lv.Columns.Add;
        lv.Column[i].AutoSize := true;
      end;
      lv.Column[0].Caption := '学生姓名';
      lv.Column[1].Caption := '学生年龄';
      lv.Column[2].AutoSize := False;
      lv.Column[2].Width := 0;
    end;