微信公众号 
图码生活

每天发布有五花八门的文章,各种有趣的知识等,期待您的订阅与参与
电脑报 1992-2001 十年文章全集
电脑报 1992-2001 十年文章全集
包含从 1992 年 - 2001 年间,两万余篇期刊文章,查询最少输入两个字符
随便看看
读取中
读取中
标题用Delphi制作留言板
栏目软件世界
作者朱堂全
发布2001年13期
  留言板网页不同于一般网页,它不但有网页部分,而且还要有数据存储功能。用Delphi的的CGI应用程序可以轻松地制作留言板网页,不但可以实现ASP、HTML很难实现的底层操作,而且简化了CGI应用程序开发过程。
  步骤如下:
  一、选择Delphi的菜单“File/New”在New标签中选择“Web Server Application”。然后再选择“CGI Stand-alone executable”创建一个CGI应用程序。
  二、系统自动创建一个非可视的WebModule1组件,我们按以下步骤给程序添加控制和代码:
  (1) 双击WebModule1的Actions属性,弹出Actions属性对话框
  (2) 单击Add按钮,添加一个新行WebActionItem1
  (3) 将WebActionItem1的Default属性设置为True,这样设置可在访问CGI.EXE时直接访问此页面
  (4) 单击Add按钮,添加一个新行WebActionItem2
  (5) 将WebActionItem2的PathInfo属性设置为“\Info”,即访问此页面的路径为CGI.EXE\Info
  (6) 增加WebActionItem1的OnAction事件,添加代码,将留言板页面的HTML语句赋给Response.Content属性,让用户在访问WEB服务器应用程序时显示
  (7)增加WebActionItem2的OnAction事件,添加代码处理留言板页面传回的信息,同时显示相关信息通知用户。其中涉及Request.ContentFields.Values['index'],及Request.ContentFields.Strings[counts],两个属性的应用。
  Request.ContentFields.Values ['UserName']是指留言板页面中Name=“UserName”的控件中的数据信息。
  Request.ContentFields.Strings [Counts]是指留言板页面传过来的各项数据及对应的控件名。以Counts区分它为哪项数据,其数值为留言板页面传输数据项的顺序号。
  数据存储方式采用文本文件存储,如果网友的主页人气鼎盛也可考虑改用数据库存储。
  以下是完整的程序代码:
  unit Html;
  interface
  uses
  Windows,Messages,SysUtils,Classes,HTTPApp;
  type
  TWebModule1 =class(TWebModule)
  procedure
  WebModule1WebActionItem1Action(Sender: TObject;
  Request: TWebRequest; Response: TWebResponse;
  var Handled: Boolean);
  procedure
  WebModule1WebActionItem2Action(Sender: TObject;
  Request: TWebRequest; Response: TWebResponse;
  var Handled: Boolean);
  private
  {Private declarations}
  public
  {Public declarations}
  end;
  var
  WebModule1: TWebModule1;
  implementation
  {$R *.DFM}
  procedure
  TWebModule1.WebModule1WebActionItem1Action(Sender: TObject;Request: TWebRequest; Response:
  TWebResponse; var Handled: Boolean);
  var html:string;
  begin
  html:=';'
  html:=html+'<html><head><title>会员注册
  </title></head><center>'
  html:=html+'<H2>会员注册</H2></center>';
  html:=html+'<body background=" bgcolor=#fffff"><td></td>';
  html:=html+'<form action=webcgi.exe\Info"
  method=post" id=form1" name=form1" style=
  FONT-SIZE: larger">';
  html:=html+'<p>姓名:<input size=12"
  maxlength=10" name=UserName"></p>';
  html:=html+'<p>性别:<input type=radio"
  name=Sex" value=Man" checked>男';
  html:=html+'<input type=radio" name=Sex"
  value=Woman">女</p>';
  html:=html+'<p>年龄:<input size=5"
  maxlength=3" name=Age"></p>';
  html:=html+'<p>所在城市:<input size=20"
  maxlength=16" name=City"></p>';
  html:=html+'<p>E-mail:<input size=24"
  maxlength=30" name=E-mail"></p>';
  html:=html+'<p>留言:<textarea name=Textarea"
  rows=5" cols=30"></textarea></p>';
  html:=html+'<center><input type=submit" Name=submit" value= 提交 " >';
  html:=html+'<input type=reset" value= 取消" >';
  html:=html+'</form></center>';
  html:=html+'</BODY></html>';
  Response.Content :=html;
  end;
  procedure
  TWebModule1.WebModule1WebActionItem2Action(Sender: TObject;Request: TWebRequest; Response:
  TWebResponse; var Handled: Boolean);
  var
  html:string;
  Output: TextFile;
  Counts,line:integer;
  begin
  Assignfile(Output,'List.Txt');{如果没有list.txt文件会报错,须先手工创建。}
  Append(output);
  for counts:=0 to Request.ContentFields.Count-2 do
  begin
  if counts<Request.ContentFields.Count-2 then
  begin
  Write(Output,
  Request.ContentFields.Strings[counts]);
  for line:=0 to 20-length(Request.
  ContentFields.Strings[counts])do
  begin
  Write(Output,' ');
  end;
  end
  else
  begin
  Write(Output,
  Request.ContentFields.Strings[counts]);
  Writeln(Output,' ');
  end;
  end;
  CloseFile(output);
  html:='';
  html:=html+'<html><head><title>Thank You!</title></head><body>';
  html:=html+'<center><P><H2>'+
  Request.ContentFields.Values['UserName'];
  html:=html+'你好!你已注册成功!</H2></P>';
  html:=html+'<A href=http://zhou/scripts/Webcgi.exe">点击这里返回</A>';
  html:=html+'</center></body></html>';
  Response.Content:=html;
  end;
  end.
  注:以上代码在Delphi4、IIS4.0/PWS、IE5.0中运行通过。