Метки серии не видны для указанного значения индекса в teechart2017

В VS2013,teechart2017.ocx,

  1. Я делаю проект MFC на основе диалога.
  2. Я добавляю teechart в диалоге, меняю свойство mark для отображения значения, устанавливаю перетаскивание на 1, видимый, а не автопозицию.
  3. Я использовал событие getserismark для отображения только указанных меток.
  4. Я добавляю 20000 очков в серии 0,
  5. если я использовал teechart8, он отображается правильно, но для teechart2017, отметки исчезли для всех.

    void CMFCApplication2Dlg::OnGetSeriesMarkTchart1(long SeriesIndex, long ValueIndex, BSTR* MarkText)
       {
           // TODO:  
           if (B_Filter)
            {
            if ((ValueIndex == 1250) || (ValueIndex == 137)|| (ValueIndex == 10000))
            {
    
            }
            else
            {
            m_Chart1.Series(SeriesIndex).GetMarks().GetItem(ValueIndex).SetVisible(false);
            }
       }
    

введите описание изображения здесь

1 ответ

Я воспроизвел проблему ( # 1986) и добавил CalcVisiblePoints свойство для следующего технического обслуживания.

В версии 2016.0.0.1 была введена оптимизация, вызывающая эту проблему. Вы должны установить TChart1.Series(0).CalcVisiblePoints = False пропустить эту оптимизацию и заставить ее работать как в v8.

С новым v2018.0.2.9 вы можете сделать это:

#include "CAspect.h"
#include "CLegend.h"
#include "CSeries.h"
#include "TeeChartDefines.h"
#include "CMarks.h"
#include "CMarksItem.h"

//...

    CAspect a = mChart1.get_Aspect();
    a.put_View3D(false);

    CLegend l = mChart1.get_Legend();
    l.put_Visible(false);

    mChart1.AddSeries(scFastLine);
    CSeries s = mChart1.Series(0);
    s.FillSampleValues(20000);
    CMarks sm = s.get_Marks();
    sm.put_Visible(true);

    for (int i = 0; i < s.get_Count(); i++) {
        CMarksItem smi = sm.get_Item(i);
        smi.put_Visible((i == 1250) || (i == 137) || (i == 10000));
    }

    s.put_CalcVisiblePoints(false);
Другие вопросы по тегам