• 学习 TTreeView [5] TTreeNode.Level 属性


    本例效果图:


    unit Unit1;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, ComCtrls, StdCtrls, Grids, ExtCtrls;
    
    type
      TForm1 = class(TForm)
        TreeView1: TTreeView;
        Memo1: TMemo;
        Panel1: TPanel;
        Button1: TButton;
        Button2: TButton;
        Button3: TButton;
        procedure FormCreate(Sender: TObject);
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
        procedure Button3Click(Sender: TObject);
      end;
    
    var
      Form1: TForm1;
    
    implementation
    
    {$R *.dfm}
    
    {初始化 TreeView1}
    procedure TForm1.FormCreate(Sender: TObject);
    var
      Nodes: TTreeNodes;
      node: TTreeNode;
    begin
      TreeView1.Align := alLeft;
      Nodes := TreeView1.Items;
      node := Nodes.Add(nil, '一连长');
      node := Nodes.AddChild(node, '一排长');
      node := Nodes.AddChild(node, '一班长');
      node := Nodes.AddChild(node, '战士1');
      Nodes.Add(node, '战士2');
      Nodes.Add(node, '战士3');
      Nodes.Add(node, '战士4');
      node := node.Parent;
      Nodes.Add(node, '二班长');
      Nodes.Add(node, '三班长');
      node := node.Parent;
      Nodes.Add(node, '二排长');
      Nodes.Add(node, '三排长');
      node := node.Parent;
      Nodes.Add(node, '二连长');
      Nodes.Add(node, '三连长');
    end;
    
    {获取元素名列表}
    procedure TForm1.Button1Click(Sender: TObject);
    var
      i: Integer;
    begin
      Memo1.Clear;
      for i := 0 to TreeView1.Items.Count - 1 do
        Memo1.Lines.Add(TreeView1.Items[i].Text);
    end;
    
    {使用 Level 属性和 Tab 字符格式化列表}
    procedure TForm1.Button2Click(Sender: TObject);
    var
      i: Integer;
      s: string;
    begin
      Memo1.Clear;
      for i := 0 to TreeView1.Items.Count - 1 do
      begin
        s := StringOfChar(#9, TreeView1.Items[i].Level);
        s := s + TreeView1.Items[i].Text;
        Memo1.Lines.Add(s);
      end;
    end;
    
    {上面那个不好看, 这个是用了 4 个空格做 Level 标识}
    procedure TForm1.Button3Click(Sender: TObject);
    var
      i: Integer;
      s: string;
    begin
      Memo1.Clear;
      for i := 0 to TreeView1.Items.Count - 1 do
      begin
        s := StringOfChar(#32, TreeView1.Items[i].Level * 4);
        s := s + TreeView1.Items[i].Text;
        Memo1.Lines.Add(s);
      end;
    end;
    
    end.
    
    之前忘了 StringOfChar 函数的存在, 曾经把程序写作:
    unit Unit1;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, ComCtrls, StdCtrls, Grids, ExtCtrls;
    
    type
      TForm1 = class(TForm)
        TreeView1: TTreeView;
        Memo1: TMemo;
        Panel1: TPanel;
        Button1: TButton;
        Button2: TButton;
        Button3: TButton;
        procedure FormCreate(Sender: TObject);
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
        procedure Button3Click(Sender: TObject);
      end;
    
    var
      Form1: TForm1;
    
    implementation
    
    {$R *.dfm}
    
    {初始化 TreeView1}
    procedure TForm1.FormCreate(Sender: TObject);
    var
      Nodes: TTreeNodes;
      node: TTreeNode;
    begin
      TreeView1.Align := alLeft;
      Nodes := TreeView1.Items;
      node := Nodes.Add(nil, '一连长');
      node := Nodes.AddChild(node, '一排长');
      node := Nodes.AddChild(node, '一班长');
      node := Nodes.AddChild(node, '战士1');
      Nodes.Add(node, '战士2');
      Nodes.Add(node, '战士3');
      Nodes.Add(node, '战士4');
      node := node.Parent;
      Nodes.Add(node, '二班长');
      Nodes.Add(node, '三班长');
      node := node.Parent;
      Nodes.Add(node, '二排长');
      Nodes.Add(node, '三排长');
      node := node.Parent;
      Nodes.Add(node, '二连长');
      Nodes.Add(node, '三连长');
    end;
    
    {获取元素名列表}
    procedure TForm1.Button1Click(Sender: TObject);
    var
      i: Integer;
    begin
      Memo1.Clear;
      for i := 0 to TreeView1.Items.Count - 1 do
        Memo1.Lines.Add(TreeView1.Items[i].Text);
    end;
    
    {使用 Level 属性和 Tab 字符格式化列表}
    procedure TForm1.Button2Click(Sender: TObject);
    var
      arr: array[0..MAXBYTE] of Char;
      i: Integer;
      s: string;
    begin
      Memo1.Clear;
      FillChar(arr, Length(arr), #9);
      for i := 0 to TreeView1.Items.Count - 1 do
      begin
        s := Copy(arr, 0, TreeView1.Items[i].Level);
        s := s + TreeView1.Items[i].Text;
        Memo1.Lines.Add(s);
      end;
    end;
    
    {上面那个不好看, 这个是用了 4 个空格做 Level 标识}
    procedure TForm1.Button3Click(Sender: TObject);
    var
      arr: array[0..MAXBYTE] of Char;
      i: Integer;
      s: string;
    begin
      Memo1.Clear;
      FillChar(arr, Length(arr), #32);
      for i := 0 to TreeView1.Items.Count - 1 do
      begin
        s := Copy(arr, 0, TreeView1.Items[i].Level * 4);
        s := s + TreeView1.Items[i].Text;
        Memo1.Lines.Add(s);
      end;
    end;
    
    end.
    
  • 相关阅读:
    Git服务器配置及本地克隆提交、服务器获取
    远程编译获取控制台日志信息
    切换分支更改项目之一二事
    linux(乌班图)修改apt下载源
    表id关联数据获取至页面,制作下拉框多选进行数据多项获取(字段处理)
    实例实现测试用例自动生成
    maven一模块字段调用另一个模块数据生成下拉框
    页面搜索框日期搜索条件数据至后台的类型转换(时间戳)
    IDEA报错:Error starting ApplicationContext. To display the auto-configuration report re-run your application with 'debug' enabled. ('crmWatcherService'错误)
    单表(SSM、SpringBoot、SpringCloud、Freemaker、BootStrap等)
  • 原文地址:https://www.cnblogs.com/del/p/1101970.html
Copyright © 2020-2023  润新知