Techart + activeX + 垂直滚动
Posted
技术标签:
【中文标题】Techart + activeX + 垂直滚动【英文标题】:Teechart + activeX + Vertical Scroll 【发布时间】:2013-04-17 08:47:04 【问题描述】:我正在尝试将滚动工具添加到我的图表中,但无法做到这一点。下面是代码
m_chart1.ClearChart();
m_chart1.GetPage().SetMaxPointsPerPage(5);
wchar_t tmp[30]=0;
wchar_t t[10] = L"T%d";
int i = 0;
m_chart1.AddSeries(1);
wsprintf(tmp,t,i);
m_chart1.Series(i).SetColor(RGB(rand(),rand(),rand()));
m_chart1.Series(i).SetLegendTitle(tmp);
m_chart1.Series(i).FillSampleValues(100);
m_chart1.Series(i).GetMarks().SetVisible(false);
m_chartNavigation.SetChartLink(m_chart1.GetChartLink());
m_chart1.GetAspect().SetView3D(false);
m_chart1.GetTools().Add(22);
_variant_t vardata;
VariantInit (&vardata);
vardata.vt = VT_BYREF;
vardata.byref = &m_chart1.GetAxis().GetBottom();
m_chart1.GetTools().GetItems(0).GetAsAxisScroll().SetAxis(vardata);
m_chart1.GetTools().GetItems(0).SetActive(true);
代码编译正确,但箭头未显示在 Axis 上。 谢谢 阿克谢
【问题讨论】:
嗨 Yeray,感谢您的回复,但实际上我已经尝试了 AxisArrow(2) AxisScroll(22) 对我没有任何帮助。请检查vardata的内容我存储在varient中的数据是否正确。谢谢阿克谢 【参考方案1】:代码编译正确,但箭头不显示在轴上
我不确定您的代码中的 m_chartNavigation
是什么。是ChartPageNavigator
吗?
请注意,此组件添加了一个独立于图表的导航栏。
如果要显示一些箭头来滚动图表,则应使用 AxisArrow 工具,而不是 AxisScroll 工具,即 2,而不是 22。
m_chart1.GetTools().Add(2);
m_chart1.GetTools().GetItems(0).GetAsAxisArrow().SetAxis(vardata);
【讨论】:
嗨 Yeray,感谢您的回复,但实际上我已经尝试了 AxisArrow(2) AxisScroll(22) 对我没有任何帮助。请检查 vardata 的内容,我存储在 varient 中的数据是否正确。谢谢阿克谢【参考方案2】:我已经修改了您的代码,因此 AxisArrow 工具以正确的方式工作,并允许您根据需要滚动轴。因此,请查看下一个代码并考虑指示,因为您可以毫无问题地使用该代码。
注意事项:
1.- 检查文件夹中是否有项目时的所有类。如果您没有所有类,则必须在安装 TeeChartActivex 的文件夹中从文件夹 Uitilities\New VC Classes 中复制这些类。该文件夹类似于下一个 C:......\TeeChart Pro v2012 ActiveX Control\Utilities\New VC Classes
2.- 在代码中使用下一个包含:
#include "stdafx.h"
#include "XXXXX.h"
#include "XXXXX.h"
#include "series.h"
#include "axes.h"
#include "axis.h"
#include "TeeChartDefines.h"
#include "aspect.h"
#include "zoom.h"
#include "scroll.h"
#include "environment.h"
#include "marks.h"
#include "page.h"
#include "lineseries.h"
#include "axisarrowtool.h"
#include "toollist.h"
#include "tools.h"
#include "comutil.h"
#include "afxdisp.h"
3.- 代码已在项目的 OnInitDialog() 上生成。
代码:
你能告诉我们下一个代码是否对你有用吗?
.
.
.
// TODO: Add extra initialization here
m_tChart1.ClearChart();
long index = m_tChart1.AddSeries(scLine);
m_tChart1.GetAspect().SetView3D(false);
m_tChart1.GetPage().SetMaxPointsPerPage(5);
m_tChart1.Series(index).SetColor(RGB(rand(),rand(),rand()));
m_tChart1.Series(index).SetLegendTitle("Hello");
m_tChart1.Series(index).FillSampleValues(100);
m_tChart1.Series(index).GetMarks().SetVisible(false);
long index1 = m_tChart1.GetTools().Add(tcAxisArrow);
//SetAxisArrow Tool to do scroll.
m_tChart1.GetTools().GetItems(index1).GetAsAxisArrow().SetAxis(COleVariant(short(atBottom)));
// TODO: Add extra initialization here
return TRUE; // return TRUE unless you set the focus to a control
我希望会有所帮助。
谢谢, 桑德拉。
【讨论】:
以上是关于Techart + activeX + 垂直滚动的主要内容,如果未能解决你的问题,请参考以下文章