home *** CD-ROM | disk | FTP | other *** search
/ Chip 2001 October / Chip_2001-10_cd1.bin / zkuste / delphi / kolekce / d6 / FRCLX.ZIP / SOURCE / FR_DSet.pas < prev    next >
Pascal/Delphi Source File  |  2001-07-01  |  3KB  |  109 lines

  1.  
  2. {******************************************}
  3. {                                          }
  4. {           FastReport CLX v2.4            }
  5. {             Report dataset               }
  6. {                                          }
  7. { Copyright (c) 1998-2001 by Tzyganenko A. }
  8. {                                          }
  9. {******************************************}
  10.  
  11. unit FR_DSet;
  12.  
  13. interface
  14.  
  15. {$I FR.inc}
  16.  
  17. uses
  18.   SysUtils, Classes;
  19.  
  20. type
  21.   TRangeBegin = (rbFirst, rbCurrent);
  22.   TRangeEnd = (reLast, reCurrent, reCount);
  23.   TCheckEOFEvent = procedure(Sender: TObject; var Eof: Boolean) of object;
  24.  
  25.   TfrDataset = class(TComponent)
  26.   protected
  27.     FRangeBegin: TRangeBegin;
  28.     FRangeEnd: TRangeEnd;
  29.     FRangeEndCount: Integer;
  30.     FOnFirst, FOnNext, FOnPrior: TNotifyEvent;
  31.     FOnCheckEOF: TCheckEOFEvent;
  32.     FRecNo: Integer;
  33.   public
  34.     constructor Create(AOwner: TComponent); override;
  35.     procedure Init; virtual;
  36.     procedure Exit; virtual;
  37.     procedure First; virtual;
  38.     procedure Next; virtual;
  39.     procedure Prior; virtual;
  40.     function Eof: Boolean; virtual;
  41.     property RangeBegin: TRangeBegin read FRangeBegin write FRangeBegin default rbFirst;
  42.     property RangeEnd: TRangeEnd read FRangeEnd write FRangeEnd default reLast;
  43.     property RangeEndCount: Integer read FRangeEndCount write FRangeEndCount default 0;
  44.     property RecNo: Integer read FRecNo;
  45.     property OnCheckEOF: TCheckEOFEvent read FOnCheckEOF write FOnCheckEOF;
  46.     property OnFirst: TNotifyEvent read FOnFirst write FOnFirst;
  47.     property OnNext: TNotifyEvent read FOnNext write FOnNext;
  48.     property OnPrior: TNotifyEvent read FOnPrior write FOnPrior;
  49.   end;
  50.  
  51.   TfrUserDataset = class(TfrDataset)
  52.   published
  53.     property RangeBegin;
  54.     property RangeEnd;
  55.     property RangeEndCount;
  56.     property OnCheckEOF;
  57.     property OnFirst;
  58.     property OnNext;
  59.     property OnPrior;
  60.   end;
  61.  
  62.  
  63. implementation
  64.  
  65.  
  66. constructor TfrDataSet.Create(AOwner: TComponent);
  67. begin
  68.   inherited Create(AOwner);
  69.   RangeBegin := rbFirst;
  70.   RangeEnd := reLast;
  71. end;
  72.  
  73. procedure TfrDataSet.Init;
  74. begin
  75. end;
  76.  
  77. procedure TfrDataSet.Exit;
  78. begin
  79. end;
  80.  
  81. procedure TfrDataSet.First;
  82. begin
  83.   FRecNo := 0;
  84.   if Assigned(FOnFirst) then FOnFirst(Self);
  85. end;
  86.  
  87. procedure TfrDataSet.Next;
  88. begin
  89.   Inc(FRecNo);
  90.   if not ((FRangeEnd = reCount) and (FRecNo >= FRangeEndCount)) then
  91.     if Assigned(FOnNext) then FOnNext(Self);
  92. end;
  93.  
  94. procedure TfrDataSet.Prior;
  95. begin
  96.   Dec(FRecNo);
  97.   if Assigned(FOnPrior) then FOnPrior(Self);
  98. end;
  99.  
  100. function TfrDataSet.Eof: Boolean;
  101. begin
  102.   Result := False;
  103.   if (FRangeEnd = reCount) and (FRecNo >= FRangeEndCount) then Result := True;
  104.   if Assigned(FOnCheckEOF) then FOnCheckEOF(Self, Result);
  105. end;
  106.  
  107.  
  108. end.
  109.