Lazarus中文社区

 找回密码
 立即注册(注册审核可向QQ群索取)

QQ登录

只需一步,快速开始

Lazarus IDE and 组件 下载地址版权申明
查看: 7716|回复: 11

TChart (統計圖表元件) 的使用

[复制链接]

该用户从未签到

发表于 2010-8-26 00:41:56 | 显示全部楼层 |阅读模式
統計圖表元件的應用範圍很廣, 同時也是展示 GUI 風格的最好示範, 整理了一下常用的語法, 都從 CODE 來控制, 不在 IDE 中設定 CONTROL 的屬性; 另外我發覺本元件 BUG 還很多, 有些屬性設了沒反應, 不過聽說台灣有人用 Lazarus 統計圖表元件 寫了複雜且跨平台的股票分析趨勢圖 ( 請見後註二) , 我想運用一些心思, 避惡揚善仍可把 Lazarus 的 統計圖表元件功能發揮到淋漓盡致

--------------------------------------------------------------------------------------------------------------------------------------
  共用部份
uses
  Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
  StdCtrls, TAGraph, TASources, TASeries, TAChartUtils;
var
  Form1: TForm1;
  FArea: TAreaSeries;
  FBar: TBarSeries;
  FLine: TLineSeries;
  FPie: TPieSeries;
implementation
{ TForm1 }
procedure TForm1.FormCreate(Sender: TObject);
begin
end;
procedure TForm1.FormActivate(Sender: TObject);
begin
end;
procedure TForm1.FormClose(Sender: TObject; var CloseAction: TCloseAction);
begin
   if FBar <> nil then FreeAndNil(FBar);
   if FPie <> nil then FreeAndNil(FPie);
   if FArea <> nil then FreeAndNil(FArea);
   if FLine <> nil then FreeAndNil(FLine);
end;

長條圖


procedure TForm1.Button1Click(Sender: TObject);
var ser: TBasicChartSeries;
begin
  if FBar = nil then
  begin
    Chart1.ClearSeries;
    Chart1.ExpandPercentage:=10;  //最左右兩長條圖距牆邊界
    Chart1.Frame.Width:=2;
    FBar := TBarSeries.Create(Chart1);
    FBar.Title := 'bars';
    FBar.SeriesColor := clGreen;
    FBar.Depth:=15; //3D 長條圖
    Chart1.AddSeries(FBar);
    //統計表 TITLE
    Chart1.Title.Text.Clear;
    Chart1.Title.Text.Add('長條圖統計表');
    Chart1.Title.Visible:=true;

    //統計表 LayOut 風格
    FBar.Marks.Style := TSeriesMarksStyle(smsValue); //提示資料內容, uses TAChartUtils
    FBar.ShowInLegend := true;
  end;

  //統計表 資料設定(四筆資料例)
  FBar.AddXY(8, 50.0, 'xlabel_1', clBlue);
  FBar.AddXY(9, 60.0, 'xlabel_2', clRed);
  FBar.AddXY(10, 40.0, 'xlabel_3', clBlue);
  FBar.AddXY(11, 70.0, 'xlabel_4', clRed);
end;

--------------------------------------------------------------------------------------------------------------------------------------
圓餅圖


無法做成立體的
procedure TForm1.Button2Click(Sender: TObject);
begin
  if FPie = nil then
  begin
    Chart1.ClearSeries;
    Chart1.ExpandPercentage:=10;
    Chart1.Frame.Width:=2;
    FPie := TPieSeries.Create(Chart1);
    FPie.Title := 'pie';
    FPie.SeriesColor := clGreen;
    //FPie.Depth:=15; //3D
    Chart1.AddSeries(FPie);
    //統計表 TITLE
    Chart1.Title.Text.Clear;
    Chart1.Title.Text.Add(' 圓餅圖統計表');
    Chart1.Title.Visible:=true;

    //統計表 LayOut 風格
    FPie.Marks.Style := TSeriesMarksStyle(smsValue); //提示資料內容, uses TAChartUtils
    FPie.ShowInLegend := true;
  end;

  FPie.AddPie(10, 'label_1', clTAColor);
  FPie.AddPie(20, 'label_2', clTAColor);
  FPie.AddPie(30, 'label_3', clTAColor);
  FPie.AddPie(40, 'label_4', clTAColor);
end;

--------------------------------------------------------------------------------------------------------------------------------------

■ 後註一
1. 程式下載 (含 source code) digitraveler.homelinux.com/down_load/LazChart.zip


--------------------------------------------------------------------------------------------------------------------------------------
■ 後註二
台灣股票軟件 For Lazarus,為Lazarus程序開發人員打打氣!!

億股亨ASUS EeePC Linux
www.youtube.com/watch?v=18mUwFOVqrk
全球大亨 WinCE
www.youtube.com/watch?gl=TW&hl=zh-TW&v=uZmoJZg5Ppo

原作者 brianwung 提到 :
使用Lazarus 開發近二年,第一個是Linux for ASUS EeePC的股票軟件,是由原本Delphi移值過來的。
第二個是使用Lazarus 新開發的軟件目前WinCE、Win32、Linux沒問題,還在開發階段就是了。
也曾Post到智器Q5、眾一的MID上( Arm Linux ),只差Lnet Socket無法連接,也請教了作者。
目前希望使用Lazarus + SDL 開發Android & Iphone,努力中....
使用Lazarus開發其實比其它的更辛苦,Bug很多、3RD元件太少....
但它是真正能跨平台的,不久的將來一定會發揚光大,
希望這篇文章能拋磚引玉讓更多的人加入Lazaurs的開發,也為目前使用Lazarus的人加油。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册(注册审核可向QQ群索取)

x

评分

参与人数 1威望 +6 收起 理由
猫工 + 6 谢谢分享

查看全部评分

回复

使用道具 举报

该用户从未签到

发表于 2010-8-26 08:09:09 | 显示全部楼层
很重要很常用的组件

另外,楼主,你提到的这两个地址被墙了,需要翻墙才可以看得到

億股亨ASUS EeePC Linux  
www.youtube.com/watch?v=18mUwFOVqrk  
全球大亨 WinCE  
www.youtube.com/watch?gl=TW&hl=zh-TW&v=uZmoJZg5Ppo
回复 支持 反对

使用道具 举报

该用户从未签到

 楼主| 发表于 2010-8-26 19:08:28 | 显示全部楼层
我看到 Lazarus 项目展示 - 中也有該篇
"台灣股票軟件 For Lazarus,為Lazarus程序開發人員打打氣!!"
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2010-8-26 19:51:02 | 显示全部楼层
恩,原来作者过来发的
回复 支持 反对

使用道具 举报

该用户从未签到

 楼主| 发表于 2010-8-26 22:58:32 | 显示全部楼层
把這個圖表控件跟我的 INDY SERVER 做結合
就可以看得出每個時段的 POS 連線總數, 以及同時間最大的連線數量等
如何應用, 就看個人創意


(以下使用 Borland C++ Builder 開發, Porting 到 Lazarus 應不難)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册(注册审核可向QQ群索取)

x
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2010-8-27 09:06:42 | 显示全部楼层
不错
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2010-8-30 14:05:49 | 显示全部楼层
可以试试PlotPanel,相信更加不错。
回复 支持 反对

使用道具 举报

该用户从未签到

 楼主| 发表于 2010-9-11 23:00:58 | 显示全部楼层
台灣股票軟件作者也沒說他是用哪種元件畫的
不過 Delphi 使用的 TeeChar 可以做出會轉動的圓餅圖
聽說也快有 for Lazarus 的版本了

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册(注册审核可向QQ群索取)

x
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2010-11-24 21:47:39 | 显示全部楼层
学习中!希望能有进步!
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2011-10-19 11:43:15 | 显示全部楼层
我用TCHART却发现窗体都根本进不去,一打开就raised exception class exteinal:SIGSEGV
回复 支持 反对

使用道具 举报

*滑块验证:

本版积分规则

QQ|手机版|小黑屋|Lazarus中国|Lazarus中文社区 ( 鄂ICP备16006501号-1 )

GMT+8, 2025-5-2 22:22 , Processed in 0.032403 second(s), 11 queries , Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表