series的addx如何顯示日期型態 |
缺席
|
BOSS
中階會員 發表:70 回覆:79 積分:64 註冊:2006-11-01 發送簡訊給我 |
|
hahalin
版主 發表:295 回覆:1698 積分:823 註冊:2002-04-14 發送簡訊給我 |
|
hahalin
版主 發表:295 回覆:1698 積分:823 註冊:2002-04-14 發送簡訊給我 |
|
hahalin
版主 發表:295 回覆:1698 積分:823 註冊:2002-04-14 發送簡訊給我 |
|
BOSS
中階會員 發表:70 回覆:79 積分:64 註冊:2006-11-01 發送簡訊給我 |
版主您好
再請教
引言: Series1.add(10,'2004/01/2'); Series1.add(50,'2004/01/13'); Series2.add(0,'2004/01/2'); Series2.add(20,'2004/01/4'); Series2.add(40,'2004/01/13');這樣再X軸會出現2個2004/01/13 我想問的是addx()第一個參數是Const AYValue: Double 如果填入日期如下 addx(2004/1/13,'2004/1/13',clred)這樣編譯會錯誤 請指教 |
hahalin
版主 發表:295 回覆:1698 積分:823 註冊:2002-04-14 發送簡訊給我 |
|
yachanga
資深會員 發表:24 回覆:335 積分:296 註冊:2003-09-27 發送簡訊給我 |
引言: Series1.add(10,'2004/01/2'); Series1.add(50,'2004/01/13'); Series2.add(0,'2004/01/2'); Series2.add(20,'2004/01/4'); Series2.add(40,'2004/01/13'); 這樣再X軸會出現2個2004/01/13 我想問的是addx()第一個參數是Const AYValue: Double 如果填入日期如下 addx(2004/1/13,'2004/1/13',clred)這樣編譯會錯誤 請指教Hi BOSS您好: 由於您提到X軸顯示日期, 小弟猜想您應該是想要繪製直方圖或是線形圖吧 |
BOSS
中階會員 發表:70 回覆:79 積分:64 註冊:2006-11-01 發送簡訊給我 |
yachanga你好
我的資料表格如下 編號 日期(dt) 報酬率(frate)
STKF02 2004-01-02 9.01186710
STKF02 2004-02-13 0.00000000
STKF02 004-04-13 0.00000000
stb 2004-01-07 0.00000000
stb 2004-02-13 0.00000000
stb 2004-04-13 0.00000000
STB001 2004-03-08 0.00000000
STB001 2004-04-13 0.00000000 以下是程式碼 var
i,cnt:Integer;
Series:TLineSeries;
list:TStringList;
spfno:string;
begin
cnt:=0;
list:=TStringList.Create;
try
with aAdo do
begin
while not Eof do
begin
if spfno <> FieldByName('pfno').AsString then
begin
spfno:= FieldByName('pfno').AsString;
cnt:=cnt 1;
list.Add(FieldByName('pfno').AsString);
end;
Next;
end;
end;
list.Sorted := True;
aAdo.First;
for i :=0 to cnt-1 do
begin
Series := TLineSeries.Create(dbChart1);
Series.ParentChart := aChart;
Series.Title:=list.Strings[i];
Series.XLabelsSource := 'dt';
Series.YValues.ValueSource:='frate';
Series.Marks.Visible:=true;
Series.Marks.Style:=smsLabelValue;
Ado:=TADOQuery.Create(nil);
Ado.Name:='ADO' IntToStr(i 1);
Ado.Recordset:=aAdo.Recordset;
ado.Open;
Ado.Filtered:=False;
Ado.Filter:='pfno = ' QuotedStr(Trim(list.Strings[i]));
Ado.Filtered:=true;
Series.DataSource := Ado;
aChart.AddSeries(Series);
end;
aChart.Title.Text.Clear;
aChart.Title.Text.Add(aTitle);
finally
FreeAndNil(list);
end; 畫出來的圖形不對且x軸無法顯示每個日期請各位前輩指點
|
yachanga
資深會員 發表:24 回覆:335 積分:296 註冊:2003-09-27 發送簡訊給我 |
Hi BOSS:
您要的結果是像這樣嗎??
編號 日期(dt) 報酬率(frate) STKF02 2004-02-13 2.11 STKF02 2004-01-02 9.0118671 STKF02 2004-04-13 0 stb 2004-01-07 0.54554 stb 2004-02-13 3.888 stb 2004-04-13 0 STB001 2004-03-08 0.54 STB001 2004-04-13 0.8675您想要x軸標示日期..而且間距相同, 我這邊提供一個小技巧.... 把您想要展現的x軸日期手動塞進去...即可 procedure TForm1.Button1Click(Sender: TObject); var i:Integer; Series:TLineSeries; list:TStringList; spfno:string; begindt,enddt:TdateTime; begin spfno:=''; ADOQuery1.Close; ADOQuery1.Open; list:=TStringlist.Create; while not ADOQuery1.Eof do begin spfno:=ADOQuery1.fieldByName('spno').AsString; if list.IndexOf(spfno)<0 then list.Add(spfno); ADOQuery1.Next; end; for i:=0 to list.Count-1 do begin begindt:=StrtoDate('2004/01/01'); enddt:=StrtoDate('2004/04/30'); spfno:=list.Strings[i]; Series := TLineSeries.Create(nil); Series.ParentChart := Chart1; Series.Title:=spfno; while begindt~悠遊法國號~ |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |