treeview 节点的添加。

asdmusic8 2003-10-27 07:27:54
typedef struct _mycust_treeview_notedata
{
AnsiString id; //项目的ID号
AnsiString name; //项目名称
AnsiString par_id; //父项目的ID号
}mycust_treeview_notedata;

我定义了个结构,

TreeView1->Items->BeginUpdate();
AnsiString data="";
while(!DataModule1->ExcueQuery->Eof)
{
mycust_treeview_notedata temp;
temp.id=DataModule1->ExcueQuery->FieldByName("ID")->AsString;
temp.name=DataModule1->ExcueQuery->FieldByName("NAME")->AsString;
temp.par_id="";
TreeView1->Items->Add(NULL,(AnsiString)temp);
DataModule1->ExcueQuery->Next();
}
TreeView1->Items->EndUpdate();

但是编译没有通过。该怎么写,使它的节点显示的是name, 并且怎么读出来还原成结构。
...全文
26 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
BoyMgl 2003-10-27
  • 打赏
  • 举报
回复
TTreeNode * tn = new TTreeNode(TreeView1->Items);
后面就是属性了
TreeView1->Items->Add(tn,"Test");
asdmusic8 2003-10-27
  • 打赏
  • 举报
回复
void __fastcall TYHZCU31Form::TreeView1MouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
TTreeNode *pNode=TreeView1->GetNodeAt(X,Y);
if(pNode==NULL) return;

if(TreeView1->GetHitTestInfoAt(X,Y).Contains(htOnItem))
{
AnsiString tempid;
tempid=((mycust_treeview_notedata *)(pNode->Data))->id;
if(!pNode->HasChildren)//插入子节点
{

}
}
}
但是 tempid 等于null
asdmusic8 2003-10-27
  • 打赏
  • 举报
回复
那我应该把事件写在那个中 , 当我点上面我加的节点,然后取出 id ,在根据ID去查询数据库,加入子节点。
踏岸寻柳 2003-10-27
  • 打赏
  • 举报
回复
这样取出数据:
TTreeNode *pTN = TreeView1->Selected;
ShowMessage( ((mycust_treeview_notedata)pTN->Data)->id ); //id
ShowMessage( ((mycust_treeview_notedata)pTN->Data)->name );//name
踏岸寻柳 2003-10-27
  • 打赏
  • 举报
回复
修改局部代码如下即可:
mycust_treeview_notedata temp;
temp.id = DataModule1->ExcueQuery->FieldByName("ID")->AsString;
temp.name = DataModule1->ExcueQuery->FieldByName("NAME")->AsString;
temp.par_id = "";
TreeView1->Items->AddObject( NULL, temp.name, temp );
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
DataModule1->ExcueQuery->Next();

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧