關於Tchart X軸顯示一問 |
答題得分者是:st33chen
|
windheartalan
一般會員 ![]() ![]() 發表:21 回覆:23 積分:8 註冊:2005-03-24 發送簡訊給我 |
各位先進大家好,
小弟有使用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 發送簡訊給我 |
您好,
可否用自己塞值給 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 (滷肉腳啦); 都已接手這麼久了, 績效還是那麼爛, 講話還那麼大聲. |
windheartalan
一般會員 ![]() ![]() 發表:21 回覆:23 積分:8 註冊:2005-03-24 發送簡訊給我 |
謝謝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, 不必用上述程式 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |