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 + 垂直滚动的主要内容,如果未能解决你的问题,请参考以下文章

Techart 事件列表

Techart 平滑线

Techart 传奇风格

带有滚动条的 WPF 内的 VB6 ActiveX 控件

关于iframe的滚动条,如何去掉水平滚动条或垂直滚动条

Android 公告新闻消息资讯之垂直滚动效果