unit ChartMod;interfaceuses
Windows, Messages, SysUtils, Classes,
HTTPApp, Db, DBTables,
DbChart, Series, Jpeg, ExtCtrls;type
TWebModule1 = class(TWebModule)
Table1: TTable;
procedure WebModule1ActionAreaAction
(Sender: TObject;
Request: TWebRequest; Response:
TWebResponse; var Handled:
Boolean);
procedure WebModule1ActionPopulationAction
(Sender: TObject;
Request: TWebRequest; Response:
TWebResponse; var Handled:
Boolean);
procedure WebModule1Create(Sender: TObject);
procedure WebModule1Destroy(Sender: TObject);
procedure WebModule1AfterDispatch(Sender: TObject;
Request: TWebRequest; Response:
TWebResponse; var Handled: Boolean);
private
Chart: TDBChart;
Series: TPieSeries;
Image: TImage;
public
{ Public declarations }
end;var
WebModule1: TWebModule1;implementation{$R *.DFM}procedure TWebModule1.WebModule1ActionAreaAction(
Sender: TObject;
Request: TWebRequest; Response: TWebResponse;
var Handled: Boolean);begin
// set specific values
Chart.Title.Text.Clear;
Chart.Title.Text.Add ('Area of Countries');
Chart.LeftAxis.Title.Caption := 'Area';
Series.Title := 'Area';
Series.PieValues.ValueSource := 'Area';
end;procedure TWebModule1.WebModule1ActionPopulationAction(
Sender: TObject;
Request: TWebRequest; Response: TWebResponse;
var Handled: Boolean);begin
// set specific values
Chart.Title.Text.Clear;
Chart.Title.Text.Add ('Population of Countries');
Chart.LeftAxis.Title.Caption := 'Population';
Series.Title := 'Population';
Series.PieValues.ValueSource := 'Population';
end;procedure TWebModule1.WebModule1Create(Sender: TObject);
begin
// open the database table
Table1.Open;
// create the chart
Chart := TDBChart.Create (nil);
Chart.Width := 600;
Chart.Height := 400;
Chart.AxisVisible := False;
Chart.Legend.Visible := False;
Chart.BottomAxis.Title.Caption := 'Name';
// create the pie series
Series := TPieSeries.Create (Chart);
Series.ParentChart := Chart;
Series.DataSource := Table1;
Series.XLabelsSource := 'Name';
Series.OtherSlice.Style := poBelowPercent;
Series.OtherSlice.Text := 'Others';
Series.OtherSlice.Value := 2;
Chart.AddSeries (Series);
// create the memory bitmap
Image := TImage.Create (nil);
Image.Width := Chart.Width;
Image.Height := Chart.Height;
end;procedure TWebModule1.WebModule1Destroy(
Sender: TObject);begin
Chart.Free;
Series.Free;
Image.Free;
end;
Windows, Messages, SysUtils, Classes,
HTTPApp, Db, DBTables,
DbChart, Series, Jpeg, ExtCtrls;type
TWebModule1 = class(TWebModule)
Table1: TTable;
procedure WebModule1ActionAreaAction
(Sender: TObject;
Request: TWebRequest; Response:
TWebResponse; var Handled:
Boolean);
procedure WebModule1ActionPopulationAction
(Sender: TObject;
Request: TWebRequest; Response:
TWebResponse; var Handled:
Boolean);
procedure WebModule1Create(Sender: TObject);
procedure WebModule1Destroy(Sender: TObject);
procedure WebModule1AfterDispatch(Sender: TObject;
Request: TWebRequest; Response:
TWebResponse; var Handled: Boolean);
private
Chart: TDBChart;
Series: TPieSeries;
Image: TImage;
public
{ Public declarations }
end;var
WebModule1: TWebModule1;implementation{$R *.DFM}procedure TWebModule1.WebModule1ActionAreaAction(
Sender: TObject;
Request: TWebRequest; Response: TWebResponse;
var Handled: Boolean);begin
// set specific values
Chart.Title.Text.Clear;
Chart.Title.Text.Add ('Area of Countries');
Chart.LeftAxis.Title.Caption := 'Area';
Series.Title := 'Area';
Series.PieValues.ValueSource := 'Area';
end;procedure TWebModule1.WebModule1ActionPopulationAction(
Sender: TObject;
Request: TWebRequest; Response: TWebResponse;
var Handled: Boolean);begin
// set specific values
Chart.Title.Text.Clear;
Chart.Title.Text.Add ('Population of Countries');
Chart.LeftAxis.Title.Caption := 'Population';
Series.Title := 'Population';
Series.PieValues.ValueSource := 'Population';
end;procedure TWebModule1.WebModule1Create(Sender: TObject);
begin
// open the database table
Table1.Open;
// create the chart
Chart := TDBChart.Create (nil);
Chart.Width := 600;
Chart.Height := 400;
Chart.AxisVisible := False;
Chart.Legend.Visible := False;
Chart.BottomAxis.Title.Caption := 'Name';
// create the pie series
Series := TPieSeries.Create (Chart);
Series.ParentChart := Chart;
Series.DataSource := Table1;
Series.XLabelsSource := 'Name';
Series.OtherSlice.Style := poBelowPercent;
Series.OtherSlice.Text := 'Others';
Series.OtherSlice.Value := 2;
Chart.AddSeries (Series);
// create the memory bitmap
Image := TImage.Create (nil);
Image.Width := Chart.Width;
Image.Height := Chart.Height;
end;procedure TWebModule1.WebModule1Destroy(
Sender: TObject);begin
Chart.Free;
Series.Free;
Image.Free;
end;
2。其次,你可以在双击DBchart是动态创建一个ComBoBox,在ComBoBox中添加query1的所有字段,当用户选中其中的某个字段时,在BarSeries上显示该字段的值。dbchart1.ondbclick;
var
i:integer
TB:Tcombobox;
begin
tb:=tcombobox.create(self);
tb.parent:=dbchart1;
for i:=0 to query1.fields.count-1 do
tb.items.add(query1.field[i].fieldname);
//定义tb的onchange
tb.onchange:=yourprog;//将 tb的onchange指向你的程序
end;
procedure yourprog(sender:tobject);
var
i:integer;
s:string;
begin
s:=tcombobx(sender).text;
with dbchart1 do
begin
for i:=1 to series.count do
if series[i].active then
begin
series[i].DataSources.add(query1);
series[i].YValues.valuesource :=query1.fieldbyname(s);
seires[i].Xlabelssource :=query1.fieldbyname(s);
end;
end;
end;