vc2008使用teechart绘图总结

来源:互联网 发布:game3799软件手机 编辑:程序博客网 时间:2024/05/22 14:14

vc2008使用teechart绘图总结 

      这几天做数据库的项目,要读取access内的数据绘制曲线 ,没有自己实现绘制图表的类,上网多次搜索,发现了一个叫做teechart的好东东,但是网上介绍的都是在vc6.0的平台下使用,最后经过一番摸索,终于搞定了,现将具体步骤详述:

      1.先到迅雷上下个TeeChart Pro ActiveX 8.0.RAR,网址如下:http://www.componentcn.com/download/Steema/TeeChart8ActiveX.rar

然后解压、安装,内有说明文件key.txt,license和password都能找到,安装后在安装路径下有个TeeChart8.ocx,这是个很重要的文件,使用和AciveX控件一样,也要注册,而且teechart不是微软自带的,一般的机器上肯定没有注册过,所以完成程序开发后,将软件给客户时,必须将TeeChart8.ocx复制到给客户的机器上的C:/WINDOWS/system32目录下,运行regsvr32  TeeChart8.ocx进行注册,程序才能正常使用。

      2.在自己vc2008的项目中,在解决方案上右键->添加类->AciveX中的MFC类,如果你的机器上已经注册了teechart控件,这个时侯,在“从AciveX控件添加类向导”里选择从注册表添加类,就能在“ ”一栏的下拉列表中找到TeeChart Pro Activex control v8<1.0>,选中它,然后用ITChart接口生成CTCChart类。呵呵,做完这些就可以真正开始利用teechart控件了。

      3.在资源视图中选中要添加控件的对话框,然后在工具箱中右键->选择项->com组件->TeeChart Pro Activex control v8,点击确定即可,这个时候就可以吧控件拖到对话框里面了,对着控件右键->添加变量m_Chart。

      4.在对话框上拖放一个button控件,双击它,编辑响应事件的函数

void Finddlg::OnBnClickedButton1()
{
 // TODO: 在此添加控件通知处理程序代码
 m_Chart.ClearChart();//清空teechart图表
 m_Chart.RemoveAllSeries();//删除上一次添加的曲线
 m_Chart.AddSeries(0);//新增曲线
 CSeries Ser=m_Chart.Series(0);
 
 Ser.SetVerticalAxis(0);//设置竖轴
 Ser.SetHorizontalAxis(0);//设置横轴
 Ser.SetColor(RGB(255,200,122));//设置曲线颜色
 Ser.GetXValues().SetDateTime(1);//将横轴数据设为时间

 CString sqlstr=_T("select [交易号] from [交易记录] where [日期] between #"+date1+"# and #"+date2+"#");   

  try
  {
  mydb.pSet.CreateInstance("ADODB.Recordset");
  mydb.pSet->CursorLocation=adUseClient;
  mydb.pSet->Open((_variant_t)sqlstr,mydb.con.GetInterfacePtr(),adOpenKeyset,adLockOptimistic ,adCmdUnknown);  
  int shi=0;
 while(mydb.pSet!=NULL && !mydb.pSet->adoEOF)
  {
        // 添加数据点

  Ser.SetTitle("交易记录变化曲线");//设置曲线标题
  CString dt=mydb.pSet->GetCollect("日期");
  COleVariant dv=mydb.pSet->GetCollect(_bstr_t("交易号"));
  if(dt!=test&&dv.vt!=VT_NULL)
  {
        double dTime=COleDateTime(mydb.pSet->GetCollect("日期"));          
     double dvalue=mydb.pSet->GetCollect(_bstr_t("交易号"));

        Ser0.AddXY(dTime,dvalue,NULL,RGB(255,0,0));//根据时间和交易号添加点
  }
        mydb.pSet->MoveNext();
  shi++;
        }
  shi=0;
  }
   catch (_com_error& e)
    {
    AfxMessageBox(e.Description());
    }

}
编译,然后运行程序,读取access之后,可爱的曲线就出现了。