線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2026
推到 Plurk!
推到 Facebook!

請教關於DBChart的使用問題

答題得分者是:P.D.
eriato
一般會員


發表:2
回覆:1
積分:0
註冊:2009-05-28

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-05-30 02:05:36 IP:58.49.xxx.xxx 訂閱
當座標軸中lable值過長時,就不會顯示出來,如圖所示,X軸的第二項沒有顯示,第四項由於被第三項占了一部分位置也沒與顯示出來,我想要它可以顯示出來,不知道該如何設置DBChart的屬性呢?

我通過修改Chart>Legend>Position和Series>Format>Bar Width這兩者的值,確實可以讓我表中的X軸數值都顯示出來,但這並不是我最想要的解決辦法,我想知道是否有什麼方法讓座標值自動換行從而適應當前列的寬度。我查看了下DBChart的屬性,似乎是沒有看到有關於自動換行的設置,不知道是沒有還是我沒有看到。在網上有搜索過,也沒有找到我需要的答案。所以還請各位熟悉的朋友可以幫忙解答下,謝謝!
附加檔案:4a2023f05c030_1.jpg
編輯記錄
eriato 重新編輯於 2009-05-30 02:46:48, 註解 無‧
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-06-06 23:25:16 IP:61.67.xxx.xxx 未訂閱
一般 caption 要換行都是這樣做

string1 #13 string2 #13 string3

試試這樣的方式
eriato
一般會員


發表:2
回覆:1
積分:0
註冊:2009-05-28

發送簡訊給我
#3 引用回覆 回覆 發表時間:2009-06-07 11:27:30 IP:59.172.xxx.xxx 訂閱
我試了一下,似乎沒有效果。不過還是謝謝您的答復!
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#4 引用回覆 回覆 發表時間:2009-06-08 22:23:35 IP:61.67.xxx.xxx 未訂閱
參考以下程式看有沒有幫助, 這是我在圖片畫完後, 自己加上三組lable 如下圖的做法

[code delphi]
procedure TForm_Rep591.DBChart1AfterDraw(Sender: TObject);
Procedure DrawVerticalLine(ax,ay: Integer);
begin
with DBChart1, Canvas do begin
Pen.Color:= clGray;
Pen.Style:= psSolid;
Pen.Mode := pmBlack; //pmXor;
Pen.Width:= 1;
MoveTo(ax,ChartRect.Top - Height3D);
LineTo(ax,ChartRect.Bottom - Height3D);
Font.Size:= 7;
Font.Name:= '細明體';
Font.Color:= clBlack;
if rgDM.Itemindex=0 then
TextOut(ax-90,ay 4,SysUt.DayFormat(DM_Rep591.IBQ_D8001FORMDATE.AsString,
'/',U_VarDef.cdatedigit))
else
TextOut(ax-90,ay 4,copy(SysUt.DayFormat(DM_Rep591.IBQ_D8001FORMDATE.AsString,
'/',U_VarDef.cdatedigit),1,U_VarDef.cdatedigit 3));
if cbxP1.Checked then begin
Font.Color:= clNavy;
TextOut(ax-26,ay 4,'成本:' DM_Rep591.IBQ_D8001GCOST.AsString);
end;
if cbxP2.Checked then begin
Font.Color:= $00004000;
TextOut(ax-26,ay 18,'銷售:' DM_Rep591.IBQ_D8001GPRICE.AsString);
end;
if cbxP3.Checked then begin
Font.Color:= clMaroon;
TextOut(ax-26,ay 32,'毛利:' DM_Rep591.IBQ_D8001GPROFIT.AsString);
end;
end;
end;
var TmpX: Integer;
begin
with DM_Rep591 do
try
TmpX:= Series1.CalcXPosValue(Series1.XValue[IBQ_D8001.RecNo-1]);
if PtInRect(DBChart1.ChartRect,
Point(TmpX-DBChart1.Width3D,Round(DBChart1.Height/2)
DBChart1.Height3D))
then DrawVerticalLine(TmpX,0);
except
end;
end;
[/code]


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