有30行60列的数据,如何用tchart控件绘出坐标图,一行60个数据为一条线,行号用来标识是具体那一条曲线,要示图上一次只显示一条线,该如何做呢,那位大虾做过,请求指教,很急!谢谢了,本人才刚开始接触delphi许多东西不是很精通!救救我吧
解决方案 »
- 急!!!!数据源问题,提示DBEdit5:field 'kd' not found
- 求一SQL语句(有些难度)
- delphi里什么报表能够直接输出为excel文件..推荐几个好用点的..
- 偶做了一个Jedi Delphi Headers for Directx 8.1开发库的帮助文件。。。
- 怎样在ReportBuilder中动态的创建
- sos:以BDE方式连接sqlserver2000,为何在选择存储过程时提示“存储过程不存在”?
- Delphi中如何实现下面的功能:) 谢谢
- 什么毛病?
- 请问:<delphi 5 开发人员指南>的电子文挡哪里有下载的?
- 早上发了个牢骚,惹来大虾一串,给骂死了。现在出分送大家,请问在2000下编程(delphi)与98下编有什么区别?程序能在98上用吗?数据库的。?
- tchart绘图
- 音视频网络传输
procedure TForm1.Button6Click(Sender: TObject);
var
i,s: integer;
begin
//例子
for i:= 1 to 60 do
Series5.Add(random(100),'ad',Series5.SeriesColor);
//你的情况
s:= 1;
while not adoquery1.Eof do
begin
for i:= 0 to adoquery1.FieldCount -1 do
(findcomponent('Series'+inttostr(s)) as TBarSeries).Add(adoquery1.Fields[i].AsFloat,adoquery1.Fields[i].FieldName,Series5.SeriesColor);
adoquery1.Next;
inc(s);
end;
end;
adoquery1.first;
Series1.Clear;
for i:= 0 to adoquery1.FieldCount -1 do
Series1.Add(adoquery1.Fields[i].AsFloat,adoquery1.Fields[i].FieldName,Series5.SeriesColor);//要下一条就
Series1.Clear;
adoquery1.next; //或你用其它感知控件调哪条记录,如DBNavigator,就会跳到那一行,再执行下面的就行了
for i:= 0 to adoquery1.FieldCount -1 do
Series1.Add(adoquery1.Fields[i].AsFloat,adoquery1.Fields[i].FieldName,Series5.SeriesColor);
//改回颜色//这是第一条
adoquery1.first;
Series1.Clear;
for i:= 0 to adoquery1.FieldCount -1 do
Series1.Add(adoquery1.Fields[i].AsFloat,adoquery1.Fields[i].FieldName,Series1.SeriesColor); //要下一条就
Series1.Clear;
adoquery1.next; //或你用其它感知控件调哪条记录,如DBNavigator,就会跳到那一行,再执行下面的就行了
for i:= 0 to adoquery1.FieldCount -1 do
Series1.Add(adoquery1.Fields[i].AsFloat,adoquery1.Fields[i].FieldName,Series1.SeriesColor);
procedure TForm1.Button2Click(Sender: TObject);
var series1:tlineseries;num:array[1..30,1..60]of double;
i,j:integer;
k,m:integer;
beginseries1:=tlineseries.Create(chart1);series2:=tlineseries.create(chart1);series1.Marks.Visible:=true;//设置标签值可见
series1.Marks.Style:=smsvalue;for I := 1 to 30 do
begin
for j := 1 to 60 do
begin
num[i,j]:=random(100000);
end;
end;
for k := 1 to 60 do
case strtoint(edit1.Text) of
1:series1.AddXY(k,num[1,k],inttostr(k),clteecolor);
2:series2.AddXY(k,num[2,k],inttostr(k),clteecolor);
3:series1.AddXY(k,num[3,k],inttostr(k),clteecolor);
4:series1.AddXY(k,num[4,k],inttostr(k),clteecolor);
5:series1.AddXY(k,num[5,k],inttostr(k),clteecolor);
6:series1.AddXY(k,num[6,k],inttostr(k),clteecolor);
7:series1.AddXY(k,num[7,k],inttostr(k),clteecolor);
8:series1.AddXY(k,num[8,k],inttostr(k),clteecolor);
9:series1.AddXY(k,num[9,k],inttostr(k),clteecolor);
10:series1.AddXY(k,num[10,k],inttostr(k),clteecolor);
11:series1.AddXY(k,num[11,k],inttostr(k),clteecolor);
12:series1.AddXY(k,num[12,k],inttostr(k),clteecolor);
13:series1.AddXY(k,num[13,k],inttostr(k),clteecolor);
14:series1.AddXY(k,num[14,k],inttostr(k),clteecolor);
15:series1.AddXY(k,num[15,k],inttostr(k),clteecolor);
16:series1.AddXY(k,num[16,k],inttostr(k),clteecolor);
17:series1.AddXY(k,num[17,k],inttostr(k),clteecolor);
18:series1.AddXY(k,num[18,k],inttostr(k),clteecolor);
19:series1.AddXY(k,num[19,k],inttostr(k),clteecolor);
20:series1.AddXY(k,num[20,k],inttostr(k),clteecolor);
21:series1.AddXY(k,num[21,k],inttostr(k),clteecolor);
22:series1.AddXY(k,num[22,k],inttostr(k),clteecolor);
23:series1.AddXY(k,num[23,k],inttostr(k),clteecolor);
24:series1.AddXY(k,num[24,k],inttostr(k),clteecolor);
25:series1.AddXY(k,num[25,k],inttostr(k),clteecolor);
26:series1.AddXY(k,num[26,k],inttostr(k),clteecolor);
27:series1.AddXY(k,num[27,k],inttostr(k),clteecolor);
28:series1.AddXY(k,num[28,k],inttostr(k),clteecolor);
29:series1.AddXY(k,num[29,k],inttostr(k),clteecolor);
30:series1.AddXY(k,num[30,k],inttostr(k),clteecolor);
end; chart1.AddSeries(series1);end;我的代码这样,请问这应该如何改呢?
series1.add(num[strtoint(edit1.Text),k],inttstr(k),clteecolor);
for k := 1 to 60 do
series1.add(num[strtoint(edit1.Text),k],inttstr(k),clteecolor);
num:array[1..30,1..60]of double;
i,j:integer;
k,m:integer;
beginseries1:=tlineseries.Create(chart1);//series2:=tlineseries.create(chart1);series1.Marks.Visible:=true;//设置标签值可见
series1.Marks.Style:=smsvalue;for I := 1 to 30 do
begin
for j := 1 to 60 do
begin
num[i,j]:=random(100000);
end;
end;series1.clear;
for k := 1 to 60 do
series1.add(num[strtoint(edit1.Text),k],inttstr(k),clteecolor);end;
var series1:tlineseries;num:array[1..30,1..60]of double;
i,j:integer;
k,m:integer;
begin
series1:=tlineseries.Create(chart1);
series2:=tlineseries.create(chart1);series1.Marks.Visible:=true;//设置标签值可见
series1.Marks.Style:=smsvalue;Series1.Clear;
Series2.Clear;
for I := 1 to 30 do
begin
for j := 1 to 60 do
begin
num[i,j]:=random(100000);
series1.AddXY(i,j,floattostr(num[strtoint(edit1.text),j]),clteecolor);
series1.visible:=false;
if i=strtoint(edit1.text) then
begin
series2.AddXY(i,j,floattostr(num[strtoint(edit1.text),j]),clteecolor);
series2.visible:=true;
end;
end;
end;end;你再看看是否合你的要求
都叫你直接在控件里建一个series1.不动态建不就行了
var
num:array[1..30,1..60]of double;
i,j:integer;
k,m:integer;
beginseries1.Marks.Visible:=true;//设置标签值可见
series1.Marks.Style:=smsvalue;Series1.Clear;for k := 1 to 60 do
series1.add(num[strtoint(edit1.Text),k],inttstr(k),clteecolor);
end;end;
或许还有其它什么办法可以实现吧
var
series1:tlineseries;
num:array[1..30,1..60]of double;
i,j:integer;
k,m:integer;
begin
series1:=tlineseries.Create(chart1);series1.Marks.Visible:=true;//设置标签值可见
series1.Marks.Style:=smsvalue;Series1.Clear;
for i := 1 to 30 do
begin
for j := 1 to 60 do
begin
num[i,j]:=random(100000);
if i=strtoint(edit1.text) then
begin
series1.Add(j,floattostr(num[strtoint(edit1.text),j]),clteecolor);
end;
end;
end;end;
再试试
中的j全部换成i再试试,行和列都被你搞糊涂了
procedure TForm1.Button7Click(Sender: TObject);
var
num:array[1..30,1..60]of double;
i,j:integer;
k,m:integer;
beginfor I := 1 to 30 do //你原搬我的代码肯定没东西啦(前提在控件那里建series1), 你要加上左边的赋值才行吖! 这是最后一次回复
begin
for j := 1 to 60 do
begin
num[i,j]:=random(100000);
end;
end;Series1.Clear;for k := 1 to 60 do
series1.add(num[strtoint(edit1.text),k],inttostr(k),clteecolor);end;
var
num:array[1..30,1..60]of double;
i,j:integer;
k,m:integer;
begin
series1.Marks.Visible:=true;//设置标签值可见
series1.Marks.Style:=smsvalue;Series1.Clear;
for i := 1 to 30 do
begin
for j := 1 to 60 do
begin
num[i,j]:=random(100000);
if i=strtoint(edit1.text) then
begin
series1.Addxy(j,num[i,j],'',clteecolor);
end;
end;
end;
end;
再试一次,我已经测试了,看看是否是你要的结果