vb使用vb6 teechartt5.0如何调用 cursor 等工具

关于 Teechart 5.0版本中如何用 bar chart来显示时间条.(VB.Net) - 慧问-基于产品开发的问答社区
你的浏览器禁用了JavaScript, 请开启后刷新浏览器获得更好的体验!
数据源格式如下:即设备 ID在时间(Time)至时间(NextChangeTime)内是一个状态,而时间是连续的.
所以想做成如下图表:
需要显示成 堆积图:
Y轴: 设备名称(ID)
X轴: 指定日期(比如
08:00~ 08:00 ) 坐标间隔为1h,
数据为 该设备(ID)的 state 变化图,条的长度,起始和结束,由:TIMEPERIOD,TIME,NEXTCHANGETIME
堆积图中条的颜色 由 state 决定
比如: idle 为绿色, wait_eng 为红色,run为黄色...
没有弄过,感觉 bar比较复杂,最主要如何把握 时间的开始和结束?
貌似Teechart控件不直接支持,改动还是比较大,可能需要二次开发
要回复问题请先或
擅长: 10年C++开发,精通Spatial系列产品,精通TeeChart产品开发
更新时间: 2年前
浏览: 1893
关注: 1 人
400-700-10205522人阅读
CBuilder/Examples/Teechart有个例子,你可以
研究一下! 我差不多把Tchart控件的每个设置按钮都研究过! 我的图形是要实时的生成不过数据先取进数据库中,要自己画对数实在是麻烦! 下面是我的一段代码(都是改自那个例子): void __fastcall FormCreate(TObject *Sender); void __fastcall BBtnZoomInClick(TObject *Sender); void __fastcall BBtnZoomOutClick(TObject *Sender); void __fastcall CheckBox3DClick(TObject *Sender); void __fastcall BitBtnSaveClick(TObject *Sender); void __fastcall BBtnPrintClick(TObject *Sender); void __fastcall ADOQuery1AfterOpen(TDataSet *DataSet); void __fastcall BitBtnUnZoomClick(TObject *Sender); void __fastcall SBLeftClick(TObject *Sender); void __fastcall SBRightClick(TObject *Sender); void __fastcall SBUpClick(TObject *Sender); void __fastcall SBDownClick(TObject *Sender); void __fastcall ScrollBar1Change(TObject *Sender); void __fastcall ScrollBar2Change(TObject *Sender); void __fastcall ComBFirstChange(TObject *Sender); void __fastcall ComBLastChange(TObject *Sender); void __fastcall FormClose(TObject *Sender, TCloseAction &Action); void __fastcall Chart1MouseMove(TObject *Sender, TShiftState Shift, int X, int Y); void __fastcall Series1AfterDrawValues(TObject *Sender); void __fastcall Chart1Click(TObject *Sender); private: // User declarations int OldX; int OldY; double tmpX,tmpY; AnsiString SQLstr, QueryW int Low, H TColor CrossHairC TPenStyle CrossHairS int OldFirstPoint, OldLastP void ScrollAxis(TChartAxis* Axis, const double Percent); void HorizScroll(const double Percent); void VertScroll(const double Percent); void ExeSQLStr(int start, int end); void DrawCross(int ax, int ay); bool SetValued = //--------------------------------------------------------------------------- __fastcall TChart1Form::TChart1Form(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void TChart1Form::ScrollAxis(TChartAxis* Axis, const double Percent) { double Amount = -((Axis-&Maximum-Axis-&Minimum)/(100.0/Percent)); Axis-&SetMinMax(Axis-&Minimum-Amount,Axis-&Maximum-Amount); } //--------------------------------------------------------------------------- void TChart1Form::HorizScroll(const double Percent) { ScrollAxis(Chart1-&TopAxis,Percent); ScrollAxis(Chart1-&BottomAxis,Percent); } //--------------------------------------------------------------------------- void TChart1Form::VertScroll(const double Percent) { ScrollAxis(Chart1-&LeftAxis,Percent); ScrollAxis(Chart1-&RightAxis,Percent); } //--------------------------------------------------------------------------- void TChart1Form::ExeSQLStr(int start, int end) { QueryWhere = " WHERE No &= " + IntToStr(start) + " AND No &= " + IntToStr(end); ADOQuery1-&Close(); ADOQuery1-&SQL-&Clear(); //QueryWhere = " WHERE No &= " + IntToStr(start) + " AND No &= " + IntToStr(end); ADOQuery1-&SQL-&Add(SQLstr); ADOQuery1-&SQL-&Add(QueryWhere); ADOQuery1-&Open(); //ADOQuery1-&Parameters-&Items[0]-&Value = //ADOQuery1-&Parameters-&Items[1]-&Value = ADOQuery1-&Open(); } //--------------------------------------------------------------------------- void TChart1Form::DrawCross(int ax, int ay)//画线 { TC tmp = Chart1-&BackC if (tmp == clTeeColor) tmp = clBtnF Chart1-&Canvas-&Pen-&Color = (TColor)(CrossHairColor ^ ColorToRGB(tmp)); Chart1-&Canvas-&Pen-&Style = CrossHairS Chart1-&Canvas-&Pen-&Mode = pmX Chart1-&Canvas-&Pen-&Width = 1; Chart1-&Canvas-&MoveTo(ax,Chart1-&ChartRect.Top-Chart1-&Height3D); Chart1-&Canvas-&LineTo(ax,Chart1-&ChartRect.Bottom-Chart1-&Height3D); Chart1-&Canvas-&MoveTo(Chart1-&ChartRect.Left+Chart1-&Width3D,ay); Chart1-&Canvas-&LineTo(Chart1-&ChartRect.Right+Chart1-&Width3D,ay); /*if ((ax & WhichChart-&ChartRect.Left+WhichChart-&Width3D) && (ay &WhichChart-&ChartRect.Top-WhichChart-&Height3D)) { WhichChart-&Canvas-&MoveTo(WhichChart-&ChartRect.Right+WhichChart-&Width3D,WhichChart-&ChartRect.Bottom-WhichChart-&Height3D); WhichChart-&Canvas-&LineTo(ax,ay); } */ } //--------------------------------------------------------------------------- void __fastcall TChart1Form::FormCreate(TObject *Sender) { Form1-&lgQQ_T-&RecordC Chart1-&AnimatedZoom = Chart1-&AnimatedZoomSteps = 5; ScrollBar1-&Enabled = ScrollBar2-&Enabled = OldX = -1; CrossHairColor = clR CrossHairStyle = psS Chart1-&Cursor = crC AnsiString TableName = Form1-&lgQQ_T-&TableN Low = 1; Hight = Form1-&lgQQ_T-&RecordC SQLstr += " SELECT No AS ' 编号', sqrtT AS ' T 的开方 ', log10QQ AS ' lg[Q∞-Q(t)] '"; SQLstr += " FROM " + TableN QueryWhere = " WHERE No &= " + IntToStr(Low) + " AND No &= " + IntToStr(Hight); ADOQuery1-&Close(); ADOQuery1-&SQL-&Clear(); ADOQuery1-&SQL-&Add(SQLstr); ADOQuery1-&SQL-&Add(QueryWhere); ADOQuery1-&Open(); } //-------------------------------------放大 void __fastcall TChart1Form::BBtnZoomInClick(TObject *Sender) { Chart1-&ZoomPercent(105); } //---------------------------------------------------------缩小 void __fastcall TChart1Form::BBtnZoomOutClick(TObject *Sender) { Chart1-&ZoomPercent(95); } //-------------------------------------------------三维&&&&&&void __fastcall TChart1Form::CheckBox3DClick(TObject *Sender) { Chart1-&View3D = CheckBox3D-&C if (CheckBox3D-&Checked) { ScrollBar1-&Enabled = ScrollBar2-&Enabled = if (dynamic_cast&TPieSeries*&(Chart1-&Series[0])) { ScrollBar1-&Position = Chart1-&View3DOptions-&E } else { ScrollBar1-&Position = Chart1-&View3DOptions-&R } ScrollBar2-&Position = Chart1-&View3DOptions-&E } else { ScrollBar1-&Enabled = ScrollBar2-&Enabled = } } //-----------------------------------------------保存图形到文件 void __fastcall TChart1Form::BitBtnSaveClick(TObject *Sender) { if (SavePictureDialog1-&Execute()) { Chart1-&SaveToMetafile(SavePictureDialog1-&FileName); } } //------------------------------打印 void __fastcall TChart1Form::BBtnPrintClick(TObject *Sender) { int h, Screen-&Cursor = crHourG try { Printer()-&BeginDoc(); try { Printer()-&Canvas-&Font-&Name = "Arial"; Printer()-&Canvas-&Font-&Size = 10; Printer()-&Canvas-&Font-&Style.Clear(); //Printer()-&Canvas-&TextOut(0,0,Edit1-&Text); h = Printer()-&PageH // &-- get page height w = Printer()-&PageW // &-- get page width // And now print the chart component Chart1-&PrintPartial( Rect( 10, // &-- 20% left margin h / 3 , // &-- 33% top margin w - 10, // &-- 20% right margin h - (h / 5))); // &-- 20% bottom margin Printer()-&EndDoc(); // &-- end job and print !! } catch (...) { // just in case an error happens Printer()-&Abort(); Printer()-&EndDoc();
// &-- rethrow the exception !!! } } __finally { Screen-&Cursor = crD // &-- restore cursor } }&&&//--------------------------------------------------------------------------- void __fastcall TChart1Form::ADOQuery1AfterOpen(TDataSet *DataSet) { if (!SetValued) { for (int i = 1; i &= ADOQuery1-&RecordC i++) { ComBFirst-&Items-&Add(IntToStr(i)); ComBLast-&Items-&Add(IntToStr(i)); } ComBFirst-&ItemIndex = 0; OldFirstPoint = ComBFirst-&ItemI ComBLast-&ItemIndex = ADOQuery1-&RecordCount - 1 ; OldLastPoint = ComBLast-&ItemI SetValued = } } //---------------------------重置缩放 void __fastcall TChart1Form::BitBtnUnZoomClick(TObject *Sender) { Chart1-&UndoZoom(); } //---------------------------------左右上下移动 void __fastcall TChart1Form::SBLeftClick(TObject *Sender) { HorizScroll(5); } //--------------------------------------------------------------------------- void __fastcall TChart1Form::SBRightClick(TObject *Sender) { HorizScroll(-5); } //--------------------------------------------------------------------------- void __fastcall TChart1Form::SBUpClick(TObject *Sender) { VertScroll(-5); } //--------------------------------------------------------------------------- void __fastcall TChart1Form::SBDownClick(TObject *Sender) { VertScroll(5); } //----------------------------------旋转三维图 void __fastcall TChart1Form::ScrollBar1Change(TObject *Sender) { if (CheckBox3D-&Checked && ScrollBar1-&Enabled) { Chart1-&View3DOptions-&Orthogonal = } if (dynamic_cast&TPieSeries*&(Chart1-&Series[0])) Chart1-&View3DOptions-&Elevation = ScrollBar1-&P else Chart1-&View3DOptions-&Rotation = ScrollBar1-&P } //---------------------------------------------------- void __fastcall TChart1Form::ScrollBar2Change(TObject *Sender) { if (CheckBox3D-&Checked && ScrollBar2-&Enabled) { Chart1-&View3DOptions-&Orthogonal = Chart1-&View3DOptions-&Elevation = ScrollBar2-&P } } //--------------------------------------------------------------------------- void __fastcall TChart1Form::ComBFirstChange(TObject *Sender) { if (ComBFirst-&ItemIndex & ComBLast-&ItemIndex) { CheckBox3D-&Checked = Chart1-&View3D = Chart1-&UndoZoom(); OldFirstPoint = ComBFirst-&ItemI ExeSQLStr(ComBFirst-&ItemIndex + 1, ComBLast-&ItemIndex + 1); } else { MessageDlg("开始点大于或等于结束点,请重新选择!", mtInformation, TMsgDlgButtons() && mbOK, 0); ComBFirst-&ItemIndex = OldFirstP } } //--------------------------------------------------------------------------- void __fastcall TChart1Form::ComBLastChange(TObject *Sender) { if (ComBFirst-&ItemIndex & ComBLast-&ItemIndex) { CheckBox3D-&Checked = Chart1-&View3D = Chart1-&UndoZoom(); OldLastPoint = ComBLast-&ItemI ExeSQLStr(ComBFirst-&ItemIndex + 1, ComBLast-&ItemIndex + 1); } else { MessageDlg("开始点大于或等于结束点,请重新选择!" , mtInformation, TMsgDlgButtons() && mbOK, 0); ComBLast-&ItemIndex = OldLastP } } //--------------------------------------------------------------------------- void __fastcall TChart1Form::FormClose(TObject *Sender, TCloseAction &Action) { SetValued = } //-------------------------------画线 void __fastcall TChart1Form::Chart1MouseMove(TObject *Sender, TShiftState Shift, int X, int Y) { if (CheckBox1-&Checked) { if (OldX != -1) { DrawCross(OldX,OldY); // draw old crosshair OldX = -1; } if (PtInRect((RECT*)&Chart1-&ChartRect, Point(X-Chart1-&Width3D,Y+Chart1-&Height3D))) { DrawCross(X,Y); // draw crosshair at current position // store old position OldX = X; OldY = Y; // set label text Series1-&GetCursorValues(tmpX,tmpY); // &-- get values under mouse cursor Label7-&Caption = Series1-&GetVertAxis-&LabelValue(tmpX) + " " + Series1-&GetHorizAxis-&LabelValue(tmpY); } } } //--------------------------------------------------------------------------- void __fastcall TChart1Form::Series1AfterDrawValues(TObject *Sender) { OldX = -1; // Reset old mouse position } //------------------------定点 void __fastcall TChart1Form::Chart1Click(TObject *Sender) { if (CheckBox1-&Checked) { CheckBox1-&Checked = EditX1-&Text = FloatToStr(tmpX); EditY1-&Text = FloatToStr(tmpY); } } //---------------------------------------------------------------------------
&&相关文章推荐
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:146551次
积分:1554
积分:1554
排名:千里之外
原创:26篇
转载:12篇
评论:33条
(3)(2)(1)(6)(1)(6)(11)(8)本帖子已过去太久远了,不再提供回复功能。TeeChart5.ocx VB TeeChart柱状图、饼图控件
ViusalBasic编程环境下的TeeChart柱状图、饼图控件,一个好用的控件,不用注册,使用注意:TeeChart5.ocx的版本高。注册说明:1.注册控件,使用命令:如regsvr32 D:\TeeChart\teechart.ocx
  2.注销控件,使用命令:如regsvr32 D:\TeeChart\teechart.ocx /u
运行环境:Windows
相关标签:
软件大小:1.29M
软件属性:共享版 | 简体中文
软件评级:
收录更新: |
相关链接:暂无演示
软件截图:
下载地址:
本类推荐下载
本类最新更新
最新网页特效}

我要回帖

更多关于 vb getcursorpos 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信