TTreeNode的AddChildObject怎么用法啊(32分)

  • 主题发起人 主题发起人 ynduanlian
  • 开始时间 开始时间
Y

ynduanlian

Unregistered / Unconfirmed
GUEST, unregistred user!
由于AddChildObject的第三个参数必须是指针,所以我用下面的程序增加节点:
ADOQry->SQL->Clear();
ADOQry->SQL->Add("select * from tsm_site ");
ADOQry->Open();
while (!(ADOQry->Eof)){
String* PStr;
PStr=new(String);
*PStr=ADOQry->FieldByName("Site_no")->AsString;
Node=TvUnit->Items->AddChildObject(rtNode,ADOQry->FieldByName("Site_Name")->AsString,PStr);
Node->HasChildren=true;
ADOQry->Next();
}
ADOQry->Close();
问题是,我要怎么要才能取出这个节点中的Site_no项?
void __fastcall TForm1::TvUnitExpanding(TObject *Sender, TTreeNode *Node,
bool &AllowExpansion)
{
String StrSql;
TTreeNode* CNode;
StrSql="select * from tsm_site where up_site_no='"
+ (Node->Data*)+"'";
这里始终无法编译通过?
 
这样是不对的。那个Data就是一个integer值的指针,你的site_no也不就是一个integer吗。这样的话,你在保存的时候,用integer(Data):=ADOQry->FieldByName("Site_no")->Asinteger;
保存,然后再使用时,直接强转就成了别当指针使,当整形使用。
 
感谢楼上的,但我的site_no是一个Varchar2(相当于字符串)型的数据,而且AddChildObject的第三个参数定义必须是指针,我该怎么写呢?
 
转为 pchar,强制转化
 
BCB没有pchar吧。
 
多人接受答案了。
 
后退
顶部