敬业的IT人 >> 编程开发 >> C/C++ >> C++ Builder初学问与答7

C++ Builder初学问与答7

敬业的IT人 互联网 佚名 2008-1-3 19:42:45

  53)问:能介绍一下TTreeNodes与TTreeNode?

  答:在BCB中,树状视图的节点是通过TTreeNodes对象来管理的,通过这个对象可以对树状视图进行动态的增加、删除、插入、移动节点等操作。而每一个节点都是一个TTreeNode对象。

  TTreeNode的主要属性和函数:

  Count:这个属性用来返回某个节点所拥有的子节点的数目。它不包括其子节点。

  Item:其声明为:_property TTreeNode* Item[int Index];这个属性用来访问该节点的某个子节点。其中参数Index为其子节点在所有子节点中的位置。

  Index:这个属性用来返回该节点在其父节点的所有子节点中的位置。

  Text:这个属性用来设置或者返回节点的标签。

  Delete:这个函数用来删除该节点本身。

  DeleteChildren:这个函数用来删除该节点的所有子节点。

  EditText:这个函数用来对节点进行就地编辑。

  IndexOf:其声明为:int _fastcall IndexOf(TTreeNode* Value);这个函数将返回该节点的某个子节点的序号。子节点由参数value指定。如果参数value指定的节点不是该节点的子节点,函数将返回-1。

  TTreeNodes的主要属性和函数:

  Count:这个属性用来返回树状视图中节点的数目。

  Add:其声明为:TTreeNode *_fastcall Add(TTreeNode,cborder="0" alt="C++ Builder初学问与答7(图一)" width="384" height="266" />

  选中ImageList1控件,将它的Height和Width属性设置为32。双击ImageList1控件,打开图像列表编辑框。点击Add按钮,选择一个大图标文件。点击打开按钮。然后点击OK按钮。同样方法给ImageList2控件加上小图标。选择TreeView控件,将它的LargeImages属性修改为ImageList1。

  将它的SmallImages属性修改为ImageList2。在ListView控件上点击鼠标右键,选择Columns Editor选项(当然我们只要点击属性Columns右边的“…”就可以了)。弹出Columns编辑对话框。点击Add New工具按钮加入四个列表,选中它们,将它们的captiborder="0" alt="C++ Builder初学问与答7(图二)" width="373" height="273" />

  并编写如下的代码:

  //---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TCompborder="0" alt="C++ Builder初学问与答7(图三)" width="316" height="297" />

  • 如何重装xp系统图解
  • 下载Flash播放插件
  • 巧妙清除Windows 2000/XP登录密码
  • 如何利用路由器设置局域网
  • QQ空间打不开
  • 开机后鼠标不动怎么办
  • Excel密码保护的解除方法与解除原理
  • Windows XP注册表详解
  • 3dmax不锈钢金属材质的制作方法
  • 硬盘变成raw格式怎么办

  只有OnChangeing起了作用,为什么呢?再看下面代码:

  //---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::tvwChange(TObject *Sender, TTreeNode *Node)
{
if(Node->Text=="辽宁")
Memo1->Lines->Add("I'm change!") ;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::tvwChangeing(TObject *Sender, TTreeNode *Node,
bool &AllowChange)
{
//AllowChange=false;这与把此句写成AllowChange=true是一样的
if(Node->Text=="辽宁")
Memo1->Lines->Add("I'm changeing!") ;
}

  两个事件都起作用了,并且OnChangeing先于Onchange发生,所以原因很显然:这一切都是OnChangeing的参数AllowChange造成的,所以要注意对这个参数的使用。

  在ListView中只要把上面的Node->Text改成Item->Caption就可以了。(待续)

正文:进入讨论组讨论。
粤ICP备06119539号
Copyright CiscoSky.Org,Some Rights Reserved.
Email:me1228#tom.com