zoukankan      html  css  js  c++  java
  • TreeView格式

    #4楼 得分:0回复于:2011-06-17 09:51:44
    [code=Delphi(Pascal)]
    unit Unit1;

    interface

    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, ComCtrls, Menus;

    type
      TAInfo = class
      private
      FID: integer;
      FPId: integer;
      FName: String;
      public
      constructor Create ; overload ;
      constructor Create(id:integer; pId :integer; name :String ) ; overload ;

      public
      property ID :integer read FID write FID ;
      property PId :integer read FPId write FPId ;
      property Name :String read FName write FName ;
      end;
      TForm1 = class(TForm)
      tv1: TTreeView;
      pm1: TPopupMenu;
      N1: TMenuItem;
      procedure FormCreate(Sender: TObject);
      procedure N1Click(Sender: TObject);
      procedure tv1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
      private
      { Private declarations }
      public
      { Public declarations }
      end;

    var
      Form1: TForm1;

    implementation

    {$R *.dfm}

    procedure TForm1.FormCreate(Sender: TObject);
    var
      Node :TTreeNode ;
      info :TAInfo ;
    begin
      tv1.Items.BeginUpdate ;
      tv1.Items.Clear ;

      tv1.Items.EndUpdate ;
      info := TAInfo.Create(1,0,'开发部');
      Node := tv1.Items.Add(nil, info.Name) ; //1
      Node.Data := info ; //2
      // 1和2 可以用下面语句代替
    // Node := tv1.Items.AddObject(nil, info.Name, info) ;

    end;

    { TAInfo }

    constructor TAInfo.Create;
    begin
      self.FID := 0 ;
      self.FPId := -1 ;
      self.FName := '' ;
    end;

    constructor TAInfo.Create(id, pId: integer; name: String);
    begin
      self.FID := id ;
      self.FPId := pId ;
      self.FName := name ;
    end;

    procedure TForm1.N1Click(Sender: TObject);
      function getPNodeCount(): integer ;//得到根节点数
      var
      i:integer ;
      cnt :integer ;
      begin
      cnt := 0 ;
      for i := 0 to tv1.Items.Count -1 do
      begin
      if (tv1.Items.Item[i].Level = 0 ) then
      begin
      cnt := cnt + 1 ;
      end;
      end;

      Result := cnt ;
      end;
    var
      Node :TTreeNode ;
      id , pId :integer ;
      info ,addInfo :TAInfo ;

    begin
      if tv1.Selected <> nil then //有选中节点
      begin
      info := TAInfo(tv1.Selected.Data) ;
      addInfo := TAInfo.Create ;
      addInfo.ID := tv1.Selected.Count+1 ;
      addInfo.PId := info.ID ;//增加的节点的PID应该为选中的节点ID
      addInfo.Name := tv1.Selected.Text + '_' + IntToStr(addInfo.ID) ;
      Node := tv1.Items.AddChild(tv1.Selected, addInfo.Name) ; //1
      Node.Data := addInfo ; //2
      // 1和2 可以用下面语句代替
      // Node := tv1.Items.AddChildObject(tv1.Selected, addInfo.Name, addInfo) ;
      end //没有选中节点,则增加根目录
      else
      begin
      //因为没有实际数据,所以写了一个getPNodeCount
      id := getPNodeCount() ;
      addInfo := TAInfo.Create(id, 0 , '新增_' + IntToStr(id));
      Node := tv1.Items.Add(nil, addInfo.Name) ; //1
      Node.Data := addInfo ; //2
      // 1和2 可以用下面语句代替
      // Node := tv1.Items.AddObject(nil, addInfo.Name, addInfo) ;
      end;


    end;

    procedure TForm1.tv1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    var
      s_dir: string;
      node: TTreeNode;
    begin
      if Button = mbRight then
      begin

      tv1.Selected := tv1.GetNodeAt(X, Y); //确保在需要添加子节点的节点上面右键

      end;
    end ;

    end.

    [code]
  • 相关阅读:
    转 webpack 插件 svg-sprite-loader
    form-data与x-www-form-urlencoded的区别【转】
    nginx echo 高级语法 echo_location【转】
    占位【转】
    gocron在linux环境下安装及设置开机启动【转】
    AES加密2【转】
    Redis的KEYS命令引起宕机事件【纯转】
    Java四种锁及分布式锁的初解【纯转】
    java转发二进制图片流【原】
    SpringBoot整合Redis及Redis工具类撰写【纯转】
  • 原文地址:https://www.cnblogs.com/mingdep/p/2218534.html
Copyright © 2011-2022 走看看