假如我一个TreeView 有多个项目 而每个项目都有子项目
if tvs.Items[1].Selected=true then
self.ur.URL:='mms://tv.jxgdw.com/jxtv1';
if tvs.Items[2].Selected=true then
self.ur.URL:='mms://61.175.162.94/htv4';这样只能读取第一个主项目的子项目 我应该怎么才能读取其他主项目的子项目呢

解决方案 »

  1.   

    首先你需要把'mms://tv.jxgdw.com/jxtv1'保存到TreeView的Data下,然后循环读,
      

  2.   

    if TreeView1.Items[0].Item[1].Selected then
        ..................
      

  3.   

    你要实现的功能就是点击节点时,打开对应的网站或电视直播吧那要为每个节点创建一个object,里面保存期对应的url给你点参考代码吧
    首先定义一个结构体unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, Grids, StdCtrls, Buttons, ComCtrls, ExtCtrls;
    type
      tmx=packed record
        url:string;
    end;
    pmx=^tmx;创建树时,为每个节点创建一个objectvar
      p:pmx;
      tn:TTreeNode;
    begin
      new(p);
      p.url:='http://www.sdtv1.com.cn';
      tn:=self.TreeView1.Items.Add(nil,'山东电视台');
      self.TreeView1.Items.AddChildObject(tn,'山东卫视,p);
      new(p);
      p.url:='http://www.qltv.com.cn';
      self.TreeView1.Items.AddChildObject(tn,'齐鲁电视台',p);//123就是读取对应urlprocedure TForm1.TreeView1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    var
      tn:TTreeNode;
      s1,s2:string;
      i:Integer;
    begin
      tn:=self.TreeView1.GetNodeAt(x,y);
      if tn=nil then
        Exit;
      if tn.Parent=nil then
        Exit;
      
      s1:=pmx(tn.Data).url;
      self.Label1.Caption:=s1;
    end;
      

  4.   

    用Data来存放啊,这样你就不用一个个判断了嘛
      

  5.   

    treeview 每个节点Node都有一个data指针,可以指向一个对象在添加节点的时候 用tvprograme.items.AddChildObject(父节点,'节点名称', MyObject);然后循环的时候,取这个对象即可 像 TMyObject(node.data).url