注册 登录
编程论坛 C++ Builder

C++ Builder中TChart Pro使用的问题,用过的来探讨一下

ssfshan 发布于 2008-06-19 23:32, 4678 次点击
只有本站会员才能查看附件,请 登录

如图,在BCB6中使用TChart Pro 7组件设计数据分析显示程序。Pro版本可以设置多个轴,如图左边坐标轴,两种颜色分别对应两个子定义坐标轴,用来把Chart显示区域分成两部分,一部分用来显示模拟变量,另一类用来显示数字变量。左边列表框为TChartListBox,可用来控制显示哪一组数据和对每一个Series的显示样式进行设置。
现面临的问题是,我想把上面两条线(使用蓝色坐标轴的自定义垂直坐标轴)和下面的四条线(使用棕红色的自定义垂直坐标轴)分开两部分,分别在PageContorl的两个标签中显示控制,但试了很多方法都没有办法实现,还是如图的样子,两部分的曲线控制均显示在一个List中。
有关TChart的帮助实在是太少了,特别是例子更难找。不知道有没有熟悉TChart Pro的高手?望不吝赐教。
PS:我曾试图使用TSeriesGroup来分组两种曲线,以期和两个标签中的List挂接,但不知道如何才能实现,写出来的代码均无法成功编译。或许思路上就错了吧?
4 回复
#2
ssfshan2008-06-20 00:52
通过查找Demo中的例子已解决,还是使用SeriesGroup在List中分组曲线,另不能指定TChartListBox的Chart属性。
#3
ssfshan2008-06-20 00:53
好像使用BCB的人不多啊,经常有疑问得不到解决,还有就是代码示例太少,呵呵,希望高手多整理一些例子出来分享一下,谢谢!
从某些方面来说,BCB确实有其独到的优势,应该得到更多人的学习和支持。
#4
Knocker2008-06-25 12:21
分享一下你经验吧,只有更多的人愿意分享自己的经验,用BCB的人才会更多
#5
ssfshan2008-06-25 18:57
首先定义两个组(分别对应原贴中数字两个模拟量):
TSeriesGroup *GroupAnalog;
TSeriesGroup *GroupDigital;

对两个组的Series分开显示设置:
void __fastcall TMainForm::Init(TObject *Sender)
{
     int i;
     GroupAnalog = ChartMain->SeriesList->AddGroup("Analog Group");
     for(i = 0; i < 72; i++)
     {
         GroupAnalog->Add(ChartMain->Series[i]);
     }
     GroupDigital = ChartMain->SeriesList->AddGroup("Digital Group");
     for(i = 72; i < 160; i++)
     {
         GroupDigital->Add(ChartMain->Series[i]);
     }

     // Show all series in first group
     //ChartMain->SeriesList->Groups->Items[0]->Show();

     // Hide all series in second group
     //ChartMain->SeriesList->Groups->Items[1]->Hide();

     ChartListBoxAnalog->SeriesGroup = GroupAnalog;
     ChartListBoxDigital->SeriesGroup = GroupDigital;
     // Tell the Chart ListBox to show the Group...

     //ChartListBoxAnalog->SeriesGroup->Show();
     //ChartListBoxDigital->SeriesGroup->Show();
}
通过更改ChartListBox的SeriesGroup属性来设置需要显示的内容。

PS:我使用的Chart Pro,而非BCB自带的Chart组件。
还有就是我设置了纵轴分割,即在上下两组曲线中间画一个线,以在界面上区分,但一直显示不出来,有点奇怪。
1