treeview分三层,依次为:年、月、日。当选中“年”或“月”时不返回值,选中“日”时,返回“年、月、日”相加的值。
如何实现?

解决方案 »

  1.   

    procedure TForm1.TreeView1Click(Sender: TObject);
    var a:integer;
    begin
      if TreeView1.Selected.HasChildren=false then
      begin
        a:= StrToInt(TreeView1.Selected.Text) +
        StrToInt(TreeView1.Selected.Parent.Text)+
        StrToInt(TreeView1.Selected.Parent.Parent.Text);
        ShowMessage(IntToStr(a));  end;
    end;
      

  2.   

    procedure TForm1.TreeView1Click(Sender: TObject);
    var a:integer;
    begin
      if TreeView1.Selected.HasChildren=false then
      begin
        a:= StrToInt(TreeView1.Selected.Text) +
        StrToInt(TreeView1.Selected.Parent.Text)+
        StrToInt(TreeView1.Selected.Parent.Parent.Text);
        ShowMessage(IntToStr(a));  end;
    end;
      

  3.   

    可以加点判断:
      if TreeView1.Items.Count<1 then Exit;
      if TreeView1.Selected=nil then Exit;procedure TForm1.TreeView1Click(Sender: TObject);
    var a:integer;
    begin
      if TreeView1.Items.Count<1 then Exit;
      if TreeView1.Selected=nil then Exit;
      if TreeView1.Selected.HasChildren=false then
      begin
        a:= StrToIntDef(TreeView1.Selected.Text,0) +
        StrToIntDef(TreeView1.Selected.Parent.Text,0)+
        StrToIntDef(TreeView1.Selected.Parent.Parent.Text,0);
        ShowMessage(IntToStr(a));  end;end;
      

  4.   

    楼上的几位会出现不管点任何地方(那怕是空白地方)都响应的现象,效果不是太好的,本人改成只有点击到结点(第三层的),才响应
    procedure TForm1.TreeView1Click(Sender: TObject);
    var
      pt:TPoint;
      node:TTreeNode;
    begin
      pt:=TreeView1.ScreenToClient(mouse.CursorPos);
      node:=TreeView1.GetNodeAt(pt.X,pt.Y);
      if (node<>nil)and(node.Level=2) then //如果点击了结点并且是第三层的话
      begin
        //取得年月日的相加
        edit1.Text:=node.Parent.Parent.Text+node.Parent.Text+node.Text;
        //我想楼主不一定是想要年月日的整数相加吧,我权且改成字符串相加了
      end;
    end;