我就是利用DBChart来生成一个柱状图,数据是调用数据集Query中的数据,具体该如何实现,我自己不太熟悉哪个控件,程序如下:
procedure TFrm_tzztj.Button1Click(Sender: TObject);
var i:integer;
begin
if ComboBox2.Text='水平位移X' then
begin
with DBChart1.Title.Text do
begin
clear;
add('水平位移X特征值分布');
end;
DBChart1.Repaint;
DataModule1.Query2.SQL.Clear;
DataModule1.Query2.SQL.Add('select DT,DISPX,PN from data_spwycz where PN=(:PN) and DT between (:DT1) and (:DT2)');
DataModule1.Query2.Params[0].AsString:=combobox1.Text;
DataModule1.Query2.Params[1].AsDateTime:=DateTimePicker1.DateTime;
DataModule1.query2.Params[2].AsDateTime:=DateTimePicker2.DateTime;
DataModule1.Query2.Open;
DataModule1.DataSource2.DataSet:=DataModule1.Query2;
DataModule1.DataSource1.DataSet:=DataModule1.Query2;
for i:=DataModule1.query2.RecordCount-1 downto 1 do
begin
DBChart1.Series[1].DataSource:=DataModule1.DataSource3;
DBChart1.Series[1].XValue[i]:=DataModule1.Query2.Fieldbyname('DT').AsDateTime;
DBChart1.Series[1].YValue[i]:=DataModule1.Query2.Fieldbyname('DISPX').AsFloat;
DataModule1.Query2.Next;
DBChart1.AutoRefresh:=true;
DBChart1.Repaint;
end;end;
end;
procedure TFrm_tzztj.Button1Click(Sender: TObject);
var i:integer;
begin
if ComboBox2.Text='水平位移X' then
begin
with DBChart1.Title.Text do
begin
clear;
add('水平位移X特征值分布');
end;
DBChart1.Repaint;
DataModule1.Query2.SQL.Clear;
DataModule1.Query2.SQL.Add('select DT,DISPX,PN from data_spwycz where PN=(:PN) and DT between (:DT1) and (:DT2)');
DataModule1.Query2.Params[0].AsString:=combobox1.Text;
DataModule1.Query2.Params[1].AsDateTime:=DateTimePicker1.DateTime;
DataModule1.query2.Params[2].AsDateTime:=DateTimePicker2.DateTime;
DataModule1.Query2.Open;
DataModule1.DataSource2.DataSet:=DataModule1.Query2;
DataModule1.DataSource1.DataSet:=DataModule1.Query2;
for i:=DataModule1.query2.RecordCount-1 downto 1 do
begin
DBChart1.Series[1].DataSource:=DataModule1.DataSource3;
DBChart1.Series[1].XValue[i]:=DataModule1.Query2.Fieldbyname('DT').AsDateTime;
DBChart1.Series[1].YValue[i]:=DataModule1.Query2.Fieldbyname('DISPX').AsFloat;
DataModule1.Query2.Next;
DBChart1.AutoRefresh:=true;
DBChart1.Repaint;
end;end;
end;
解决方案 »
- delphi中的datasource控键的dataset属性
- 新手提问,请多指点 : Form1上有很多TEdit和CheckBox,我想按“取消”键里,所有Tedit里输入的内容置空,CheckBox.checked:=false,难道
- 高分请教!如何以程序方式设置 win2000 共享的权限?
- 遇到的一个问题,望指点
- 如何设置TIdTelnet为非阻塞模式?
- 请问怎么将chm和mid文件加入到资源文件中并调用呢
- 請教一個將小寫轉為大寫的函數
- 为什么有这么一说:delphi不该是以pascal为基础的,要是以c/c++为基础将会十分完美!
- 100分求救,在线等待。在数据库sqlserver2000中adoquery的参数查询
- 指针释放问题!
- 哈哈,庄子说delphi。
- 请教大虾:我用TUDPSocket控件通信!
var
Series1:TLineSeries;
Str,str1:string;
i:integer; with DM.DataModule1 do
begin
Series1:=TlineSeries.Create(self);//动态创建的series如果已有设计好就不用了
Series1.ParentChart:=Chart1;
series1.Title:='ffffff';
Chart1.Title.Text.Clear;
Chart1.Title.Text.Add('nameaaaa');
Series1.DataSource:=Query2;//这里是指数据集,不是datasource控件而是数据源不要被名字迷惑
Series1.XLabelsSource:='DT';//主要这里设置为字段名
Series1.YValues.ValueSource:='DISPX';//Y轴字段名
chart1.LeftAxis.AutomaticMinimum:=False;
Chart1.LeftAxis.Minimum:=0;
end;
修改后的代码是:
procedure TFrm_tzztj.Button1Click(Sender: TObject);
var i:integer;
begin
if ComboBox2.Text='水平位移X' then
begin
DBChart1.Title.Text.Clear;
DBChart1.Title.Text.add('水平位移X特征值分布'); DBChart1.Repaint;
DataModule1.Query2.SQL.Clear;
DataModule1.Query2.SQL.Add('select DT,DISPX,PN from data_spwycz where PN=(:PN) and DT between (:DT1) and (:DT2)');
DataModule1.Query2.Params[0].AsString:=combobox1.Text;
DataModule1.Query2.Params[1].AsDateTime:=DateTimePicker1.DateTime;
DataModule1.query2.Params[2].AsDateTime:=DateTimePicker2.DateTime;
DataModule1.Query2.Open;
for i:= 0 to DataModule1.query2.RecordCount-1 do
begin
DBChart1.Series[1].DataSource:=DataModule1.Query2;
DBChart1.Series[1].XLabelsSource:='DT';
DBChart1.Series[1].YValues.valuesource:='DISPX';
DBChart1.LeftAxis.AutomaticMinimum:=false;
DBChart1.LeftAxis.Minimum:=0;
DataModule1.Query2.Next;
end; end;
end;