//DBTreeView详细设计.CPP文件
__fastcall TDBTreeView::TDBTreeView(TComponent* Owner)
: TTreeView(Owner)
{
//在构造函数中对相关数据进行初始化
FDataLink = new TFieldDataLink; //建立数据连接类
FParentIDField = \"\"; //将节点父标识设置为空
FPrimaryIDField = \"\"; //将节点主标识设置为空
FDisplayField = \"\"; //将显示字段设置为空
FActive = false; //设置为非活动状态
FAllowModifyDB = false; //设置数据集不允许修改
}
__fastcall TDBTreeView::~TDBTreeView()
{//在析构函数中释放构造函数分配的资源
delete FDataLink; //释放数据连接类
}
void __fastcall TDBTreeView::SetActive(bool Value)
{
//设置状态是否为活动
if (FActive != Value) //如果指定状态与当前状态一样,则不做处理,直接返回
{//否则
if (Value)//如果指定值为true则
{
if (FDataLink->DataSource == NULL)//如果未指定数据源则抛出一个异常
throw Exception(\"Missing DataSource property.\");
if (FDataLink->DataSource->DataSet == NULL)//否则,如果数据源中未指定数据集,也抛出一个异常
throw Exception(\"Invalid DataSource.\");
if (FParentIDField == \"\")//如果父标识字段为空,抛出一个异常
throw Exception(\"Missing ParentIDField property.\");
if (FPrimaryIDField == \"\")//如果主标识字段为空,抛出一个异常
throw Exception(\"Missing PrimaryIDField property.\");
if (FDisplayField == \"\")//如果显示字段为空抛出一个异常
throw Exception(\"Missing DisplayField property.\");
//补充说明:从以上几个异常您应该不难看出我们这个组件需要的环境:
//必须指定数据源,数据集,节点父标识字段,主标识字段,显示字段
ClearAllNodes();//删除原来所有节点
FillTreeNodes(0, NULL);//填充所有数据到各节点
}