TreeView、TreeNode练习,使用指针

来源:互联网 发布:lol 测试网络丢包率 编辑:程序博客网 时间:2024/05/21 08:48

DFM文件:

object Encodefrm: TEncodefrm  Left = 240  Top = 189  Width = 373  Height = 263  Caption = #32534#30721  Color = clBtnFace  Font.Charset = DEFAULT_CHARSET  Font.Color = clWindowText  Font.Height = -11  Font.Name = 'MS Sans Serif'  Font.Style = []  OldCreateOrder = False  OnCreate = FormCreate  OnShow = FormShow  PixelsPerInch = 96  TextHeight = 13  object lblEncode: TLabel    Left = 152    Top = 32    Width = 201    Height = 25    AutoSize = False    Caption = #35831#36755#20837#32534#30721    Font.Charset = DEFAULT_CHARSET    Font.Color = clWindowText    Font.Height = -20    Font.Name = 'MS Sans Serif'    Font.Style = []    ParentFont = False  end  object tvEncode: TTreeView    Left = 8    Top = 8    Width = 129    Height = 209    Indent = 19    TabOrder = 0  end  object edtEncode: TEdit    Left = 152    Top = 76    Width = 201    Height = 21    ImeName = #20013#25991' ('#31616#20307') - '#25628#29399#25340#38899#36755#20837#27861    TabOrder = 1  end  object grpEncodeControl: TGroupBox    Left = 152    Top = 129    Width = 201    Height = 73    Caption = #25511#21046#25353#38062#36873#39033    TabOrder = 2    object btnEncodeAdd: TButton      Left = 16      Top = 24      Width = 75      Height = 25      Caption = #28155#21152      TabOrder = 0      OnClick = btnEncodeAddClick    end    object btnEncodeDelete: TButton      Left = 104      Top = 24      Width = 75      Height = 25      Caption = #21024#38500      TabOrder = 1      OnClick = btnEncodeDeleteClick    end  endend

PAS文件:

unit frmEncode;interfaceuses  Windows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Forms,  Dialogs,StdCtrls,ComCtrls;type  TEncodefrm = class(TForm)    tvEncode: TTreeView;    lblEncode: TLabel;    edtEncode: TEdit;    grpEncodeControl: TGroupBox;    btnEncodeAdd: TButton;    btnEncodeDelete: TButton;    procedure btnEncodeAddClick(Sender: TObject);    procedure btnEncodeDeleteClick(Sender: TObject);    procedure FormCreate(Sender: TObject);    procedure FormShow(Sender: TObject);  private    { Private declarations }  public    { Public declarations }  end;var  Encodefrm: TEncodefrm;implementation{$R *.dfm}//“添加节点”按钮点击事件处理过程procedure TEncodefrm.btnEncodeAddClick(Sender: TObject);var  PTvn: ^TTreeNode;begin  //判断是否输入了要添加节点的内容  if Trim(edtEncode.Text) = '' then  begin    ShowMessage('请输入要添加节点的内容');    Exit;  end;  New(PTvn);  PTvn^ := tvEncode.Selected;  //添加子节点  tvEncode.Items.AddChild(PTvn^,edtEncode.Text);  Dispose(PTvn);end;//“删除节点”按钮点击事件处理过程procedure TEncodefrm.btnEncodeDeleteClick(Sender: TObject);var  PTvn: ^TTreeNode;begin  New(PTvn);  PTvn^ := tvEncode.Selected;  //没有选中节点  if PTvn^ = nil then  begin    ShowMessage('请选择要删除的节点');    Dispose(PTvn);    Exit;  end;  //选中的节点包含子节点  if PTvn^.HasChildren then  begin    if MessageBox(Handle, '该节点包含子节点,确实要删除吗?', '提示信息',MB_YESNO) = idyes then    begin      //删除选中节点      PTvn^.Delete;    end;  end    //选中的节点不包含子节点  else  begin    PTvn^.Delete;  end;  Dispose(PTvn);end;procedure TEncodefrm.FormCreate(Sender: TObject);begin  tvEncode.ReadOnly := True;  tvEncode.HideSelection := False;end;procedure TEncodefrm.FormShow(Sender: TObject);var  CurrentNode: TTreeNode;  PTvn: ^TTreeNode;  i,j,k: Integer;begin  New(PTvn);  //添加根节点  CurrentNode := tvEncode.Items.AddChild(nil, '编码');  PTvn^ := CurrentNode;  //添加第一层节点  for i := 1 to 5 do  begin    PTvn^ := tvEncode.Items.AddChild(PTvn^, Format('%s:%d', ['编码', i]));    //添加第二层节点    for j := 1 to i + 1 do    begin      PTvn^ := tvEncode.Items.AddChild(PTvn^, Format('%s:%d-%d', ['编码', i, j]));      //添加第三层节点      for k := 1 to j + 1 do      begin        tvEncode.Items.AddChild(PTvn^, Format('%s:%d-%d-%d', ['编码', i, j, k]));      end;      PTvn^ := PTvn^.Parent;    end;    PTvn^ := PTvn^.Parent;  end;  Dispose(PTvn);end;end.

截图:


原创粉丝点击