• delphi TreeComboBox 生成树菜单


    procedure TForm11.cxbtn1Click(Sender: TObject);
    var
      T: DWORD;
    begin
      T := GetTickCount;
      MakeTree(kbmMemTable1, cbb1);
      lbl1.Caption := Format('MakeTree所用时间: %d ms', [GetTickCount - T]);
    end;

    procedure TForm11.FormCreate(Sender: TObject);
    var
      i, id: Integer;
    begin
      id := 0;
      with kbmMemTable1 do
      begin
        DisableControls;
        try
          Open; //打开
          for i := 0 to 5 do
          begin
            Inc(id);
            Append; //附加数据
            //赋值
            FieldByName('ID').AsString := inttostr(id);
            FieldByName('ParentID').AsString := inttostr(0);
            FieldByName('Name').AsString := 'YXM'+'是'+inttostr(id);
            Post; //确定
          end;
          Append; //附加数据
          //赋值
          FieldByName('ID').AsString := '101';
          FieldByName('ParentID').AsString := '1';
          FieldByName('Name').AsString := '这个是1的儿子!';
          Post;
          Append; //附加数据
          //赋值
          FieldByName('ID').AsString := '201';
          FieldByName('ParentID').AsString := '2';
          FieldByName('Name').AsString := '这个是2的儿子!';
          Post;
          Append; //附加数据
          //赋值
          FieldByName('ID').AsString := '301';
          FieldByName('ParentID').AsString := '3';
          FieldByName('Name').AsString := '这个是3的儿子!';
          Post;

          Append; //附加数据
          //赋值
          FieldByName('ID').AsString := '10101';
          FieldByName('ParentID').AsString := '101';
          FieldByName('Name').AsString := '101的儿子,1的孙子!';
          Post;

          UpdateIndexes; //更新索引
        finally
          EnableControls; //连接数据感知控件
        end;
      end;
    end;

    procedure TForm11.MakeTree(dataset: TDataSet; TreeComboBox: TAdvTreeComboBox); //生成树
    var
      List: TStringList;
      Node: TTreeNode;
      Index: Integer;
    begin
      TreeComboBox.Items.BeginUpdate;
      try
        TreeComboBox.Items.Clear;
        List := TStringList.Create;
        try
          List.Sorted := True;
          dataset.DisableControls;
          dataset.First;
          while not dataset.Eof do
          begin
            if dataset.FieldByName('ParentID').AsInteger = 0 then { ParentID=0,顶层节点 }
              Node := TreeComboBox.Items.AddChild(nil, dataset.FieldByName('Name').AsString)
            else
            begin
              Index := List.IndexOf(dataset.FieldByName('ParentID').AsString);
              Node := TreeComboBox.Items.AddChild(TTreeNode(List.Objects[Index]),
                dataset.FieldByName('Name').AsString);
            end;
            List.AddObject(dataset.FieldByName('ID').AsString, Node);
            dataset.Next;
          end;
        finally
          List.Free;
        end;
      finally
        dataset.EnableControls;
        TreeComboBox.Items.EndUpdate;
      end;
    end;

    end.

    参考

    http://www.cnblogs.com/yplong/archive/2012/02/21/2361011.html

  • 相关阅读:
    JSF教程(8)——生命周期之Apply Request Values Phase
    使Gallery时设置居左显示
    Android---06---2中动画效果
    java之UDP(datagramsocket,datagramPacket)实例
    Android NDK开发篇(四):Java与原生代码通信(原生方法声明与定义与数据类型)
    固态硬盘(SSD) 和机 械硬盘(HDD) 优缺点比較
    使用单例时的三种单例写法
    POJ 2777 Count Color
    Linux下画原理图和PCB
    hdu3685(几何重心与凸包结合)
  • 原文地址:https://www.cnblogs.com/yangxuming/p/6603965.html
Copyright © 2020-2023  润新知