主题:关于课件导航知识点的模块 难点
问题描述:
(1)用CBC6.0做了一个关于课件导航知识点的模块,主要功能是:用treeview控件实现点击后右边的dbmemo实现内容。
(2)新建了acess数据库四个(cai.mdb,其中包括zhang、jie、zhishidian和mulu四个子表。
代码如下:
void __fastcall TForm33::FormCreate(TObject *Sender)
{
TreeView1->Items->Clear();
DataSource1->DataSet=Query1;
Query1->DatabaseName="mydatabase";
Query1->Active=false;
Query1->SQL->Clear();
Query1->SQL->Add("select * from zhang");
Query1->Open();
Query1->First();
while(!Query1->Eof)
{
AnsiString s=Query1->Fields->Fields[1]->AsString;
TreeView1->Items->Add(NULL,s);
Query1->Next();
}
AnsiString sql1="select jie.节,zhang.章 from jie,zhang where jie.章编号=zhang.章编号";
Query1->Active=false;
Query1->SQL->Clear();
Query1->SQL->Add(sql1);
Query1->Active=true;
while(!Query1->Eof)
{
for(int i=0;i<TreeView1->Items->Count;i++)
if(Query1->Fields->Fields[1]->AsString==TreeView1->Items->Item[i]->Text)
{
TTreeNode *pNode1;
pNode1=TreeView1->Items->Item[i];
TreeView1->Items->AddChild(pNode1,Query1->Fields->Fields[0]->Value);
}
Query1->Next();
}
}
以上代码能够正确实现,效果如下:
[img=http://i3.6.cn/cvbnm/d0/5c/3f/6b7a21ca4192396ddb02306fce12f6ef.jpg[/img]
//下面代码无法正确实现,不太懂。。。。。
void __fastcall TForm33::TreeView1Change(TObject *Sender, TTreeNode *Node)
{
AnsiString sql4="select * from xiangmu";
Query1->Active=false;
Query1->SQL->Clear();
Query1->SQL->Add(sql4);
Query1->Active=true;
for(int i=0;i<TreeView1->Items->Count;i++)
{
if(TreeView1->Items->Item[i]->Selected)
{
TLocateOptions Opts;
Opts<<loPartialKey;
if(Query1->Locate("项目",TreeView1->Items->Item[i]->Text,Opts))
DBMemo1->Text= Query1->Fields->Fields[3]->Value;
return;
}
}
}
请高人解释,如何实现右边显示,。。。指点迷津。。。。
[img]http://i3.6.cn/cvbnm/d0/5c/3f/6b7a21ca4192396ddb02306fce12f6ef.jpg[/img]
(1)用CBC6.0做了一个关于课件导航知识点的模块,主要功能是:用treeview控件实现点击后右边的dbmemo实现内容。
(2)新建了acess数据库四个(cai.mdb,其中包括zhang、jie、zhishidian和mulu四个子表。
代码如下:
void __fastcall TForm33::FormCreate(TObject *Sender)
{
TreeView1->Items->Clear();
DataSource1->DataSet=Query1;
Query1->DatabaseName="mydatabase";
Query1->Active=false;
Query1->SQL->Clear();
Query1->SQL->Add("select * from zhang");
Query1->Open();
Query1->First();
while(!Query1->Eof)
{
AnsiString s=Query1->Fields->Fields[1]->AsString;
TreeView1->Items->Add(NULL,s);
Query1->Next();
}
AnsiString sql1="select jie.节,zhang.章 from jie,zhang where jie.章编号=zhang.章编号";
Query1->Active=false;
Query1->SQL->Clear();
Query1->SQL->Add(sql1);
Query1->Active=true;
while(!Query1->Eof)
{
for(int i=0;i<TreeView1->Items->Count;i++)
if(Query1->Fields->Fields[1]->AsString==TreeView1->Items->Item[i]->Text)
{
TTreeNode *pNode1;
pNode1=TreeView1->Items->Item[i];
TreeView1->Items->AddChild(pNode1,Query1->Fields->Fields[0]->Value);
}
Query1->Next();
}
}
以上代码能够正确实现,效果如下:
[img=http://i3.6.cn/cvbnm/d0/5c/3f/6b7a21ca4192396ddb02306fce12f6ef.jpg[/img]
//下面代码无法正确实现,不太懂。。。。。
void __fastcall TForm33::TreeView1Change(TObject *Sender, TTreeNode *Node)
{
AnsiString sql4="select * from xiangmu";
Query1->Active=false;
Query1->SQL->Clear();
Query1->SQL->Add(sql4);
Query1->Active=true;
for(int i=0;i<TreeView1->Items->Count;i++)
{
if(TreeView1->Items->Item[i]->Selected)
{
TLocateOptions Opts;
Opts<<loPartialKey;
if(Query1->Locate("项目",TreeView1->Items->Item[i]->Text,Opts))
DBMemo1->Text= Query1->Fields->Fields[3]->Value;
return;
}
}
}
请高人解释,如何实现右边显示,。。。指点迷津。。。。
[img]http://i3.6.cn/cvbnm/d0/5c/3f/6b7a21ca4192396ddb02306fce12f6ef.jpg[/img]