求助各位老师了,谢谢
procedure TForm2.TreeView1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);var
  TempNode:TTreeNode;
begin
  TempNode := TreeView1.GetNodeAt(x,y);
  if (TempNode<>nil) and (TempNode=TreeView1.Selected) then
  begin    if treeview1.Items[0].GetNext.items[0].Selected then
    begin
    mainmenu1.Items[1][0].Click
    end;
end;
end;为什么提示 list index out of bounds (0)??

解决方案 »

  1.   

    procedure TForm2.TreeView1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);var
      TempNode:TTreeNode;
    begin
      TempNode := TreeView1.GetNodeAt(x,y);
      if (TempNode<>nil) and (TempNode=TreeView1.Selected) then
      begin    if treeview1.Items[0].GetNext.item[0].Selected then
        begin
        mainmenu1.Items[1][0].Click
        end;
    end;
    end;
      

  2.   

    treeview下标越界
      

  3.   

    楼主想要实现什么样的功能,是点击treeview里面的items事件和mainmenu里面的单击事件相关联吗?
      

  4.   

    问题出在 treeview1.Items[0].GetNext.item[0].Selected
    说明:
    一、A树结构
     
    挂号科室
        内科
        外科
        眼科
    医生办公
        办公1
        办公2
        办公3
    后台管理
        后台1
        后台2
        后台3二、B树结构  
    挂号科室
        内科
           内科1
           内科2
           内科3
        外科
        眼科
    医生办公
        办公1
        办公2
        办公3
    后台管理
        后台1
        后台2
        后台3
      
    三、分析1、treeview1.Items[0].GetNext=treeview1.Items[1]   对于A树就是“内科”节点
    2、treeview1.Items[0].GetNext.item[0]              对于A树就是“内科”节点的第1个子节点,A树没有子节点,出现越界错误 
    3、对于B树  treeview1.Items[0].GetNext.item[0]    就是“内科”节点的第1个子节点:“内科1”,不会出现越界错误四、结论
    treeview1.Items[0].GetNext.item[0]不是一个正确代码,正确代码不管树结构如何,都不会出现越界错误。