TreeView、TreeNode练习,使用指针

原创 2012年03月29日 18:22:39

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
  end
end

PAS文件:

unit frmEncode;

interface

uses
  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.

截图:


相关文章推荐

TreeView Treenode 操作实例

  • 2008年04月05日 13:15
  • 42KB
  • 下载

Delphi练习——TreeView使用

PAS unit U_TreeView; interface uses Windows,Messages,SysUtils,Variants,Classes,Graphics,Control...

win32强化练习4.8_TreeView快速应用(处理消息)

只有进行过充分的练习,才能够真正掌握一门技能!通过进行或单项或综合的知识点强化训练,巩固和提高自己的windows程序设计的技能水平!...

bootstrap的treeview使用方法教程

bootstrap-treeview 简要教程 bootstrap-treeview是一款效果非常酷的基于bootstrap的jQuery多级列表树插件。该jQuery插件...

C# TreeView的使用以及节点的拖动

在项目中需要使用TreeView,TreeView中的节点是需要监控的视频站点,当拖动TreeView中的节点到Winform中的显示窗口时,可以实现该节点对应的站点的监控,摄像机转动等功能。 在实...

TreeView使用技巧

http://www.cnblogs.com/luxiaoxun/p/3288003.html 节点勾选设置 TreeView树中节点勾选要求: 1、不选中一个节点,则其所有的子节点都不被选...

VB.NET中treeview使用方法一

最近发现一控件特有意思,结合网上的教程,研究(难道只有科学家才能用这一词,我等小辈不可以吗?)了一番,这就是treeview控件,我准备从以下几个方面学习它 一、treeview的基本用法及真容(没...

使用预定义模型QDirModel+Treeview的例子

使用预定义模型QDirModel的例子   使用预定义模型QDirModel的例子 Main.cpp Cpp代码   #include      #include "direc...
  • sno_guo
  • sno_guo
  • 2012年05月20日 19:26
  • 1402

VS之treeview使用

本文简单地介绍下VS的treeview使用:包括属性设置、单击事件、双击事件、右键弹出菜单等。...

TreeView控件使用方法总结

1 .常用的几个属性和方法 ~Index 获取树节点在树节点集合中的位置。 ~Nodes 获取分配给树视图控件的树节点集合。 ~Parent 获取或设置控件的父容器。 ~SelectedNod...
  • guozh90
  • guozh90
  • 2011年11月29日 19:31
  • 380
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:TreeView、TreeNode练习,使用指针
举报原因:
原因补充:

(最多只允许输入30个字)