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.

截图:


C# TreeNode的使用方法

目录(?)[+] C中Treeview判断选择的节点并执行不同的方法C 怎么判断TreeView选中的是子节点 并且是属于哪个父节 添加节点 [csharp] view ...
  • u011555996
  • u011555996
  • 2016年11月23日 09:41
  • 8737

黑马程序员——C语言基础——指针编程练习题

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 今天复习了一下指针的相关知识,并且在网上搜了一道小的编程练习题,大概题意如下: 有n个整数,使...
  • Elors
  • Elors
  • 2015年06月01日 23:07
  • 1521

C#中TreeView树配图片

先上效果: 这是一个TreeView控件的效果。 控件的用法就不多说了,具体参考: http://msdn.microsoft.com/zh-cn/library/vstudio/sys...
  • zy332719794
  • zy332719794
  • 2013年06月03日 15:36
  • 5368

TreeView Treenode 操作实例

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

Delphi练习——TreeView使用

PAS unit U_TreeView; interface uses Windows,Messages,SysUtils,Variants,Classes,Graphics,Control...
  • EYUANatQQdotCOM
  • EYUANatQQdotCOM
  • 2012年03月14日 15:52
  • 434

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

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

bootstrap的treeview使用方法教程

bootstrap-treeview 简要教程 bootstrap-treeview是一款效果非常酷的基于bootstrap的jQuery多级列表树插件。该jQuery插件...
  • mixika99
  • mixika99
  • 2016年11月26日 22:50
  • 9124

jquery的treeview插件使用-简单介绍

简单介绍一下JQUERY中的插件Treeview的用法,主要是怕自己会忘了 地址:http://docs.jquery.com/Plugins/Treeview      (有大量的例子,下载源码...
  • wangxiaoyan1988
  • wangxiaoyan1988
  • 2011年02月21日 17:56
  • 8015

VB.NET中treeview使用方法一

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

winform中treeView使用通用类

using System; using System.Collections.Generic; using System.Text; using System.Windows.Forms; n...
  • SunCherryDream
  • SunCherryDream
  • 2014年09月15日 17:01
  • 928
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:TreeView、TreeNode练习,使用指针
举报原因:
原因补充:

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