DBChart中柱状图问题 |
尚未結案
|
SUNSEAVE
一般會員 發表:66 回覆:44 積分:22 註冊:2003-09-23 發送簡訊給我 |
|
deity
尊榮會員 發表:90 回覆:876 積分:678 註冊:2003-05-09 發送簡訊給我 |
您好:Lables组合框中的选择将作为series的横轴标签的字段,在X组合框中的选择将作为series横坐标值,Y组合框中的选择将作为series纵坐标值
所以要达到你所要的效果试试这样行不行:
series1——》XlablesSource设置为‘金额’相当于Lables组合框
series1——》YValues——》ValueSource设置为‘客户名称’相当于Y组合框
试试看下!
=====================================================================
也可以参考Mickey前辈的高作,里面有很详细的写法:
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=26173 發表人 - deity 於 2004/02/05 13:09:16
|
SUNSEAVE
一般會員 發表:66 回覆:44 積分:22 註冊:2003-09-23 發送簡訊給我 |
|
deity
尊榮會員 發表:90 回覆:876 積分:678 註冊:2003-05-09 發送簡訊給我 |
|
SUNSEAVE
一般會員 發表:66 回覆:44 積分:22 註冊:2003-09-23 發送簡訊給我 |
|
SUNSEAVE
一般會員 發表:66 回覆:44 積分:22 註冊:2003-09-23 發送簡訊給我 |
|
Fishman
尊榮會員 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
|
SUNSEAVE
一般會員 發表:66 回覆:44 積分:22 註冊:2003-09-23 發送簡訊給我 |
|
deity
尊榮會員 發表:90 回覆:876 積分:678 註冊:2003-05-09 發送簡訊給我 |
|
Fishman
尊榮會員 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
Hi: SUNSEAVE,
我猜想你要的結果應該如下圖:
亦即 DBCHAR->SERIES->MARKS->STYLE 為 Value and Percent,不過 Style 又沒有該選項 以下提供一個方法你可以試試看
1.先將 DBCHAR->SERIES->MARKS->STYLE 設為 Percent(可有可無)
2.Label 設為『客戶』(必須)
3.在該 Series 的 OnGetMarkText 事件上加入以下程式碼(必須)
procedure TForm1.Series1GetMarkText(Sender: TChartSeries; ValueIndex: Integer; var MarkText: String); begin // MarkText := FormatFloat('#,###',TChartSeries(Sender).YValue[ValueIndex]) + ' ' + MarkText; // 若 1. 有設定,可以這樣寫,否則需用下面的寫法 MarkText := FormatFloat('#,###',TChartSeries(Sender).YValue[ValueIndex]) + ' ' + TChartSeries(Sender).MarkPercent(ValueIndex,False); end;---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman |
Fishman
尊榮會員 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
Hi: SUNSEAVE,
我猜想你要的結果應該如下圖:
亦即 DBCHAR->SERIES->MARKS->STYLE 為 Value and Percent,不過 Style 又沒有該選項 以下提供一個方法你可以試試看
1.先將 DBCHAR->SERIES->MARKS->STYLE 設為 Percent(可有可無)
2.Label 設為『客戶』(必須)
3.在該 Series 的 OnGetMarkText 事件上加入以下程式碼(必須)
procedure TForm1.Series1GetMarkText(Sender: TChartSeries; ValueIndex: Integer; var MarkText: String); begin // MarkText := FormatFloat('#,###',TChartSeries(Sender).YValue[ValueIndex]) + ' ' + MarkText; // 若 1. 有設定,可以這樣寫,否則需用下面的寫法 MarkText := FormatFloat('#,###',TChartSeries(Sender).YValue[ValueIndex]) + ' ' + TChartSeries(Sender).MarkPercent(ValueIndex,False); end;---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman |
SUNSEAVE
一般會員 發表:66 回覆:44 積分:22 註冊:2003-09-23 發送簡訊給我 |
|
Fishman
尊榮會員 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
Hi: OnGetMarkText 事件程式碼修改如下
procedure TForm1.Series4GetMarkText(Sender: TChartSeries; ValueIndex: Integer; var MarkText: String); begin (TChartSeries(Sender).DataSource AS TClientDataSet).First; (TChartSeries(Sender).DataSource AS TClientDataSet).MoveBy(ValueIndex); MarkText := FormatFloat('#,###',(TChartSeries(Sender).DataSource AS TClientDataSet).FieldByName('Amount').AsFloat) ' ' TChartSeries(Sender).MarkPercent(ValueIndex,False); end;
------
Fishman |
seedbcc
高階會員 發表:232 回覆:272 積分:105 註冊:2003-12-10 發送簡訊給我 |
我的CODE讓你參考參考
第一段 是針對柱形上面的marktext
第二段 是針對label的value做改變
procedure TFrm_PhPareto.BarSeries1_ParetoGetMarkText(Sender: TChartSeries; ValueIndex: Integer; var MarkText: String); begin inherited; mt.First; mt.MoveBy(ValueIndex); MarkText := FormatFloat('###.##%',mt.fieldbyname('DefPercent').asvariant); end; procedure TFrm_PhPareto.DbChart_ParetoGetAxisLabel(Sender: TChartAxis; Series: TChartSeries; ValueIndex: Integer; var LabelText: String); begin inherited; IF Sender = TChart(TChartAxis(Sender).ParentChart).BottomAxis then begin mt.First; mt.MoveBy(ValueIndex); LabelText:=mt.fieldbyname('RHNAME').AsString; END; end; |
seedbcc
高階會員 發表:232 回覆:272 積分:105 註冊:2003-12-10 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |