请问我想单击不同item触发不同事件,这个click事件如何写?

解决方案 »

  1.   

    procedure TForm1.TreeView1Click(Sender: TObject);
    begin
      case treeview1.Selected.Level of
        0:showmessage('你选中了零层结点') ;
        1:showmessage('你选中了一层结点') ;
        2:showmessage('你选中了二层结点')
        end;
    end;
      

  2.   

    那同一层接点就不能区别了吗?
    我要实现
    --a
       --a1
       --a2
    即单击a1,a2有不同的事件
      

  3.   

    procedure TForm1.TreeView1Click(Sender: TObject);
    begin
          showmessage('你选中了我 :'+treeview1.Selected.text) ;
    end;
      

  4.   

    敢问楼主:你说的不同事件,你怎么知道哪个节点应该做什么事呢?
    树的不同节点的判断:1、节点处在不同的层次(level)可以通过Node的Level来判断!
                       2、节点有不同的内容。可以用Node的text来判断!
                       3、不同的节点数据,可以用data来判断。
    目前我发现用的最多的就是这几种情况了,其他的情况一般不用啊!
      

  5.   

    我用了treeview1.Selected.index来判断,为什么在属性里定义了不同的index值后,case 语句里没有区别呢?
      

  6.   

    建表
    树表NTree:
    节点号     NTree01 int NOT NULL
    节点名称 NTree02 varchar(30) NULL
    节点关联编号 NTree03 varchar(30) NULL
    引用节点号 NTree04 int NULL
    状态 NTree05 varchar(8) NULL
    根节点 NTree06 varchar(20)  NOT NULL
    SELECT * FROM NTree 
    WHERE NTree06 =:Root 
    order by NTree01 ASCprocedure Tfrm_PlanNTree.RefreshNTree;
    var
      CurrentNode, ParentNode : TTreeNode;
      sID ,sName : String;
      procedure ShowNTree(iImageIndex : Integer; iSelectedIndex: Integer);
      begin
        if (DMNTree.Q_NTree.FieldByName('NTree03').AsString <> '')
          and (DMNTree.Q_NTree.FieldByName('NTree05').AsString = '计划' ) then
        begin
          CurrentNode := LVNTree.Items.AddChild(ParentNode,
            DMNTree.Q_NTree.FieldByName('NTree02').AsString );
           // +'['+ DMNTree.Q_NTree.FieldByName('NTree03').AsString +']' );
        end
        else if (DMNTree.Q_NTree.FieldByName('NTree03').AsString <> '')
          and (DMNTree.Q_NTree.FieldByName('NTree05').AsString = '计划清单' ) then
        begin
          CurrentNode := LVNTree.Items.AddChild(ParentNode,
            GetGoodsNameByNTree03(DMNTree.Q_NTree.FieldByName('NTree03').AsString));
        end
        else if (DMNTree.Q_NTree.FieldByName('NTree03').AsString = '') then
        begin
          CurrentNode := LVNTree.Items.AddChild(ParentNode,
            DMNTree.Q_NTree.FieldByName('NTree02').AsString);
        end;
        CurrentNode.ImageIndex := iImageIndex;
        CurrentNode.SelectedIndex := iSelectedIndex;
      end; 
    begin
      LVNTree.Items.Clear;
      DMNTree.Q_NTree.Close;
      DMNTree.Q_NTree.Parameters.ParamValues['Root'] := Root;
      DMNTree.Q_NTree.Open;
      sID := DMNTree.Q_NTree.FieldByName('NTree03').AsString ;
      sName := DMNTree.Q_NTree.FieldByName('NTree02').AsString ;
      if  DMNTree.Q_NTree.IsEmpty then
      begin
        LVNTree.Items.AddChild(nil,Root);
        LVNTree.Items[0].ImageIndex := 0;
        LVNTree.Items[0].SelectedIndex := 0;
        DMNTree.Q_NTree.Append;
        DMNTree.Q_NTree.FieldByName('NTree01').AsInteger := 0;
        DMNTree.Q_NTree.FieldByName('NTree02').AsString := Root;
        DMNTree.Q_NTree.FieldByName('NTree06').AsString := Root;
        DMNTree.Q_NTree.FieldByName('NTree05').AsString := '项目';//状态
        DMNTree.Q_NTree.Post;
        Exit;
      end;
      while not DMNTree.Q_NTree.Eof do
      begin
        if DMNTree.Q_NTree.FieldByName('NTree04').AsString = '' then
        begin
          CurrentNode := LVNTree.Items.AddChild(nil,DMNTree.Q_NTree.FieldByName('NTree02').AsString);
          CurrentNode.ImageIndex := 0;
          CurrentNode.SelectedIndex := 0;
        end
        else
        begin
          ParentNode := LVNTree.Items[DMNTree.Q_NTree.FieldValues['NTree04']];
          if DMNTree.Q_NTree.FieldByName('NTree05').AsString = '项目' then
          begin
            ShowNTree(1,2);
          end
          else  if DMNTree.Q_NTree.FieldByName('NTree05').AsString = '计划' then
          begin
            ShowNTree(3,4);
          end
          else  if DMNTree.Q_NTree.FieldByName('NTree05').AsString = '计划清单' then
          begin
            ShowNTree(5,6);
          end;
        end;
        DMNTree.Q_NTree.Next;
      end;
    end;
      

  7.   

    本人做了一套计划管理,用动态树表,管理计划、采购、调度、领料及BOM单管理
      

  8.   

    你可以通过判断选取item的内容判断,选中的item是treeview1.selected,可以从文本内容.text判断。
      

  9.   

    在唯一的click事件处理过程中访问Selected属性.