Delphi 对Internet编程提供了强大的支持,Delphi 编写CGI非常容易,Dlphi 本身提供了例程。但是笔者在实践中遇到需要CGI
程序根据数据库动态 返回图象的情况,很多文章推进使用Cgi-Expert或有关的OCX控件,使用控件不仅 带来额外的开销,且缺乏灵活性,那么能否不使用这些控件自己编写代码实现,现 推荐一种方法,代码如下:
unit ChartMod;
interface
uses
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