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

Delphi控件源码

开发平台:

Delphi

  1. unit HtmlData;
  2. interface
  3. uses
  4.   Classes, DB;
  5. type
  6.   THtmlStrings = class (TStringList)
  7.   public
  8.     procedure AddHeader (Title: string); virtual;
  9.     procedure AddFooter; virtual;
  10.   end;
  11.   THtmlData = class (THtmlStrings)
  12.   public
  13.     constructor Create (DataSet: TDataSet);
  14.     procedure AddHeader (Title: string); override;
  15.     procedure AddFooter; override;
  16.     procedure AddTableRow (LinkStr: string);
  17.   private
  18.     Data: TDataSet;
  19.   end;
  20. implementation
  21. uses
  22.   SysUtils;
  23. ////// THtmlStrings //////
  24. procedure THtmlStrings.AddHeader (Title: string);
  25. begin
  26.   Clear;
  27.   Add ('<HTML>');
  28.   Add ('<HEAD>');
  29.   Add ('<TITLE>' + Title + '</TITLE>');
  30.   Add ('</HEAD>');
  31.   Add ('<BODY>');
  32.   Add ('<H1><CENTER>' + Title + '</CENTER></H1>');
  33. end;
  34. procedure THtmlStrings.AddFooter;
  35. begin
  36.   Add ('<HR>');
  37.   Add ('Generated by the program ' +
  38.     ExtractFileName (ParamStr(0)));
  39.   Add ('</BODY>');
  40.   Add ('</HTML>');
  41. end;
  42. ////// THtlmData //////
  43. constructor THtmlData.Create (DataSet: TDataSet);
  44. begin
  45.   inherited Create;
  46.   Data := DataSet;
  47. end;
  48. procedure THtmlData.AddHeader (Title: string);
  49. var
  50.   I: Integer;
  51. begin
  52.   inherited AddHeader (Title);
  53.   // start table with borders
  54.   Add('<table border>');
  55.   // new row, with the table headers (tag <th>) for the visible fields
  56.   Add('<tr>');
  57.   for I := 0 to Data.FieldCount - 1 do
  58.     if Data.Fields[I].Visible then
  59.       Add('<th>' + Data.Fields[I].FieldName + '</th>');
  60.   Add('</tr>');
  61. end;
  62. procedure THtmlData.AddFooter;
  63. begin
  64.   // end the table
  65.   Add('</table>');
  66.   inherited AddFooter;
  67. end;
  68. procedure THtmlData.AddTableRow (LinkStr: string);
  69. var
  70.   I: Integer;
  71. begin
  72.   // new row, with table data (tag <td>)
  73.   Add('<tr>');
  74.   if LinkStr <> '' then
  75.     // add a link
  76.     Add('<td><a href="' + LinkStr +
  77.       Data.Fields[0].DisplayText + '.htm">'
  78.       + Data.Fields[0].DisplayText + '</a></td>')
  79.   else
  80.     // plain data
  81.     Add('<td>' + Data.Fields[0].DisplayText + '</td>');
  82.   // all the other visible fields
  83.   for I := 1 to Data.FieldCount - 1 do
  84.     if Data.Fields[I].Visible then
  85.       if Data.Fields[I].DisplayText <> '' then
  86.         Add('<td>' + Data.Fields[I].DisplayText + '</td>')
  87.       else
  88.         Add('<td><br></td>');
  89.   Add('</tr>');
  90. end;
  91. end.