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之后,可爱的曲线就出现了。