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

用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.

无线充电技术走入客厅 宜家推出“Home Smart”系列 发布仅一年,虚幻引擎4宣布完全免费! HTML5初学者福利!11个在线学习网站推荐 Qualcomm发布Snapdragon 820与超声波指纹识别技术 App Store应用僵尸化:没品质没资本的必然走向 Unity 5正式发布:支持21种平台、个人版免费! 创新高性能移动UI框架——Canvas UI 框架 取精华、去糟粕!适合iOS开发者的15大网站推荐 Swift如何优化性能? 【程序员电子刊精选】明道CEO任向晖:企业也需要养成好习惯 你信吗?重构软件并不会改善代码质量 融合VR与AR:uSens推出虚拟现实手机头盔 4月17-18日,OpenStack、Spark、Container齐聚OpenCloud 2015 第四代CSS选择器,那些让你激动的新特性 联通WO+开放平台“App计费 ” 保障手机应用付费安全 Valve推Lighthouse技术,欲解决VR设备眩晕感 全球移动开发者报告:Swift崛起,物联网大火! 不圈地自萌!10个UX设计经验分享网站推荐 苹果继续改改改!Swift语言何时能稳定? 封闭还是开放?Android Wear离iOS究竟有多远 TIOBE 2015年3月编程语言排行榜:CoffeeScript首次进入TOP 100 2015网页摄影图的六大流行趋势 原生体验挡不住!JavaScript开源跨平台框架NativeScript 自行车,恰到好处的“智能” 联通WO+开放平台:保护消费者权益就是保护移动互联网生态 2015年Google Code Jam编程挑战赛开始报名 Impression Pi:VR头盔的进阶形态 King.com和Halfbrick Studios成功背后的21款工具 五大实用技巧 帮设计师实现高效会议沟通 机遇与挑战并存 Testin进军众测 新增多SIM卡API,Android 5.1 SDK正式发布! ★在软件中提供了自定义热键的功能,但是我如何判断该热键已被占用了呢??? 羽毛球爱好者,请进 入门:关于验证字已失效的问题 blob字段如何存取? 一个编程论坛 那位能给我一个qq号呀,我急用 liangdiantech@163.com 羽毛球爱好者,请进 请问哪里有Microsoft Application Center Test的相关资料?多谢 非常简单的问题!!! 轻松心态,远离非典! 在自己的机器上打不开联接 DataModule的问题(菜鸟级) 怎么把表中的列约束为唯一的? 一个编程论坛 从没见过的问题!!!晕了!! 安装问题,请指教! C++的应用是什么意思呢? 得到上传文件大小的问题,解决高分相送!! R6中的问题!高手请进!高分求救! 一个电子书籍下载和编程论坛 请问怎么在vb中调用纯c接口的api并实现多线程 如何在一个很大的文件中删除一段数据?不用拷贝的方法 the C++ programing language里的两个小问题!!! 找在没行带checkbutton的listbox控件类 我可怜的QQ被盗了~~有什么密码破译软件取回QQ的密码吗 VARIANT结构中,如何通过pvarVal指针来获得串口传来的二进制流?? 天啊,这就是《程序员》? 编译java程序需要哪些工具,菜鸟提问. how to use *.pak?? ★在数据窗口中如何同时实现多行操作,如update或delete多行。 请问oracle8i的下载问题! 请问MSDN.net 中文版光盘出了吗??????????????????????? 关于STRING的问题 在IE中程序运行有错误?请指点! JB8做个BMP,奇怪问题 有谁知道*.dns用什么软件打开吗,急!!! 大家给我推荐一个delphi源码网站 Oracle8.17的安装问题,请大家帮忙,急呀!谢谢! csv文件存储求助 问个关于checkboxlist控件的用法! 客户端通过Session Bean 调用 Local EntityBean的问题. 启动j2ee的问题--j2ee -verbose 那里能够下载破解的install shield 5.0 or 5.5 or 6.0? 我想搞网络游戏开发,请教各位的意见 如何在接受表单的ASP文件中,去知晓是这个表单中的哪个'确认按钮'被按下了?? 我的数据库打不开了!!! 连接MySQL数据库服务器? 有谁可以推荐几个国外的比较热的asp论坛,多谢! 我是一个菜鸟,想学asp,希望前辈给指条路 有人知道工程硕士是怎么回事吗?和普通的有什么不同啊,可以考普通的博士吗?谢谢阿 access数据库为何备份出错? 英欲对外国购房者征重税“歧视胖子” 香奈儿艺术总监惹官司埃及多地爆发大规模反对军方游行墨西哥总统号召全民减肥印度开建“全球最高”塑像印度开建“全球最高”塑像 呼吁民众捐斯诺登找到工作 在俄社交网站上班英国检方称《世界新闻报》曾窃听哈里王“歧视胖子” 香奈儿艺术总监惹官司戴“谷歌眼镜”开车遭传讯偷渡客残杀5人 凸显底层华人困境普京登顶权势榜 只怪奥巴马不争气首个完整境外诈骗集团被批捕新一轮伊核对话可能取得重要进展奥巴马豪华座驾“野兽”细节曝光 具备印度真的脏乱差吗?撕去贴在印度身上的国际组织称:叙利亚已销毁化武设备挪威小镇人造“太阳”告别黑暗冬日(高小伙宁杭高速上搭不到客车 准备从南京温州街头有精神病史的男子挥刀挟持自己杭州男子因收入没妻子高将其推入河中淹28省政府工作报告相继出炉 聚焦改司法部副部长:深化司法行政体制改革七位普通百姓的除夕计划安徽省一天查处交通违法4.6万起 行人民日报:房产税试点三年难撼房价 泡龚全珍:能参加春晚感到非常荣幸奉献雅俗共赏异彩纷呈的文化年夜饭“过年没意思” 八成受访者感叹年味越合肥一家人自办家庭春晚13载大学生村官被村委会借走10万元 离职网络大拜年潮涌天山南北系列“穿越秀”自治区举行新春音乐会张春贤等出席观看六大改革推进我区生态文明制度建设我区开展城乡劳动力就业失业情况调查以铁的纪律持之以恒纠“四风”较强冷空气春节前入侵北疆地区自治区纪委通报七起违反中央八项规定典张春贤等领导看望慰问老同志利剑高擎严惩腐败 自治区纪委2013错过药检 李龙大被禁赛一年“2014成都大庙会”开庙啰
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘