delphi 编程技巧

源代码在线查看: 用delphi编写cgi程序返回图象 (2000年7月25日).txt

软件大小: 774 K
上传用户: zyhunicom
关键词: delphi 编程技巧
下载地址: 免注册下载 普通下载 VIP

相关代码

				用Delphi编写CGI程序返回图象 (2000年7月25日) 
				
				本站更新  分类:   作者:汪永荣  推荐:   阅读次数:618  
				(http://www.codesky.net)  
				
				--------------------------------------------------------------------------------
				
				珠海西门子表计公司 
				汪永荣 
				---- 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.
				 
				 
							

相关资源