C++ Builder初学问与答7
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" />
并编写如下的代码:
只有OnChangeing起了作用,为什么呢?再看下面代码: 两个事件都起作用了,并且OnChangeing先于Onchange发生,所以原因很显然:这一切都是OnChangeing的参数AllowChange造成的,所以要注意对这个参数的使用。 在ListView中只要把上面的Node->Text改成Item->Caption就可以了。(待续)//---------------------------------------------------------------------------
#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" />//---------------------------------------------------------------------------
#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!") ;
}
- 最新文章
- C++ Builder初学问与答8[01-03]
- C++ Builder初学问与答9[01-03]
- 操作DHTML表格的C++对象[01-03]
- C++下的引用类型[01-03]
- C++中布尔类型[01-03]
- C/C++中枚举类型(enum)[01-03]
- 相关文章
