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

DBChart中柱状图问题

尚未結案
SUNSEAVE
一般會員


發表:66
回覆:44
積分:22
註冊:2003-09-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-02-05 10:26:52 IP:220.248.xxx.xxx 未訂閱
如图:我在DBCHAR->SERIES->FORMAT->LABELS指定字段为客户名称,在X:指定金额,在BAR指定数量,在DBCHAR->SERIES->MARKS->STYLE指定LABEL AND PERCENT,但如图显示出来X轴上却是客户名称而不是金额,请问是怎么回事?应该怎么设置才能使X轴为金额
deity
尊榮會員


發表:90
回覆:876
積分:678
註冊:2003-05-09

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-02-05 12:53:31 IP:218.15.xxx.xxx 未訂閱
您好: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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-02-05 15:10:54 IP:220.248.xxx.xxx 未訂閱
不管代码怎么写,柱子上方的LABEL显示什么(如:客户),X轴上就显示什么(客户),相反,如X轴显示金额,那柱子上方的LABEL里也显示金额?到底应该怎么写?
deity
尊榮會員


發表:90
回覆:876
積分:678
註冊:2003-05-09

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-02-05 16:53:33 IP:218.15.xxx.xxx 未訂閱
这是因为SERIES->MARKS->STYLE指定LABEL AND PERCENT 所以你LABEL指定是什么,对应柱子上方也会显示什么!你试着调一下其他的值,如XValue等等就会不一样 行径窄处,留一步与人行
SUNSEAVE
一般會員


發表:66
回覆:44
積分:22
註冊:2003-09-23

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-02-05 17:26:58 IP:220.248.xxx.xxx 未訂閱
我现在要的LABEL AND PERCENT就如图显示的客户和百分比,而想把X轴现在的客户字段改成金额字段的内容,该修改哪里?
SUNSEAVE
一般會員


發表:66
回覆:44
積分:22
註冊:2003-09-23

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-02-09 16:04:45 IP:220.248.xxx.xxx 未訂閱
怎么没人知道的吗?
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-02-09 16:12:41 IP:210.65.xxx.xxx 未訂閱
Hi:    應該是改這裡吧 < src="http://delphi.ktop.com.tw/loadfile.php?TOPICID=13945728&CC=311892"> 不知有沒有誤解你的意思 ---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman
SUNSEAVE
一般會員


發表:66
回覆:44
積分:22
註冊:2003-09-23

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-02-09 16:24:29 IP:220.248.xxx.xxx 未訂閱
改了LABEL,X轴是变了,但黄色标签也变掉了,我要黄色标签里内容不变,X轴变成金额(现在X轴是公司名称)
deity
尊榮會員


發表:90
回覆:876
積分:678
註冊:2003-05-09

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-02-09 17:40:58 IP:218.15.xxx.xxx 未訂閱
您好: SERIES->MARKS->STYLE指定XValue 将会出现您设置的X坐标值。 ======================================================== 我要黄色标签里内容不变,X轴变成金额(现在X轴是公司名称) 如果说您的X轴坐标值为金额则以上面那种方法,但如果说您的X轴用金额做为标签,则又不同的做法 ——行径窄处,留一步与人行——
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#10 引用回覆 回覆 發表時間:2004-02-10 10:53:44 IP:210.65.xxx.xxx 未訂閱
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

發送簡訊給我
#11 引用回覆 回覆 發表時間:2004-02-10 10:54:03 IP:210.65.xxx.xxx 未訂閱
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

發送簡訊給我
#12 引用回覆 回覆 發表時間:2004-02-10 11:02:28 IP:220.248.xxx.xxx 未訂閱
我要的结果是Y轴刻度显示的是数量,X轴刻度显示的是金额,标签显示的是客户和百分比,你的贴图没有把金额放上去,就象我第一张图那样,只要把X州上的客户名称改成金额就行(实际上它已经按金额排序了,只是没把金额的数字表示出来)请教正确的方法?谢谢
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#13 引用回覆 回覆 發表時間:2004-02-10 11:31:10 IP:210.65.xxx.xxx 未訂閱
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

發送簡訊給我
#14 引用回覆 回覆 發表時間:2005-01-18 17:58:16 IP:221.169.xxx.xxx 未訂閱
我的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

發送簡訊給我
#15 引用回覆 回覆 發表時間:2005-01-18 18:01:00 IP:221.169.xxx.xxx 未訂閱
已事隔一年 應該問問題的人已經解出來了吧
系統時間:2024-05-07 11:46:43
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!