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

Delphi控件源码

开发平台:

Delphi

  1. unit CustWebM;
  2. interface
  3. uses
  4.   Windows, Messages, SysUtils, Classes, HTTPApp, Db, DBTables, DBWeb,
  5.   HTTPProd, DBBdeWeb;
  6. type
  7.   TWebModule1 = class(TWebModule)
  8.     QueryTableProducer1: TQueryTableProducer;
  9.     Query1: TQuery;
  10.     Query1Company: TStringField;
  11.     Query1State: TStringField;
  12.     Query1Country: TStringField;
  13.     PageProducer1: TPageProducer;
  14.     Query2: TQuery;
  15.     procedure PageProducer1HTMLTag(Sender: TObject; Tag: TTag;
  16.       const TagString: String; TagParams: TStrings;
  17.       var ReplaceText: String);
  18.     procedure RecordAction(Sender: TObject;
  19.       Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
  20.     procedure QueryTableProducer1FormatCell(Sender: TObject; CellRow,
  21.       CellColumn: Integer; var BgColor: THTMLBgColor;
  22.       var Align: THTMLAlign; var VAlign: THTMLVAlign; var CustomAttrs,
  23.       CellData: String);
  24.   end;
  25. var
  26.   WebModule1: TWebModule1;
  27. implementation
  28. uses WebReq;
  29. {$R *.DFM}
  30. procedure TWebModule1.PageProducer1HTMLTag(Sender: TObject; Tag: TTag;
  31.   const TagString: String; TagParams: TStrings; var ReplaceText: String);
  32. begin
  33.   if TagString = 'script' then
  34.     ReplaceText := Request.InternalScriptName
  35.   else
  36.   begin
  37.     ReplaceText := '';
  38.     Query2.SQL.Clear;
  39.     Query2.SQL.Add ('select distinct ' +
  40.       TagString + ' from customer');
  41.     try
  42.       Query2.Open;
  43.       try
  44.         Query2.First;
  45.         while not Query2.EOF do
  46.         begin
  47.           ReplaceText := ReplaceText +
  48.             '<option>' + Query2.Fields[0].AsString +
  49.             '</option>'#13;
  50.           Query2.Next;
  51.         end;
  52.       finally
  53.         Query2.Close;
  54.       end;
  55.     except
  56.       ReplaceText := '{wrong field: ' + TagString + '}';
  57.     end;
  58.   end;
  59. end;
  60. procedure TWebModule1.RecordAction(Sender: TObject;
  61.   Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
  62. var
  63.   I: Integer;
  64. begin
  65.   if Request.QueryFields.Count = 0 then
  66.     Response.Content := 'Record not found'
  67.   else
  68.   begin
  69.     Query2.SQL.Clear;
  70.     Query2.SQL.Add ('select * from customer ' +
  71.       'where Company="' + Request.QueryFields[0] + '"');
  72.     Query2.Open;
  73.     Response.Content :=
  74.       '<HTML><HEAD><TITLE>Customer Record</TITLE></HEAD><BODY>'#13 +
  75.       '<H1>Customer Record: ' + Request.QueryFields[0] +
  76.       '</H1>'#13 +
  77.       '<table border>'#13;
  78.     for I := 1 to Query2.FieldCount - 1 do
  79.       Response.Content := Response.Content +
  80.         '<tr><td>' + Query2.Fields [I].FieldName +
  81.         '</td>'#13'<td>' + Query2.Fields [I].AsString +
  82.         '</td></tr>'#13;
  83.     Response.Content := Response.Content +
  84.       '</table><hr>'#13 +
  85.       // pointer to the query form
  86.       '<a HREF="' + Request.InternalScriptName + '/form">' +
  87.       ' Next Query </a>'#13 +
  88.       '</BODY></HTML>'#13;
  89.   end;
  90. end;
  91. procedure TWebModule1.QueryTableProducer1FormatCell(Sender: TObject;
  92.   CellRow, CellColumn: Integer; var BgColor: THTMLBgColor;
  93.   var Align: THTMLAlign; var VAlign: THTMLVAlign; var CustomAttrs,
  94.   CellData: String);
  95. begin
  96.   if (CellColumn = 0) and (CellRow <> 0) then
  97.     CellData := '<a HREF="' + Request.InternalScriptName +
  98.       '/record?' + CellData + '">' + CellData + '</a>'#13;
  99.   if CellData = '' then
  100.     CellData := '&nbsp;';
  101. end;
  102. initialization
  103.   WebRequestHandler.WebModuleClass := TWebModule1;
  104. end.