1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157
|
{*****************************************}
{ }
{ FastReport v2.3 }
{ Report dataset }
{ }
{ Copyright (c) 1998-99 by Tzyganenko A. }
{ }
{*****************************************}
unit LR_DSet;
interface
{$I LR_Vers.inc}
uses
SysUtils, Classes;
type
TRangeBegin = (rbFirst, rbCurrent);
TRangeEnd = (reLast, reCurrent, reCount);
TCheckEOFEvent = procedure(Sender: TObject; var Eof: Boolean) of object;
{ TfrDataset }
TfrDataset = class(TComponent)
protected
FRangeBegin: TRangeBegin;
FRangeEnd: TRangeEnd;
FRangeEndCount: Integer;
FOnFirst, FOnNext, FOnLast: TNotifyEvent;
FOnCheckEOF: TCheckEOFEvent;
FRecNo: Integer;
procedure DoCheckEOF(var Eof: Boolean); virtual;
procedure DoFirst; virtual;
procedure DoNext; virtual;
public
constructor Create(AOwner: TComponent); override;
procedure Init; virtual;
procedure Exit; virtual;
procedure First; virtual;
procedure Next; virtual;
procedure Refresh; virtual;
function GetBookMark : Pointer; virtual;
procedure GotoBookMark({%H-}BM : Pointer); virtual;
procedure FreeBookMark({%H-}BM : Pointer); virtual;
procedure DisableControls; virtual;
procedure EnableControls; virtual;
function Eof: Boolean; virtual;
property RangeBegin: TRangeBegin read FRangeBegin write FRangeBegin default rbFirst;
property RangeEnd: TRangeEnd read FRangeEnd write FRangeEnd default reLast;
property RangeEndCount: Integer read FRangeEndCount write FRangeEndCount default 0;
property RecNo: Integer read FRecNo;
property OnCheckEOF: TCheckEOFEvent read FOnCheckEOF write FOnCheckEOF;
property OnFirst: TNotifyEvent read FOnFirst write FOnFirst;
property OnNext: TNotifyEvent read FOnNext write FOnNext;
end;
TfrUserDataset = class(TfrDataset)
published
property RangeBegin;
property RangeEnd;
property RangeEndCount;
property OnCheckEOF;
property OnFirst;
property OnNext;
end;
implementation
procedure TfrDataset.DoCheckEOF(var Eof: Boolean);
begin
if Assigned(FOnCheckEOF) then
FOnCheckEOF(Self, Eof);
end;
procedure TfrDataset.DoFirst;
begin
if Assigned(FOnFirst) then
FOnFirst(Self);
end;
procedure TfrDataset.DoNext;
begin
if Assigned(FOnNext) then
FOnNext(Self);
end;
constructor TfrDataSet.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
RangeBegin := rbFirst;
RangeEnd := reLast;
end;
procedure TfrDataSet.Init;
begin
end;
procedure TfrDataSet.Exit;
begin
end;
procedure TfrDataSet.First;
begin
FRecNo := 0;
DoFirst;
end;
procedure TfrDataSet.Next;
begin
Inc(FRecNo);
DoNext;
end;
procedure TfrDataset.Refresh;
begin
end;
function TfrDataset.GetBookMark: Pointer;
begin
Result:=nil;
end;
procedure TfrDataset.GotoBookMark(BM: Pointer);
begin
end;
procedure TfrDataset.FreeBookMark(BM: Pointer);
begin
end;
procedure TfrDataset.DisableControls;
begin
end;
procedure TfrDataset.EnableControls;
begin
end;
function TfrDataSet.Eof: Boolean;
begin
Result := False;
if (FRangeEnd = reCount) and (FRecNo >= FRangeEndCount) then
Result := True;
DoCheckEOF(Result);
end;
end.
|