全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2878
推到 Plurk!
推到 Facebook!

關於Tchart X軸顯示一問

答題得分者是:st33chen
windheartalan
一般會員


發表:21
回覆:23
積分:8
註冊:2005-03-24

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-12-10 11:36:05 IP:219.84.xxx.xxx 訂閱
各位先進大家好,
小弟有使用Tchart元件的問題想請教,
假設我要畫線的X軸是時間,若根據元件的屬性設定改成時間,
發現他的區間顯示是自行定義,比方說7:15,8:15,9:15,10:15...等,我找不到可以自訂X軸顯示點的地方,
我是希望x軸可以變成 7.15(起點),8,9,10,10:30(終點),類似這樣的展現,

我用add跟addxy都試過,如果labelstyle設成auto或value,x軸都會是一個遞增的數列,(ex:1,2,3......,100,101);
設成Text或是none,則X軸無任何資料顯示,

我有搜尋過一些文來看,但還沒試出我要的效果,麻煩請各位高手給予指教,謝謝.

st33chen
尊榮會員


發表:15
回覆:591
積分:1201
註冊:2005-09-30

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-12-11 08:20:41 IP:122.116.xxx.xxx 未訂閱
您好,

可否用自己塞值給 series 的方法(這樣就不必指定 這個 series 的 datasource/dataset), for example :

var key0, key9, astr : string;

MySQLQuery1.Open;
// 為了要知道第一筆及最後一筆, 您也可用自己的方法去確定那一筆是第一筆還是最後一筆.
mysqlquery1.first;
key0 := // 第一筆的 key 值
mysqlquery1.last;
key9 := // 最後一筆的 key 值
mysqlquery1.first;
while not MySQLQuery1.eof do begin
if key0= 本筆的 key 值 then astr := '(起點)'
else if key9=本筆的key值 then astr := '(終點)'
else astr := '';

// 改變X軸的顯示
astr := formatdatetime('hh:nn',MySQLQuery1.fieldbyname(X欄位值).value) astr;
// 更複雜的改變也可在上面這一列作變化

dbchart1.Series[0].Add(MySQLQuery1.fieldbyname(Y欄位值).asfloat, astr);
MySQLQuery1.next;
end;
MySQLQuery1.close;
dbchrt1.refresh;

=========================================================
我想到第二種方法, 就是利用 sql.text 中 select 子句挑欄位時改變顯示法, 不是死硬地
select * from tablename 而已
這樣就可以指定 series 的 dataset 或 datasource, 不必用上述程式

===================引 用 windheartalan 文 章===================
各位先進大家好,
小弟有使用Tchart元件的問題想請教,
假設我要畫線的X軸是時間,若根據元件的屬性設定改成時間,
發現他的區間顯示是自行定義,比方說7:15,8:15,9:15,10:15...等,我找不到可以自訂X軸顯示點的地方,
我是希望x軸可以變成 7.15(起點),8,9,10,10:30(終點),類似這樣的展現,

我用add跟addxy都試過,如果labelstyle設成auto或value,x軸都會是一個遞增的數列,(ex:1,2,3......,100,101);
設成Text或是none,則X軸無任何資料顯示,

我有搜尋過一些文來看,但還沒試出我要的效果,麻煩請各位高手給予指教,謝謝.

------
IS IT WHAT IT IS
我是 李慕白 請倒著唸.
又想把老話拿出來說, 請用台語發音 : 專家專家全是ROBOT CAR (滷肉腳啦);
都已接手這麼久了, 績效還是那麼爛, 講話還那麼大聲.
編輯記錄
st33chen 重新編輯於 2008-12-11 08:23:33, 註解 無‧
st33chen 重新編輯於 2008-12-11 08:26:22, 註解 無‧
st33chen 重新編輯於 2008-12-11 08:37:17, 註解 無‧
windheartalan
一般會員


發表:21
回覆:23
積分:8
註冊:2005-03-24

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-12-11 09:42:26 IP:211.75.xxx.xxx 訂閱
謝謝st33chen大大的回覆,不過這可能跟我想問的不太一樣,
我所抓取的數值跟DB沒有關聯,不過還是很感謝大大的回覆.

我再反覆的看了論壇中關於Tchart的舊文後,比較瞭解當中幾篇的意思了,
要實作我想要展現的方式,style需設為Text,
X軸只顯示想展現的點,則使用Chart1GetAxisLabel來指定,

先前試不出來,是因為寫在不對的event上,後來再測試就ok了,

===================引 用 st33chen 文 章===================
您好,

可否用自己塞值給 series 的方法(這樣就不必指定 這個 series 的 datasource/dataset), for example :

var key0, key9, astr : string;

MySQLQuery1.Open;
// 為了要知道第一筆及最後一筆, 您也可用自己的方法去確定那一筆是第一筆還是最後一筆.
mysqlquery1.first;
key0 := // 第一筆的 key 值
mysqlquery1.last;
key9 := // 最後一筆的 key 值
mysqlquery1.first;
while not MySQLQuery1.eof do begin
if key0= 本筆的 key 值 then astr := '(起點)'
else if key9=本筆的key值 then astr := '(終點)'
else astr := '';

// 改變X軸的顯示
astr := formatdatetime('hh:nn',MySQLQuery1.fieldbyname(X欄位值).value) astr;
// 更複雜的改變也可在上面這一列作變化

dbchart1.Series[0].Add(MySQLQuery1.fieldbyname(Y欄位值).asfloat, astr);
MySQLQuery1.next;
end;
MySQLQuery1.close;
dbchrt1.refresh;

=========================================================
我想到第二種方法, 就是利用 sql.text 中 select 子句挑欄位時改變顯示法, 不是死硬地
select * from tablename 而已
這樣就可以指定 series 的 dataset 或 datasource, 不必用上述程式

系統時間:2024-05-17 20:07:55
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!