C++ Builder XE TChart动态添加N个线条TLineSeries变化

news/2024/5/22 10:49:45/文章来源:https://blog.csdn.net/lzksword/article/details/127282939

       

//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
        LARGE_INTEGER litmp;
        LONGLONG QPart1,QPart2;
        double dfMinus, dfFreq, dfTim;
        QueryPerformanceFrequency(&litmp);
        dfFreq = (double)litmp.QuadPart;// 获得计数器的时钟频率
        QueryPerformanceCounter(&litmp);
        QPart1 = litmp.QuadPart;// 获得初始值
      //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
        //--------------------------------------------------------------
                RzProgressStatus1->Percent=0;    //进度完成
       //-------------------------------------------------------------
if(Memo3->Lines->Count<2)
  return;
//模块扫描
AnsiString MKstr=ComboBox1->Text;
int MKkind=ComboBox1->ItemIndex;
 //清空所有图表显示
  TControl *Control;
 for(int i=ScrollBox1->ControlCount;i>0;i--)
   {
    Control=ScrollBox1->Controls[i-1];
    delete Control;
    Control=NULL;
   }
   //验证N期彩果
   int Cnum=RzSpinEdit1->EditText.ToInt();
   //验证N个模块
   //Form2->RzListView3->Refresh();
   int MKnum=Form2->RzListView3->Items->Count;
   if(MKnum==0)
   {
      Form2->RzListView3->Clear();
      TStringList*   Strings   =   new   TStringList;
      TStringList*   TJs   =   new   TStringList;
      TJs->Delimiter='#';
      Strings->LoadFromFile(ExtractFilePath(ParamStr(0))+"ml.tj");
      TListItem *pItem=0;
      for(int   n=0;   n<Strings->Count;   n++)
      {
              TJs->DelimitedText=Strings->Strings[n];
              //

             pItem=Form2->RzListView3->Items->Add();
             pItem->Caption=TJs->Strings[1];
             pItem->SubItems->Add(TJs->Strings[2]);
             pItem->SubItems->Add(TJs->Strings[3]);
             pItem->SubItems->Add(TJs->Strings[4]);
             if(TJs->Strings[0]=="Y")
                pItem->Checked=true;
             else
                pItem->Checked=false;
      }
      //
      delete   Strings;
      delete TJs;
     MKnum=Form2->RzListView3->Items->Count;
   }
       //--------------------------------------------------------------
                RzProgressStatus1->Percent=10;    //进度完成
       //-------------------------------------------------------------
   //显示N个模块数
   int XSnum=0;
   for(int Ci=0;Ci<MKnum;Ci++)
   {
       if( Form2->RzListView3->Items->Item[Ci]->Checked)
       {
           XSnum++;
       }

   }
   if(XSnum==0)
     return;
//定义显示N个模块历期的走势
TRzEdit **Etxt=new TRzEdit *[XSnum ];
//定义显示N个图表的走势
TChart **serRL=new TChart *[XSnum ];
        //------------------------
        //装入彩果
        //------------------------
        TStringList *Strings=new TStringList;
        Strings->AddStrings(Form1->Memo3->Lines);    //缓冲载入到字符链表
        int CGsum=Strings->Count;             //彩果期数
        int CGsumcz=0;
        //查找验证到某一期
        for (int i = 0; i < CGsum; i++)//为什么要等于CGsum,主要是你要预测下一期
        {
           if(Strings->Strings[i].Length()) //如果不为空
            {
                if(!Strings->Strings[i].Pos("="))
                  CGsumcz++;   // 验证到此一期为止
                else
                  break;//验证到止为止
            }
        }
        //
               //--------------------------------------------------------------
                RzProgressStatus1->Percent=20;    //进度完成
       //-------------------------------------------------------------
//定义图表线条
TLineSeries*  Series1;
int XSi=0;
int FZtz[10];
for(int Ci=MKnum-1;Ci>=0;Ci--)
 {
  if(Form2->RzListView3->Items->Item[Ci]->Checked)  //模块要显示
  {
    //分组特征码
    AnsiString TZM= Form2->RzListView3->Items->Item[Ci]->SubItems->Strings[2];
    memset(FZtz,0,sizeof(int)*10);
    int FZ=0;
    for(int Ti=1;Ti<=TZM.Length();Ti++)
    {
      if(TZM.SubString(Ti,1)==",")
        FZ++;
       else
       {
         FZtz[TZM.SubString(Ti,1).ToInt() ]=FZ;
       }
    }

    //创建图表显示
    serRL[XSi]=new TChart(this);
    serRL[XSi]->Parent=ScrollBox1;
    serRL[XSi]->Align=alTop;
    serRL[XSi]->Height=145; //高度
    serRL[XSi]->View3D=false;     //关掉3D显示

   //    serRL[XSi]->Title->Caption="模块[ "+AnsiString(Ci)+" ] -"+Form2->RzListView3->Items->Item[Ci]->SubItems->Strings[0];   //定义标题
    serRL[XSi]->Margins->Top=0;
    serRL[XSi]->Margins->Bottom=0;
    serRL[XSi]->Margins->Right=0;
    serRL[XSi]->Margins->Left=0;
    serRL[XSi]->MarginLeft=0;
    serRL[XSi]->MarginBottom=0;
    serRL[XSi]->MarginRight=2;
    serRL[XSi]->MarginTop=0;
    serRL[XSi]->Legend->Visible=false; //关掉图表右边的显示标签框
    //serRL[XSi]->Legend->Items->Clear();
    //serRL[XSi]->Legend->Items->Add()
    serRL[XSi]->LeftAxis->Increment=1; //左坐标的标尺单元长度
    serRL[XSi]->MarginTop=10;
   //创建走势线
//   for(int i=Cnum-1;i>=0;i--)
//   {
        Series1 = new TLineSeries(serRL[XSi]);
        Series1->ParentChart=serRL[XSi];
        serRL[XSi]->AddSeries(Series1);
        serRL[XSi]->SeriesList->Items[0]->Clear();
        serRL[XSi]->SeriesList->Items[0]->Active=true;
        serRL[XSi]->SeriesList->Items[0]->Visible=true;
        serRL[XSi]->SeriesList->Items[0]->Pen->Visible=true;
        serRL[XSi]->SeriesList->Items[0]->Pen->Width=1;
        serRL[XSi]->SeriesList->Items[0]->Pen->Style=psSolid;
        serRL[XSi]->SeriesList->Items[0]->Pen->Color= 6711039;
        serRL[XSi]->SeriesList->Items[0]->Pen->SmallSpace=1;
        serRL[XSi]->SeriesList->Items[0]->Pen->Show();
        serRL[XSi]->SeriesList->Items[0]->SeriesColor=clRed;
        //------------------------------------------------------------------
        int NZi=0;
        int SZtmp;
        AnsiString TZstr=" 模块[ "+AnsiString(Ci+1)+" ]  -  "+MKstr+"  特征码:["+TZM+"]  "+Form2->RzListView3->Items->Item[Ci]->SubItems->Strings[0]+"  特征串: ";
        for (int Gi = CGsumcz-Cnum; Gi < CGsumcz; Gi++)//为什么要等于CGsum,主要是你要预测下一期
        {
             if(!Strings->Strings[Gi].Pos("="))
             {
                if(Strings->Strings[Gi].Length()) //如果不为空
                {
                   SZtmp=RightStr(Strings->Strings[Gi],3).ToInt();
                   if(MKkind==0)  //扫描个位
                   {
                    serRL[XSi]->SeriesList->Items[0]->AddXY(NZi,FZtz[SZtmp%10],FZtz[SZtmp%10],clRed);
                    TZstr+=FZtz[SZtmp%10];
                   }
                   else if(MKkind==1)  //扫描十位
                   {
                    serRL[XSi]->SeriesList->Items[0]->AddXY(NZi,FZtz[SZtmp%100/10],FZtz[SZtmp%100/10],clRed);
                    TZstr+=FZtz[SZtmp%100/10];
                   }
                   else if(MKkind==2)  //扫描百位
                   {
                    serRL[XSi]->SeriesList->Items[0]->AddXY(NZi,FZtz[SZtmp/100],FZtz[SZtmp/100],clRed);
                    TZstr+=FZtz[SZtmp/100];
                   }
                   else if(MKkind==3)  //和尾扫描
                   {
                    serRL[XSi]->SeriesList->Items[0]->AddXY(NZi,FZtz[(SZtmp/100+SZtmp/10%10+SZtmp%10)%10],FZtz[(SZtmp/100+SZtmp/10%10+SZtmp%10)%10],clRed);
                    TZstr+=FZtz[(SZtmp/100+SZtmp/10%10+SZtmp%10)%10];
                   }

                    NZi++;

                }
             }
             else
                break;
        }
        //显示特征串
    //创建特征值显示
    Etxt[XSi]=new TRzEdit(this);
    Etxt[XSi]->Parent=ScrollBox1;

    Etxt[XSi]->Align=alTop;
    Etxt[XSi]->Height=20;
        Etxt[XSi]->Text=TZstr;
    Etxt[XSi]->Font->Color=clRed;
         //serRL[i]->SeriesList->Items[0]->Style=TLineSeries;//TBarSeries;
//        int Sx=0;
//            for(int Si=Memo3->Lines->Count-1;Si>Memo3->Lines->Count-Cnum ;Si--)
//            {
//               if( !Memo3->Lines->Strings[Si].Pos("="))
//               {
//                serRL[XSi]->SeriesList->Items[0]->AddXY(Sx,RightStr(Memo3->Lines->Strings[Si],1).ToInt(),RightStr(Memo3->Lines->Strings[Si],1).ToInt(),clRed);
//                Sx++;
//               }
//                }
        //------------------------------------------------------------------
        serRL[XSi]->SeriesList->Items[0]->ShowInLegend=false;  //关掉显示标签
        serRL[XSi]->SeriesList->Items[0]->Marks->Visible=true;
        serRL[XSi]->SeriesList->Items[0]->Marks->Symbol->Visible=false;

        //
        serRL[XSi]->SeriesList->Items[0]->Marks->Arrow->Style=psCircle ;
        serRL[XSi]->SeriesList->Items[0]->Marks->ArrowLength=4;
        serRL[XSi]->SeriesList->Items[0]->Marks->Arrow->Color=clRed;
        serRL[XSi]->SeriesList->Items[0]->Marks->Symbol->Transparent=true;
        serRL[XSi]->SeriesList->Items[0]->ShowInEditor=false;
        Series1->Marks->Visible=true;
        //serRL[i]->Legend->CheckBoxes=false;
   //}
   XSi++;//显示模块加1

  }
       //--------------------------------------------------------------
                RzProgressStatus1->Percent=20+(MKnum-Ci)*80/MKnum;    //进度完成
       //-------------------------------------------------------------

 }
      //-----------------------------------------------------------
       //时钟计算
          QueryPerformanceCounter(&litmp);
          QPart2 = litmp.QuadPart;//获得中止值
          dfMinus = (double)(QPart2-QPart1);
          dfTim = dfMinus / dfFreq;// 获得对应的时间值,单位为秒

       //--------------------------------------------------------------
                RzProgressStatus1->Percent=100;    //进度完成
       //-------------------------------------------------------------
        RzStatusPane1->Caption =
                    "彩果更新完成 ";
        RzStatusPane2->Caption =
                    "耗时:"+FloatToStrF(dfTim,ffFixed,4,3)+" 秒 ";
        // 清除临时表
           delete Strings;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_22392.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

STM32:外部中断控制旋转编码器并计次

1.主函数(main.c)代码部分&#xff1a; #include "stm32f10x.h" // Device header #include "Delay.h" #include "OLED.h" #include "Encoder.h" int16_t Num; int main(void) { OLED_Init(); OLED_Sh…

第十四届蓝桥杯备赛模板题——蓝桥部队 (带权并查集)

目录1.蓝桥部队1. 问题描述2.输入格式3.输入样例4.样例答案5.原题连接2.解题思路3.Ac_code1.蓝桥部队 1. 问题描述 小明是蓝桥部队的长官&#xff0c;他的班上有 NNN 名军人和 111 名军师。 这天&#xff0c;NNN 名军人在操场上站成一排&#xff0c;起初编号为 iii 的军人站…

JPA EntityManager 获取关联对象

今天尝试了几种方式&#xff0c;来获取关联对象。 关联对象&#xff0c;使用的 OneToMany(fetchFetchType.EAGER) 下面给一下总结&#xff1a; 一 Example 毫无疑问&#xff0c;很有信心&#xff0c;Example可以关联到对象。 事实也是这样。 但是Example好像只有and关系…

公众号网课题库系统-轻易获取查题接口

公众号网课题库系统-轻易获取查题接口 本平台优点&#xff1a; 多题库查题、独立后台、响应速度快、全网平台可查、功能最全&#xff01; 1.想要给自己的公众号获得查题接口&#xff0c;只需要两步&#xff01; 2.题库&#xff1a; 题库&#xff1a;题库后台&#xff08;点击…

Mindquantum实现变分量子奇异值分解

论文题目&#xff1a;Variational Quantum Singular Value Deposition(VQSVD) 项目介绍 复现过程 案例1&#xff1a;分解随机生成的8*8复数矩阵 先引入需要使用的包&#xff1a; import os os.environ[OMP_NUM_THREADS] 1​ import mindspore as ms from mindquantum impo…

Transformer解读之:Transformer 中的 Attention 机制

encoder 的 attention 场景&#xff1a;现在要训练的内容是 I love my dog -> 我喜欢我的狗那么在 encoder 端的输入是&#xff1a; I love my dog&#xff1b;假设经过 embedding 和位置编码后&#xff0c;I love my dog 这句话肯定已经变成了一个向量&#xff0c;但是在这…

一文彻底搞清Linux中块设备驱动的深层次原理和编写方法

【摘要】本文主要讲述了在Linux环境下的块设备驱动的常见数据结构和内核接口&#xff0c;并以一个实际例子讲述了块设备驱动的编写方法。 1.前提知识 一个块驱动提供对块存储设备&#xff08;比如 SD 卡、EMMC、NAND Flash、Nor Flash、SPI Flash、机械硬盘、固态硬盘等&…

Bed Bath Beyond EDI 856提前发货通知

自从1971年创业以来&#xff0c;Bed Bath&Beyond&#xff08;以下简称为BBB&#xff09;一直在为用户提供货真价实的卫浴用品&#xff0c;床上用品等家用商品。Bed Bath&Beyond 致力于成为一个勇于承担责任的公司团体&#xff0c;在市场建立起良好的信誉&#xff0c;提…

JavaSE 案例练习——精算师 double精度丢失解决思路

案例介绍 具体的内容是这样的&#xff1a; 编写一个程序&#xff0c;提示输入一个代表总钱数的双精度值&#xff0c;然后确定每种纸币和硬币需要的最少数量以达到输入的总钱数。 假设人民币种类如下&#xff1a;佰圆纸钞&#xff0c;伍拾圆纸钞&#xff0c;贰拾圆纸钞&#…

Asible最佳实践-进阶版-RHCA447 定义分组与变量

Asible最佳实践-进阶版-RHCA447 -------定义角组变量/主机变量/变量文件6.1 所有受管节点设置sudo免密[root@libin libin]# vim /etc/sudoers.d/devops libin ALL=(ALL) NOPASSWD:ALL [root@libin sudoers.d]# scp devops 192.168.124.134:`pwd` 6.2 自定义ansible目录[root@l…

学习使用jquery控制select下拉选项的字体样式

学习使用jquery控制select下拉选项的字体样式实现代码实现代码 <script src"../jquery-2.1.4.min.js"></script><style>div#container {padding: 30px;font-family: verdana, lucida;}a {color: #777;display: block;background-color: #ccc;widt…

向开发者开放免费注册!“远眺捷码”提供一站式软件快速开发平台

近日&#xff0c;远眺科技旗下具有自主知识产权的国产一站式软件快速开发平台——“远眺捷码”宣布正式开放免费注册&#xff0c;有各类软件应用开发等需求开发者、软件开发企业&#xff0c;可访问捷码官网https://www.gemcoder.com/ 操作步骤&#xff1a; Step1、打开捷码PC端…

客户成功 | 数据解码技能提升,Smartbi助力长沙烟草找到“新路子”

让数据会“说话”能“干活”&#xff0c;为客户挖掘出更深层的数据价值&#xff0c;是Smartbi一直以来助力企业数字化转型的目标和方向。大数据时代&#xff0c;每个科学的决策离不开数据的支撑&#xff0c;数字化精益管理是各行业提升自身运营管理的必然选择。数字化转型的成色…

实验1c语言开发环境使用和数据类型,运算符和表达式

1.试验任务1 (1)在垂直方向上打印两个字符小人的源代码,以及运行结果截图\\在垂直方向上打印两个字符小人#include<stdio.h> int main() {printf(" o\n");printf("<H>\n");printf("I I\n");printf("\n\n");printf(&quo…

【PMP学习笔记】第10章 项目沟通管理

【PMP学习笔记】第10章 项目沟通管理 什么是项目沟通管理? 让正确的信息在正确的时间通过正确的方式传递给正确的人,达到正确的效果。一、规划沟通管理规划沟通管理是基于每个相关方或相关方群体的信息需求、可用的组织资产,以及具体项目的需求,为项目沟通活动制定恰当的方…

基于SSM的网上餐厅管理系统

目 录 摘 要 I Abstract II 第一章 绪论 1 1.1研究背景及意义 1 1.2研究现状 1 1.3章节安排 2 第二章 相关技术说明 3 2.1 JSP(Java Server Page)简介 3 2.2 Spring框架简介 3 2.3 Spring MVC框架简介 5 2.4 MyBatis 框架简介 5 2.4 MySql数据库简介 6 2.5 Eclipse简介 6 2.6 T…

顺序表的实现

函数接口定义:顺序表描述的结构体为 typedef struct {ElemType *elem; //存储空间的基地址int length; //当前长度 } SqList;需要实现函数的接口分别为:int GetElem(SqList L, int i, ElemType &e) 顺序表的取值 判断i值是否合理,若不合理,返回0;[i-1]单元存储第i个数…

服务器开发26:Linux中线程和进程的联系与区别(游戏后端请和游戏思考10一起食用)

文章目录一、线程创建方法&#xff08;以redis举例&#xff09;1&#xff09;创建线程函数讲解2&#xff09;线程创建的标记二、内核中对线程的数据结构表示1&#xff09;task_struct具体定义2&#xff09;线程与进程的区别三、进程、线程创建过程及异同1&#xff09;进程创建(…

Oracle Form Builder 安装时遇到的问题记录

Oracle Form Builder 安装时遇到的问题记录 问题1&#xff1a;Checking operating system version: must be 5.0, 5.1 or 5.2. Actual 6.1 Checking operating system version: must be 5.0, 5.1 or 5.2. Actual 6.1 Failed <<<< 解决方法&#xff1a; 修改x:\ds…

JAVAEE多线程synchronized 优化过程

文章目录synchronized 优化过程一、锁升级/锁膨胀1. 偏向锁2. 轻量级锁3. 重量级锁二、锁消除三、锁粗化总结synchronized 优化过程 对于synchronized 1.既是乐观锁,也是悲观锁 2.既是轻量级锁,也是重量级锁 3.乐观锁的部分是基于自旋锁实现的,悲观锁的部分是基于挂起等待锁实…