home *** CD-ROM | disk | FTP | other *** search
/ QBasic & Borland Pascal & C / Delphi5.iso / Runimage / Delphi50 / Source / Internet / DSPROD.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1999-08-11  |  2.2 KB  |  77 lines

  1. {*******************************************************}
  2. {                                                       }
  3. {       Borland Delphi Visual Component Library         }
  4. {                                                       }
  5. {       Copyright (c) 1995,99 Inprise Corporation       }
  6. {                                                       }
  7. {*******************************************************}
  8.  
  9. unit DSProd;
  10.  
  11. interface
  12.  
  13. uses Classes, HTTPApp, DB;
  14.  
  15. type
  16.   TDataSetPageProducer = class(TPageProducer)
  17.   private
  18.     FDataSet: TDataSet;
  19.   protected
  20.     function GetDataSet: TDataSet; virtual;
  21.     procedure SetDataSet(ADataSet: TDataSet); virtual;
  22.     procedure Notification(AComponent: TComponent; Operation: TOperation); override;
  23.     procedure DoTagEvent(Tag: TTag; const TagString: string; TagParams: TStrings;
  24.       var ReplaceText: string); override;
  25.   public
  26.     function Content: string; override;
  27.   published
  28.     property DataSet: TDataSet read GetDataSet write SetDataSet;
  29.     property OnHTMLTag;
  30.   end;
  31.  
  32. implementation
  33.  
  34. function TDataSetPageProducer.GetDataSet: TDataSet;
  35. begin
  36.   Result := FDataSet;
  37. end;
  38.  
  39. procedure TDataSetPageProducer.SetDataSet(ADataSet: TDataSet);
  40. begin
  41.   if FDataSet <> ADataSet then
  42.   begin
  43.     if ADataSet <> nil then ADataSet.FreeNotification(Self);
  44.     FDataSet := ADataSet;
  45.   end;
  46. end;
  47.  
  48. procedure TDataSetPageProducer.Notification(AComponent: TComponent; Operation: TOperation);
  49. begin
  50.   inherited Notification(AComponent, Operation);
  51.   if (Operation = opRemove) and (AComponent = FDataSet) then
  52.     FDataSet := nil;
  53. end;
  54.  
  55. procedure TDataSetPageProducer.DoTagEvent(Tag: TTag; const TagString: string;
  56.   TagParams: TStrings; var ReplaceText: string);
  57. var
  58.   Field: TField;
  59. begin
  60.   if (TagParams.Count = 0) and Assigned(FDataSet) then
  61.   begin
  62.     Field := FDataSet.FindField(TagString);
  63.     if Assigned(Field) then
  64.         ReplaceText := Field.DisplayText;
  65.   end;
  66.   inherited DoTagEvent(Tag, TagString, TagParams, ReplaceText);
  67. end;
  68.  
  69. function TDataSetPageProducer.Content: string;
  70. begin
  71.   if (FDataSet <> nil) and not FDataSet.Active then
  72.     FDataSet.Open;
  73.   Result := inherited Content;
  74. end;
  75.  
  76. end.
  77.