打开APP
未登录
开通VIP,畅享免费电子书等14项超值服
开通VIP
首页
好书
留言交流
下载APP
联系客服
Delphi 中 Chart的 應用示例
佚名2016
>《编程设计》
2016.08.13
关注
[delphi]
view plain
copy
unit UnitChart;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, TeEngine, Series, ExtCtrls, TeeProcs, Chart, StdCtrls;
type
TFormChart = class(TForm)
StatusBar1: TStatusBar;
cht1: TChart;
LineSeiresOne: TLineSeries;
LineSeriesTwo: TLineSeries;
btn1: TButton;
tmr1: TTimer;
procedure FormCreate(Sender: TObject);
procedure cht1GetAxisLabel(Sender: TChartAxis; Series: TChartSeries;
ValueIndex: Integer; var LabelText: String);
procedure btn1Click(Sender: TObject);
procedure tmr1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
FormChart: TFormChart;
implementation
{$R *.dfm}
var
XTemp : Integer;
YTemp1, YTemp2 : Double;
ICount : Integer;
StrTime : string;
const
MAX_X_VALUE =270;
MAX_Y_VALUE =3000;
ONE_INITAL_VALUE = 3000;
TWO_INITAL_VALUE = 2000;
// 時間初始賦值
StartHour = 9;
// 值振幅
VALUE_AMPLITUDE = 0.005;
procedure TFormChart.FormCreate(Sender: TObject);
var
i : Integer;
begin
tmr1.Enabled := False;
BorderIcons := BorderIcons - [biMaximize]; // 去掉最大化按鈕
BorderStyle := bsSingle; // 邊框格式
WindowState := wsMaximized; // 開始最大化
cht1.BottomAxis.Maximum := MAX_X_VALUE;
cht1.LeftAxis.Maximum := MAX_Y_VALUE;
cht1.Title.Text.Clear;
cht1.Title.Text.Add('模擬股市K線圖');
Randomize;
YTemp1 := ONE_INITAL_VALUE;
for i := 0 to MAX_X_VALUE - 1 do
begin
YTemp1 := YTemp1 * (1 - VALUE_AMPLITUDE + 2 * VALUE_AMPLITUDE * Random(10)/10);
LineSeiresOne.Add( YTemp1, '', clGreen);
end;
YTemp2 := TWO_INITAL_VALUE;
for i := 0 to MAX_X_VALUE - 1 do
begin
YTemp2 := YTemp2 * (1 - VALUE_AMPLITUDE + 2 * VALUE_AMPLITUDE * Random(10)/10);
LineSeriesTwo.Add( YTemp2, '', clRed);
end;
end;
procedure TFormChart.cht1GetAxisLabel(Sender: TChartAxis;
Series: TChartSeries; ValueIndex: Integer; var LabelText: String);
var
Hour , Minute: Integer;
IntTime : Integer;
begin
if (Sender = Sender.ParentChart.BottomAxis) then
begin
// 時間處理
IntTime := StrToInt(LabelText) ;
Hour := StartHour + IntTime div 60;
Minute := IntTime mod 60;
StrTime := FormatFloat('00', Hour) + FormatFloat(':00', Minute);
// 研究 GetAxisLabel 的觸發時機和參數含義
// 觸發時機: 標識出X軸刻度時 , 當是 BottomAxis 時 , ValueIndex=-1;
// 觸發次數:
// mmo1.Lines.add( 'LabelText ='+ LabelText + ', ValueIndex =' + IntToStr(ValueIndex));
case (IntTime mod 30) of
0: LabelText := StrTime;
else
LabelText := '';
end;
end;
end;
procedure TFormChart.btn1Click(Sender: TObject);
begin
XTemp := 0;
YTemp1 := 2000;
YTemp2 := 2000;
LineSeiresOne.Clear;
LineSeriesTwo.Clear;
tmr1.Interval := 100;
tmr1.Enabled := True;
end;
procedure TFormChart.tmr1Timer(Sender: TObject);
var
i : Integer;
begin
Randomize;
LineSeiresOne.AddXY(XTemp, YTemp1, '', clGreen);
LineSeriesTwo.AddXY(XTemp, YTemp2, '', clRed);
Inc(XTemp);
YTemp1 := YTemp1 * (1 - VALUE_AMPLITUDE + 2 * VALUE_AMPLITUDE * Random(10)/10);
YTemp2 := YTemp2 * (1 - VALUE_AMPLITUDE + 2 * VALUE_AMPLITUDE * Random(10)/10);
if XTemp > MAX_X_VALUE then tmr1.Enabled := False; // 畫完後則停止 Timer
end;
end.
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报
。
打开APP,阅读全文并永久保存
查看更多类似文章
猜你喜欢
类似文章
WPF 使用定时器
delphi7编程技巧与实例精解之图形图像(修正重绘变形)
vb.net入门——ProgressBar 控件的使用
调用自定义的 el-tree-select (elementUI)
java之关系运算符
TDBChart 用法
更多类似文章 >>
生活服务
热点新闻
留言交流
回顶部
联系我们
分享
收藏
点击这里,查看已保存的文章
导长图
关注
一键复制
下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!
联系客服
微信登录中...
请勿关闭此页面
先别划走!
送你5元优惠券,购买VIP限时立减!
5
元
优惠券
优惠券还有
10:00
过期
马上使用
×