说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

用Delphi编写CGI程序返回图象

HTML文档下载 WORD文档下载 PDF文档下载
用Delphi编写CGI程序返回图象

---- Delphi 4.0对Internet编程提供了强大的支持,Delphi 4.0编写CGI非常容易, Delphi 4.0本身提供了例程。但是笔者在实践中遇到需要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 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;

procedure TWebModule1.WebModule1AfterDispatch(

Sender: TObject;

Request: TWebRequest; Response: TWebResponse;

var Handled: Boolean);

var

Jpeg: TJpegImage;

MemStr: TMemoryStream;

begin

// paint the chart on the memory bitmap

Chart.Draw (Image.Canvas

Image.BoundsRect);

// create the jpeg and copy the iamge to it

Jpeg := TJpegImage.Create;

try

Jpeg.Assign (Image.Picture.Bitmap);

MemStr := TMemoryStream.Create;

try

// save to a stream and return it

Jpeg.SaveToStream (MemStr);

MemStr.Position := 0;

Response.ContentType := 'image/jpeg';

Response.ContentStream := MemStr;

Response.SendResponse;

finally

MemStr.Free;

end;

finally

Jpeg.Free;

end;

end;

end.

杭州兆合陈洋:微气象大民生,气象微信平台研发探索 【探秘ES6】系列专栏(十):更深入了解生成器 【探秘ES6】系列专栏(十一):类语法 《近匠》专访Depth VR:浅析VR交互技术选型中的瓶颈与机遇 【CTO讲堂】将“简单快速”渗透到移动开发测试每个环节,从fir.im团队说起 问一个有点难度的问题,欢迎各位大侠讨论,来者有分! 类的设计问题 数据窗口如何插入空值? 有兴趣的来看看……个人无私分享! 关于网页使用快捷键的问题 熟悉xml的ggjjddmm们近来看看?我不知道错误怎么回事? 请问各位高手,如何在ASP.net中(用的是VB)对DataGrid中的行进行编辑、删除、排序等操作 如何把delphi中的程序编译成应用程序 C# Builder注册码? 塑料为什么不能导电 电动车蓄电池容量变小怎么办 硬脂酸甘油酯与软脂酸甘油酯的区别 必须脂肪酸和必须氨基酸的化学式? 欲将含有盐酸的氯化钙溶液中和至中性,在不用指示剂的 氯化钙溶液中含有少量盐酸,欲中和盐酸使溶液中性,在 为什么Na和水反应生成H2 ,而Na2O2和水反应 欲将含有盐酸的氯化钙溶液中和至中性,但缺少酸碱指示 某人将含有盐酸的氯化钙溶液中和至中性,但缺少酸碱指 老汉与网友开房遇儿媳系假新闻 媒体致奥巴马敦促国会通过移民改革法 称有利法国登记失业人数再次上升两名美国船员在尼日利亚遭武装海盗绑架外媒:美伊和解让以色列沙特“很受伤”一周体坛论语:李娜妙评新疆水利厅建管处干部受贿20万获刑1威少缺阵杜兰特30分 雷霆主场负小牛食药监总局将整治医疗器械夸大宣传等5河南唐河侨资企业正昌儿童福利学校获爱皇帝的征途腹黑魔君霸道爱朱明画卷血魂1937全能炼气士银川旅游林芝旅游亚丁旅游南宁旅游东极岛旅游
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘