mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-05-01 23:03:41 +02:00
158 lines
3.2 KiB
ObjectPascal
158 lines
3.2 KiB
ObjectPascal
|
|
{*****************************************}
|
|
{ }
|
|
{ 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.
|