BrokWm.pas
上传用户:fh681027
上传日期:2022-07-23
资源大小:1959k
文件大小:7k
源码类别:

Delphi控件源码

开发平台:

Delphi

  1. unit BrokWm;
  2. interface
  3. uses
  4.   Windows, Messages, SysUtils, Classes, HTTPApp, Db, DBTables, DSProd,
  5.   DBWeb, HTTPProd;
  6. type
  7.   TWebModule1 = class(TWebModule)
  8.     Table1: TTable;
  9.     Table1EmpNo: TIntegerField;
  10.     Table1LastName: TStringField;
  11.     Table1FirstName: TStringField;
  12.     Table1PhoneExt: TStringField;
  13.     Table1HireDate: TDateTimeField;
  14.     Table1Salary: TFloatField;
  15.     PageHead: TPageProducer;
  16.     DataSetPage: TDataSetPageProducer;
  17.     PageTail: TPageProducer;
  18.     DataSetTableProducer1: TDataSetTableProducer;
  19.     procedure TimeAction(Sender: TObject; Request: TWebRequest;
  20.       Response: TWebResponse; var Handled: Boolean);
  21.     procedure DateAction(Sender: TObject; Request: TWebRequest;
  22.       Response: TWebResponse; var Handled: Boolean);
  23.     procedure MenuAction(Sender: TObject; Request: TWebRequest;
  24.       Response: TWebResponse; var Handled: Boolean);
  25.     procedure StatusAction(Sender: TObject;
  26.       Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
  27.     procedure RecordAction(Sender: TObject;
  28.       Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
  29.     procedure PageTailHTMLTag(Sender: TObject; Tag: TTag;
  30.       const TagString: String; TagParams: TStrings;
  31.       var ReplaceText: String);
  32.     procedure DataSetTableProducer1FormatCell(Sender: TObject; CellRow,
  33.       CellColumn: Integer; var BgColor: THTMLBgColor;
  34.       var Align: THTMLAlign; var VAlign: THTMLVAlign; var CustomAttrs,
  35.       CellData: String);
  36.     procedure WebModule1AfterDispatch(Sender: TObject;
  37.       Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
  38.     procedure WebModule1WaTableAction(Sender: TObject;
  39.       Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
  40.   public
  41.     { Public declarations }
  42.   end;
  43. var
  44.   WebModule1: TWebModule1;
  45. implementation
  46. {$R *.DFM}
  47. procedure TWebModule1.TimeAction(Sender: TObject;
  48.   Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
  49. begin
  50.   Response.Content := 'Time at this site: ' +
  51.     FormatDateTime('hh:mm:ss AM/PM', Now) + '<p>';
  52. end;
  53. procedure TWebModule1.DateAction(Sender: TObject;
  54.   Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
  55. begin
  56.   Response.Content := 'Today is ' +
  57.     FormatDateTime('dddd, mmmm d, yyyy', Now) + '<p>';
  58. end;
  59. procedure TWebModule1.MenuAction(Sender: TObject;
  60.   Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
  61. var
  62.   I: Integer;
  63. begin
  64.   Response.Content := '<H3>Menu</H3><ul>'#13;
  65.   for I := 0 to Actions.Count - 1 do
  66.     Response.Content := Response.Content +
  67.       '<li> <a href="' + Request.ScriptName +
  68.       Action[I].PathInfo + '"> ' + Copy (Action[I].Name, 3, 1000) + '</a>'#13;
  69.   Response.Content := Response.Content + '</ul>';
  70. end;
  71. procedure TWebModule1.StatusAction(Sender: TObject;
  72.   Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
  73. var
  74.   I: Integer;
  75. begin
  76.   Response.Content := '<H3>Status</H3>'#13 +
  77.     'Method: ' + Request.Method + '<br>'#13 +
  78.     'ProtocolVersion: ' + Request.ProtocolVersion + '<br>'#13 +
  79.     'URL: ' + Request.URL + '<br>'#13 +
  80.     'Query: ' + Request.Query + '<br>'#13 +
  81.     'PathInfo: ' + Request.PathInfo + '<br>'#13 +
  82.     'PathTranslated: ' + Request.PathTranslated + '<br>'#13 +
  83.     'Authorization: ' + Request.Authorization + '<br>'#13 +
  84.     'CacheControl: ' + Request.CacheControl + '<br>'#13 +
  85.     'Cookie: ' + Request.Cookie + '<br>'#13 +
  86.     'Date: ' + DateTimeToStr (Request.Date) + '<br>'#13 +
  87.     'Accept: ' + Request.Accept + '<br>'#13 +
  88.     'From: ' + Request.From + '<br>'#13 +
  89.     'Host: ' + Request.Host + '<br>'#13 +
  90.     'IfModifiedSince: ' + DateTimeToStr (Request.IfModifiedSince) + '<br>'#13 +
  91.     'Referer: ' + Request.Referer + '<br>'#13 +
  92.     'UserAgent: ' + Request.UserAgent + '<br>'#13 +
  93.     'ContentEncoding: ' + Request.ContentEncoding + '<br>'#13 +
  94.     'ContentType: ' + Request.ContentType + '<br>'#13 +
  95.     'ContentLength: ' + IntToStr (Request.ContentLength) + '<br>'#13 +
  96.     'ContentVersion: ' + Request.ContentVersion + '<br>'#13 +
  97.     'Content: ' + Request.Content + '<br>'#13 +
  98.     'Connection: ' + Request.Connection + '<br>'#13 +
  99.     'DerivedFrom: ' + Request.DerivedFrom + '<br>'#13 +
  100.     'Expires: ' + DateTimeToStr (Request.Expires) + '<br>'#13 +
  101.     'Title: ' + Request.Title + '<br>'#13 +
  102.     'RemoteAddr: ' + Request.RemoteAddr + '<br>'#13 +
  103.     'RemoteHost: ' + Request.RemoteHost + '<br>'#13 +
  104.     'ScriptName: ' + Request.ScriptName + '<br>'#13 +
  105.     'ServerPort: ' + IntToStr (Request.ServerPort) + '<br>'#13;
  106.   // list of strings
  107.   Response.Content := Response.Content +
  108.     'ContentFields:<ul>'#13;
  109.   for I := 0 to Request.ContentFields.Count - 1 do
  110.     Response.Content := Response.Content +
  111.       '<li>' + Request.ContentFields [I]+ #13;
  112.   Response.Content := Response.Content +
  113.     '</ul>CookieFields:<ul>'#13;
  114.   for I := 0 to Request.CookieFields.Count - 1 do
  115.     Response.Content := Response.Content +
  116.       '<li>' + Request.CookieFields [I] + #13;
  117.   Response.Content := Response.Content +
  118.     '</ul>QueryFields:<ul>'#13;
  119.   for I := 0 to Request.QueryFields.Count - 1 do
  120.     Response.Content := Response.Content +
  121.       '<li>' + Request.QueryFields [I] + #13;
  122. end;
  123. procedure TWebModule1.RecordAction(Sender: TObject;
  124.   Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
  125. begin
  126.   Table1.Open;
  127.   // go to the requested record
  128.   Table1.FindNearest ([Request.QueryFields.Values['LastName'],
  129.     Request.QueryFields.Values['FirstName']]);
  130.   // get the output
  131.   Response.Content := DataSetPage.Content;
  132. end;
  133. procedure TWebModule1.PageTailHTMLTag(Sender: TObject; Tag: TTag;
  134.   const TagString: String; TagParams: TStrings; var ReplaceText: String);
  135. begin
  136.   if TagString = 'script' then
  137.     ReplaceText := Request.ScriptName;
  138. end;
  139. procedure TWebModule1.DataSetTableProducer1FormatCell(Sender: TObject;
  140.   CellRow, CellColumn: Integer; var BgColor: THTMLBgColor;
  141.   var Align: THTMLAlign; var VAlign: THTMLVAlign; var CustomAttrs,
  142.   CellData: String);
  143. begin
  144.   if (CellColumn = 0) and (CellRow <> 0) then
  145.     CellData := '<a href="' + Request.ScriptName + '/record?LastName=' +
  146.       Table1['LastName'] + '&FirstName=' + Table1 ['FirstName'] + '"> '
  147.       + CellData + ' </a>';
  148. end;
  149. procedure TWebModule1.WebModule1AfterDispatch(Sender: TObject;
  150.   Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
  151. begin
  152.   Response.Content := PageHead.Content +
  153.     Response.Content + PageTail.Content;
  154. end;
  155. procedure TWebModule1.WebModule1WaTableAction(Sender: TObject;
  156.   Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
  157. begin
  158.   Table1.Open;
  159.   Table1.First;
  160. end;
  161. end.