mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-09-05 15:20:38 +02:00
LazReport, Code cleanup/optimizations for LazReport, from Luiz issue #21278
git-svn-id: trunk@36406 -
This commit is contained in:
parent
2d860718f1
commit
6c336b7fdd
2
.gitattributes
vendored
2
.gitattributes
vendored
@ -1669,7 +1669,7 @@ components/lazreport/source/lr_btyp.lfm svneol=native#text/plain
|
||||
components/lazreport/source/lr_btyp.pas svneol=native#text/pascal
|
||||
components/lazreport/source/lr_chbox.pas svneol=native#text/pascal
|
||||
components/lazreport/source/lr_checkbox.lrs svneol=native#text/pascal
|
||||
components/lazreport/source/lr_class.pas -text svneol=native#text/pascal
|
||||
components/lazreport/source/lr_class.pas svneol=native#text/pascal
|
||||
components/lazreport/source/lr_color.pas svneol=native#text/pascal
|
||||
components/lazreport/source/lr_const.pas svneol=native#text/pascal
|
||||
components/lazreport/source/lr_ctrls.pas svneol=native#text/pascal
|
||||
|
@ -16,7 +16,7 @@ interface
|
||||
|
||||
uses
|
||||
SysUtils, {$IFDEF UNIX}CLocale,{$ENDIF} Classes, MaskUtils, Controls, FileUtil,
|
||||
Forms, {ComCtrls,} Dialogs, Menus, Variants, DB, Graphics, Printers, osPrinters,
|
||||
Forms, {ComCtrls,} Dialogs, Menus, Variants, DB, Graphics, Printers, osPrinters,
|
||||
DOM, XMLRead, XMLConf, LCLType, LCLIntf, TypInfo, LCLProc, LR_View, LR_Pars,
|
||||
LR_Intrp, LR_DSet, LR_DBSet, LR_DBRel, LR_Const;
|
||||
|
||||
@ -357,7 +357,7 @@ type
|
||||
function MinHeight: Integer; override;
|
||||
function RemainHeight: Integer; override;
|
||||
procedure GetBlob(b: TfrTField); override;
|
||||
procedure FontChange(Sender: TObject);
|
||||
procedure FontChange(Sender: TObject);
|
||||
procedure ResetLastValue; override;
|
||||
|
||||
property IsLastValueSet: boolean read GetIsLastValueSet write SetIsLastValueSet;
|
||||
@ -459,7 +459,7 @@ type
|
||||
procedure LoadFromXML(XML: TLrXMLConfig; const Path: String); override;
|
||||
procedure SaveToStream(Stream: TStream); override;
|
||||
procedure SaveToXML(XML: TLrXMLConfig; const Path: String); override;
|
||||
procedure DefinePopupMenu({%H-}Popup: TPopupMenu); override;
|
||||
procedure DefinePopupMenu({%H-}Popup: TPopupMenu); override;
|
||||
end;
|
||||
|
||||
{ TfrPictureView }
|
||||
@ -511,7 +511,7 @@ type
|
||||
constructor Create; override;
|
||||
|
||||
procedure Draw(aCanvas: TCanvas); override;
|
||||
procedure DefinePopupMenu({%H-}Popup: TPopupMenu); override;
|
||||
procedure DefinePopupMenu({%H-}Popup: TPopupMenu); override;
|
||||
function GetClipRgn(rt: TfrRgnType): HRGN; override;
|
||||
function PointInView(aX,aY: Integer): Boolean; override;
|
||||
|
||||
@ -568,7 +568,7 @@ type
|
||||
procedure DrawCrossCell(Parnt: TfrBand; CurX: Integer);
|
||||
procedure DrawCross;
|
||||
function CheckPageBreak(ay, ady: Integer; PBreak: Boolean): Boolean;
|
||||
procedure CheckNextColumn;
|
||||
procedure CheckNextColumn;
|
||||
procedure DrawPageBreak;
|
||||
function HasCross: Boolean;
|
||||
function DoCalcHeight: Integer;
|
||||
@ -703,7 +703,7 @@ type
|
||||
procedure ShowBandByType(bt: TfrBandType);
|
||||
procedure NewPage;
|
||||
procedure NewColumn(Band: TfrBand);
|
||||
procedure NextColumn({%H-}Band: TFrBand);
|
||||
procedure NextColumn({%H-}Band: TFrBand);
|
||||
function RowsLayout: boolean;
|
||||
procedure StartColumn;
|
||||
procedure StartRowsLayoutNonDataBand(Band: TfrBand);
|
||||
@ -836,7 +836,7 @@ type
|
||||
Lines: TFpList;
|
||||
procedure ClearLines;
|
||||
procedure Setup; virtual;
|
||||
function AddData({x, y: Integer;} view: TfrView): pointer; virtual;
|
||||
function AddData({x, y: Integer;} view: TfrView): pointer; virtual;
|
||||
procedure NewRec(View: TfrView; const AText:string; var P:Pointer); virtual;
|
||||
procedure AddRec(ALineIndex: Integer; ARec: Pointer); virtual;
|
||||
function GetviewText(View:TfrView): string; virtual;
|
||||
@ -848,8 +848,8 @@ type
|
||||
procedure OnEndDoc; virtual;
|
||||
procedure OnBeginPage; virtual;
|
||||
procedure OnEndPage; virtual;
|
||||
procedure OnData({%H-}x, {%H-}y: Integer; {%H-}View: TfrView); virtual;
|
||||
procedure OnText({%H-}x, {%H-}y: Integer; const {%H-}text: String; {%H-}View: TfrView); virtual;
|
||||
procedure OnData({%H-}x, {%H-}y: Integer; {%H-}View: TfrView); virtual;
|
||||
procedure OnText({%H-}x, {%H-}y: Integer; const {%H-}text: String; {%H-}View: TfrView); virtual;
|
||||
|
||||
property BandTypes: TfrBandTypes read FBandTypes write FBandTypes;
|
||||
property UseProgressbar: boolean read FUseProgressBar write FUseProgressBar;
|
||||
@ -1079,7 +1079,7 @@ type
|
||||
|
||||
TfrObjEditorForm = class(TForm)
|
||||
public
|
||||
procedure ShowEditor({%H-}t: TfrView); virtual;
|
||||
procedure ShowEditor({%H-}t: TfrView); virtual;
|
||||
end;
|
||||
|
||||
TfrFunctionDescription = class(TObject)
|
||||
@ -1112,8 +1112,8 @@ type
|
||||
TfrCompressor = class(TObject)
|
||||
public
|
||||
Enabled: Boolean;
|
||||
procedure Compress({%H-}StreamIn, {%H-}StreamOut: TStream); virtual;
|
||||
procedure DeCompress({%H-}StreamIn, {%H-}StreamOut: TStream); virtual;
|
||||
procedure Compress({%H-}StreamIn, {%H-}StreamOut: TStream); virtual;
|
||||
procedure DeCompress({%H-}StreamIn, {%H-}StreamOut: TStream); virtual;
|
||||
end;
|
||||
|
||||
|
||||
@ -1588,7 +1588,7 @@ begin
|
||||
fFrameWidth := 1;
|
||||
fFrameColor := clBlack;
|
||||
fFillColor := clNone;
|
||||
fFormat := 2*256 + Ord(DefaultFormatSettings.DecimalSeparator);
|
||||
fFormat := 2*256 + Ord(DefaultFormatSettings.DecimalSeparator);
|
||||
BaseName := 'View';
|
||||
Visible := True;
|
||||
StreamMode := smDesigning;
|
||||
@ -1880,7 +1880,7 @@ begin
|
||||
Read(dy, 4);
|
||||
Read(Flags, 2);
|
||||
|
||||
Read(S{%H-}, SizeOf(S)); fFrameWidth := S;
|
||||
Read(S{%H-}, SizeOf(S)); fFrameWidth := S;
|
||||
Read(fFrameColor, SizeOf(fFrameColor));
|
||||
Read(fFrames,SizeOf(fFrames));
|
||||
Read(fFrameStyle, SizeOf(fFrameStyle));
|
||||
@ -1897,12 +1897,12 @@ begin
|
||||
if (frVersion >= 23) and (StreamMode = smDesigning) then
|
||||
begin
|
||||
ReadMemo(Stream, Script);
|
||||
Read(wb{%H-},2);
|
||||
Read(wb{%H-},2);
|
||||
Visible:=(Wb<>0);
|
||||
end;
|
||||
|
||||
if (frVersion >= 25) then begin
|
||||
Read(I{%H-}, 4);
|
||||
Read(I{%H-}, 4);
|
||||
ParentBandType := TfrBandType(I);
|
||||
end;
|
||||
|
||||
@ -2444,7 +2444,7 @@ var
|
||||
i := 1;
|
||||
repeat
|
||||
while (i < Length(s)) and (s[i] <> '[') do Inc(i);
|
||||
s1 := GetBrackedVariable(s, i, j{%H-});
|
||||
s1 := GetBrackedVariable(s, i, j{%H-});
|
||||
if i <> j then
|
||||
begin
|
||||
Delete(s, i, j - i + 1);
|
||||
@ -2767,7 +2767,7 @@ var
|
||||
aw: Integer;
|
||||
{$ENDIF}
|
||||
n, nw, w, curx: Integer;
|
||||
//ParaEnd: Boolean;
|
||||
//ParaEnd: Boolean;
|
||||
Ts: TTextStyle;
|
||||
begin
|
||||
if not Streaming and (cury + th < DR.Bottom) then
|
||||
@ -2775,13 +2775,13 @@ var
|
||||
n := Length(St);
|
||||
w := Ord(St[n - 1]) * 256 + Ord(St[n]);
|
||||
SetLength(St, n - 2);
|
||||
//ParaEnd := True;
|
||||
//ParaEnd := True;
|
||||
if Length(St) > 0 then
|
||||
begin
|
||||
if St[Length(St)] = #1 then
|
||||
SetLength(St, Length(St) - 1)
|
||||
else
|
||||
//ParaEnd := False;
|
||||
//ParaEnd := False;
|
||||
end;
|
||||
|
||||
// handle any alignment with same code
|
||||
@ -2860,7 +2860,7 @@ var
|
||||
|
||||
procedure OutLine(str: String);
|
||||
var
|
||||
cury: Integer;
|
||||
cury: Integer;
|
||||
begin
|
||||
SetLength(str, Length(str) - 2);
|
||||
if str[Length(str)] = #1 then
|
||||
@ -3248,9 +3248,9 @@ begin
|
||||
Font.Name := ReadString(Stream);
|
||||
with Stream do
|
||||
begin
|
||||
Read({%H-}i, 4);
|
||||
Read({%H-}i, 4);
|
||||
Font.Size := i;
|
||||
Read({%H-}w, 2);
|
||||
Read({%H-}w, 2);
|
||||
Font.Style := frSetFontStyle(w);
|
||||
Read(i, 4);
|
||||
Font.Color := i;
|
||||
@ -3265,9 +3265,9 @@ begin
|
||||
end;
|
||||
|
||||
|
||||
Read({%H-}TmpAlign,SizeOf(TmpAlign));
|
||||
Read({%H-}TmpLayout,SizeOf(TmpLayout));
|
||||
Read({%H-}tmpAngle,SizeOf(tmpAngle));
|
||||
Read({%H-}TmpAlign,SizeOf(TmpAlign));
|
||||
Read({%H-}TmpLayout,SizeOf(TmpLayout));
|
||||
Read({%H-}tmpAngle,SizeOf(tmpAngle));
|
||||
|
||||
BeginUpdate;
|
||||
Alignment := tmpAlign;
|
||||
@ -3381,7 +3381,7 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TfrMemoView.FontChange(Sender: TObject);
|
||||
procedure TfrMemoView.FontChange(Sender: TObject);
|
||||
begin
|
||||
AfterChange;
|
||||
end;
|
||||
@ -3688,7 +3688,7 @@ end;
|
||||
|
||||
procedure TfrBandView.Draw(aCanvas: TCanvas);
|
||||
var
|
||||
//St : String;
|
||||
//St : String;
|
||||
R : TRect;
|
||||
begin
|
||||
fFrameWidth := 1;
|
||||
@ -3747,7 +3747,7 @@ begin
|
||||
Pen.Color := clBlack;
|
||||
MoveTo(r.Right-1, r.Top);
|
||||
LineTo(r.Right-1, r.Bottom);
|
||||
//st:=frBandNames[BandType];
|
||||
//st:=frBandNames[BandType];
|
||||
Font.Orientation := 0;
|
||||
Brush.Color:=clBtnFace;
|
||||
TextOut(r.left+5, r.top+1, frBandNames[BandType]);
|
||||
@ -3775,7 +3775,7 @@ end;
|
||||
function TfrBandView.GetClipRgn(rt: TfrRgnType): HRGN;
|
||||
var
|
||||
R,R1,R2: HRGN;
|
||||
// RR : LongInt;
|
||||
// RR : LongInt;
|
||||
begin
|
||||
if not ShowBandTitles then
|
||||
begin
|
||||
@ -3793,7 +3793,7 @@ begin
|
||||
|
||||
R2:=CreateRectRgn(0,0,0,0);
|
||||
|
||||
{RR:=}CombineRgn(R2, R, R1, RGN_OR);
|
||||
{RR:=}CombineRgn(R2, R, R1, RGN_OR);
|
||||
Result:=R2;
|
||||
|
||||
|
||||
@ -4102,13 +4102,13 @@ var
|
||||
w, h, w1, h1: Integer;
|
||||
|
||||
procedure PrintBitmap(DestRect: TRect; Bitmap: TBitmap);
|
||||
{
|
||||
{
|
||||
var
|
||||
BitmapHeader: pBitmapInfo;
|
||||
BitmapImage: Pointer;
|
||||
HeaderSize: DWord;
|
||||
ImageSize: DWord;
|
||||
}
|
||||
}
|
||||
begin
|
||||
aCanvas.StretchDraw(DestRect, Bitmap);
|
||||
//**
|
||||
@ -4231,7 +4231,7 @@ begin
|
||||
SetLength(S, Stream.Size*2);
|
||||
c := 1;
|
||||
for i:=1 to Stream.Size div SizeOf(Buf) do begin
|
||||
Stream.Read(Buf{%H-}, SizeOf(buf));
|
||||
Stream.Read(Buf{%H-}, SizeOf(buf));
|
||||
WriteBuf(SizeOf(Buf));
|
||||
end;
|
||||
i := Stream.Size mod SizeOf(Buf);
|
||||
@ -4263,12 +4263,12 @@ procedure TfrPictureView.LoadFromStream(Stream: TStream);
|
||||
var
|
||||
b: Byte;
|
||||
n: Integer;
|
||||
//AGraphicClass: TGraphicClass;
|
||||
//AGraphicClass: TGraphicClass;
|
||||
Graphic: TGraphic;
|
||||
//Ext: string;
|
||||
//Ext: string;
|
||||
begin
|
||||
inherited LoadFromStream(Stream);
|
||||
Stream.Read({%H-}b, 1);
|
||||
Stream.Read({%H-}b, 1);
|
||||
|
||||
if b=pkAny then
|
||||
Graphic := ExtensionToGraphic(Stream.ReadAnsiString)
|
||||
@ -4277,7 +4277,7 @@ begin
|
||||
|
||||
FSharedName := Stream.ReadAnsiString;
|
||||
|
||||
Stream.Read({%H-}n, 4);
|
||||
Stream.Read({%H-}n, 4);
|
||||
|
||||
Picture.Graphic := Graphic;
|
||||
if Graphic <> nil then
|
||||
@ -4372,7 +4372,7 @@ end;
|
||||
procedure TfrPictureView.SaveToXML(XML: TLrXMLConfig; const Path: String);
|
||||
var
|
||||
b: Byte;
|
||||
//n, o: Integer;
|
||||
//n, o: Integer;
|
||||
m: TMemoryStream;
|
||||
begin
|
||||
inherited SaveToXML(XML, Path);
|
||||
@ -4656,7 +4656,7 @@ end;
|
||||
|
||||
function TfrLineView.PointInView(aX, aY: Integer): Boolean;
|
||||
var
|
||||
bx, by, bx1, by1, w1: Integer;
|
||||
bx, by, bx1, by1, w1: Integer;
|
||||
begin
|
||||
if FrameStyle=frsDouble then
|
||||
w1 := Round(FrameWidth * 1.5)
|
||||
@ -5170,7 +5170,7 @@ begin
|
||||
{$ENDIF}
|
||||
end;
|
||||
|
||||
procedure TfrBand.CheckNextColumn;
|
||||
procedure TfrBand.CheckNextColumn;
|
||||
var
|
||||
BandHeight: Integer;
|
||||
begin
|
||||
@ -6856,13 +6856,13 @@ begin
|
||||
Read(pgSize, 4);
|
||||
Read(dx, 4); //Width
|
||||
Read(dy, 4); //Height
|
||||
Read({%H-}Rc, Sizeof(Rc));
|
||||
Read({%H-}Rc, Sizeof(Rc));
|
||||
Margins.AsRect:=Rc;
|
||||
Read({%H-}b, 1);
|
||||
Read({%H-}b, 1);
|
||||
Orientation:=TPrinterOrientation(b);
|
||||
if frVersion < 23 then
|
||||
Read({%H-}s[1], 6);
|
||||
Read({%H-}Bool, 2);
|
||||
Read({%H-}s[1], 6);
|
||||
Read({%H-}Bool, 2);
|
||||
PrintToPrevPage:=Bool;
|
||||
Read(Bool, 2);
|
||||
UseMargins:=Bool;
|
||||
@ -7050,7 +7050,7 @@ begin
|
||||
AddObject(b, '');
|
||||
t.LoadFromStream(Stream);
|
||||
if AnsiUpperCase(s) = 'TFRFRAMEDMEMOVIEW' then
|
||||
Stream.Read({%H-}buf[1], 8);
|
||||
Stream.Read({%H-}buf[1], 8);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
@ -7290,7 +7290,7 @@ begin
|
||||
Stream.Read(frVersion, 1);
|
||||
while Stream.Position < Stream.Size do
|
||||
begin
|
||||
Stream.Read({%H-}b, 1);
|
||||
Stream.Read({%H-}b, 1);
|
||||
if b = gtAddIn then
|
||||
s := ReadString(Stream) else
|
||||
s := '';
|
||||
@ -7320,7 +7320,7 @@ begin
|
||||
Stream.Read(frVersion, 1);
|
||||
while Stream.Position < Stream.Size do
|
||||
begin
|
||||
Stream.Read({%H-}b, 1);
|
||||
Stream.Read({%H-}b, 1);
|
||||
if b = gtAddIn then
|
||||
s := ReadString(Stream)
|
||||
else
|
||||
@ -7453,7 +7453,7 @@ var
|
||||
|
||||
begin
|
||||
Clear;
|
||||
AStream.Read({%H-}compr, 1);
|
||||
AStream.Read({%H-}compr, 1);
|
||||
if not (compr in [0, 1, 255]) then
|
||||
begin
|
||||
AStream.Seek(0, soFromBeginning);
|
||||
@ -7473,17 +7473,17 @@ var
|
||||
|
||||
begin
|
||||
if AReadHeader then begin
|
||||
AStream.Read({%H-}compr, 1);
|
||||
AStream.Read({%H-}compr, 1);
|
||||
if not (compr in [0, 1, 255]) then
|
||||
begin
|
||||
Exit;
|
||||
end;
|
||||
end;
|
||||
Parent.SetPrinterTo(frReadString(AStream));
|
||||
AStream.Read({%H-}c, 4);
|
||||
AStream.Read({%H-}c, 4);
|
||||
i := 0;
|
||||
repeat
|
||||
AStream.Read({%H-}o, 4);
|
||||
AStream.Read({%H-}o, 4);
|
||||
GetMem(p, SizeOf(TfrPageInfo));
|
||||
FillChar(p^, SizeOf(TfrPageInfo), #0);
|
||||
FPages.Add(p);
|
||||
@ -7492,7 +7492,7 @@ begin
|
||||
AStream.Read(pgSize, 2);
|
||||
AStream.Read(pgWidth, 4);
|
||||
AStream.Read(pgHeight, 4);
|
||||
AStream.Read({%H-}b, 1);
|
||||
AStream.Read({%H-}b, 1);
|
||||
pgOr := TPrinterOrientation(b);
|
||||
AStream.Read(b, 1);
|
||||
pgMargins := Boolean(b);
|
||||
@ -7640,7 +7640,7 @@ var
|
||||
var
|
||||
n: Byte;
|
||||
begin
|
||||
Stream.Read({%H-}n, 1);
|
||||
Stream.Read({%H-}n, 1);
|
||||
SetLength(Result, n);
|
||||
Stream.Read(Result[1], n);
|
||||
end;
|
||||
@ -7650,7 +7650,7 @@ begin
|
||||
FItems.Sorted := False;
|
||||
with Stream do
|
||||
begin
|
||||
ReadBuffer({%H-}n, SizeOf(n));
|
||||
ReadBuffer({%H-}n, SizeOf(n));
|
||||
for i := 0 to n - 1 do
|
||||
begin
|
||||
j := AddValue;
|
||||
@ -7811,7 +7811,7 @@ procedure TfrReport.ReadBinaryData(Stream: TStream);
|
||||
var
|
||||
n: Integer;
|
||||
begin
|
||||
Stream.Read({%H-}n, 4); // version
|
||||
Stream.Read({%H-}n, 4); // version
|
||||
if FStoreInDFM then
|
||||
begin
|
||||
Stream.Read(n, 4);
|
||||
@ -8431,8 +8431,8 @@ begin
|
||||
if Load then
|
||||
begin
|
||||
ReadMemo(Stream, fm);
|
||||
Stream.Read(pos{%H-}, 4);
|
||||
Stream.Read({%H-}b, 1);
|
||||
Stream.Read(pos{%H-}, 4);
|
||||
Stream.Read({%H-}b, 1);
|
||||
if b <> 0 then
|
||||
fb.LoadFromStream(Stream);
|
||||
Stream.Position := pos;
|
||||
@ -8740,22 +8740,21 @@ procedure TfrReport.FillQueryParams;
|
||||
var
|
||||
i, j: Integer;
|
||||
t: TfrView;
|
||||
procedure PrepareDS(ds: TfrDataSet);
|
||||
procedure PrepareDS(ds: TComponent);
|
||||
begin
|
||||
if (ds <> nil) and (ds is TfrDBDataSet) then
|
||||
frDataManager.PrepareDataSet(TfrTDataSet((ds as TfrDBDataSet).GetDataSet));
|
||||
if ds is TfrDBDataSet then
|
||||
frDataManager.PrepareDataSet(TfrDBDataSet(ds).GetDataSet);
|
||||
end;
|
||||
begin
|
||||
if frDataManager = nil then Exit;
|
||||
frDataManager.BeforePreparing;
|
||||
if Dataset <> nil then
|
||||
PrepareDS(DataSet);
|
||||
PrepareDS(DataSet);
|
||||
for i := 0 to Pages.Count - 1 do
|
||||
for j := 0 to Pages[i].Objects.Count-1 do
|
||||
begin
|
||||
t :=TfrView(Pages[i].Objects[j]);
|
||||
if t is TfrBandView then
|
||||
PrepareDS(frFindComponent(CurReport.Owner, TfrBandView(t).DataSet) as TfrDataSet);
|
||||
PrepareDS(frFindComponent(CurReport.Owner, TfrBandView(t).DataSet));
|
||||
end;
|
||||
frDataManager.AfterPreparing;
|
||||
end;
|
||||
@ -9421,23 +9420,23 @@ begin
|
||||
FOnSetup(Self);
|
||||
end;
|
||||
|
||||
function TfrExportFilter.AddData({x, y: Integer;} view: TfrView):pointer;
|
||||
function TfrExportFilter.AddData({x, y: Integer;} view: TfrView):pointer;
|
||||
var
|
||||
p: PfrTextRec;
|
||||
s: string;
|
||||
begin
|
||||
result := nil;
|
||||
|
||||
if (view = nil) or not (view.ParentBandType in BandTypes) then
|
||||
if (view = nil) or not (view.ParentBandType in BandTypes) then
|
||||
exit;
|
||||
|
||||
if view.Flags and flStartRecord<>0 then
|
||||
if view.Flags and flStartRecord<>0 then
|
||||
Inc(FLineIndex);
|
||||
|
||||
if CheckView(view) then
|
||||
if CheckView(view) then
|
||||
begin
|
||||
s := GetViewText(view);
|
||||
NewRec(view, s, {%H-}p);
|
||||
s := GetViewText(view);
|
||||
NewRec(view, s, {%H-}p);
|
||||
AddRec(FLineIndex, p);
|
||||
result := p;
|
||||
end;
|
||||
|
@ -131,35 +131,49 @@ begin
|
||||
end;
|
||||
|
||||
function TfrDBDataSet.GetBookMark: Pointer;
|
||||
var
|
||||
ds: TDataset;
|
||||
begin
|
||||
Result:=inherited GetBookMark;
|
||||
|
||||
if Assigned(Dataset) then
|
||||
Result:=Dataset.GetBookmark;
|
||||
ds := DataSet;
|
||||
if Assigned(ds) then
|
||||
Result:=ds.GetBookmark;
|
||||
end;
|
||||
|
||||
procedure TfrDBDataSet.GotoBookMark(BM: Pointer);
|
||||
var
|
||||
ds: TDataset;
|
||||
begin
|
||||
if Assigned(Dataset) then
|
||||
Dataset.GotoBookmark(BM);
|
||||
ds := DataSet;
|
||||
if Assigned(ds) then
|
||||
ds.GotoBookmark(BM);
|
||||
end;
|
||||
|
||||
procedure TfrDBDataSet.FreeBookMark(BM: Pointer);
|
||||
var
|
||||
ds: TDataset;
|
||||
begin
|
||||
if Assigned(Dataset) and Assigned(BM) then
|
||||
Dataset.FreeBookmark(BM);
|
||||
ds := DataSet;
|
||||
if Assigned(ds) and Assigned(BM) then
|
||||
ds.FreeBookmark(BM);
|
||||
end;
|
||||
|
||||
procedure TfrDBDataSet.DisableControls;
|
||||
var
|
||||
ds: TDataset;
|
||||
begin
|
||||
if Assigned(Dataset) then
|
||||
Dataset.DisableControls;
|
||||
ds := DataSet;
|
||||
if Assigned(ds) then
|
||||
ds.DisableControls;
|
||||
end;
|
||||
|
||||
procedure TfrDBDataSet.EnableControls;
|
||||
var
|
||||
ds: TDataset;
|
||||
begin
|
||||
if Assigned(Dataset) then
|
||||
Dataset.EnableControls;
|
||||
ds := DataSet;
|
||||
if Assigned(ds) then
|
||||
ds.EnableControls;
|
||||
end;
|
||||
|
||||
procedure TfrDBDataSet.Init;
|
||||
@ -171,12 +185,15 @@ begin
|
||||
end;
|
||||
|
||||
procedure TfrDBDataSet.Exit;
|
||||
var
|
||||
ds: TDataset;
|
||||
begin
|
||||
if FBookMark <> frEmptyBookmark then
|
||||
begin
|
||||
ds := GetDataSet;
|
||||
if (FRangeBegin = rbCurrent) or (FRangeEnd = reCurrent) then
|
||||
frGotoBookmark(TfrTDataSet(GetDataSet), FBookmark);
|
||||
frFreeBookmark(TfrTDataSet(GetDataSet), FBookmark);
|
||||
frGotoBookmark(TfrTDataSet(ds), FBookmark);
|
||||
frFreeBookmark(TfrTDataSet(ds), FBookmark);
|
||||
end;
|
||||
FBookMark := frEmptyBookmark;
|
||||
Close;
|
||||
@ -195,24 +212,29 @@ end;
|
||||
procedure TfrDBDataSet.Next;
|
||||
var
|
||||
b: TfrBookmark;
|
||||
ds: TDataset;
|
||||
begin
|
||||
FEof := False;
|
||||
ds := GetDataSet;
|
||||
if FRangeEnd = reCurrent then
|
||||
begin
|
||||
b := frGetBookmark(GetDataSet);
|
||||
if frIsBookmarksEqual(GetDataSet, b, FBookmark) then
|
||||
b := frGetBookmark(TfrTDataSet(ds));
|
||||
if frIsBookmarksEqual(TfrTDataSet(ds), b, FBookmark) then
|
||||
FEof := True;
|
||||
frFreeBookmark(GetDataSet, b);
|
||||
frFreeBookmark(TfrTDataSet(ds), b);
|
||||
System.Exit;
|
||||
end;
|
||||
GetDataSet.Next;
|
||||
ds.Next;
|
||||
inherited Next;
|
||||
end;
|
||||
|
||||
procedure TfrDBDataSet.Refresh;
|
||||
var
|
||||
ds: TDataset;
|
||||
begin
|
||||
if GetDataset<>nil then
|
||||
GetDataset.Refresh;
|
||||
ds := GetDataSet;
|
||||
if ds<>nil then
|
||||
ds.Refresh;
|
||||
end;
|
||||
|
||||
function TfrDBDataSet.Eof: Boolean;
|
||||
|
@ -35,7 +35,7 @@ function frReadString2217(Stream: TStream): String;
|
||||
procedure frWriteString(Stream: TStream; s: String);
|
||||
procedure frEnableControls(c: Array of TControl; e: Boolean);
|
||||
function frControlAtPos(Win: TWinControl; p: TPoint): TControl;
|
||||
function frGetDataSet(ComplexName: String): TfrTDataSet;
|
||||
function frGetDataSet(const ComplexName: String): TfrTDataSet;
|
||||
procedure frGetDataSetAndField(ComplexName: String;
|
||||
var DataSet: TfrTDataSet; out Field: TfrTField);
|
||||
function frGetFontStyle(Style: TFontStyles): Integer;
|
||||
@ -308,26 +308,31 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
function frGetDataSet(ComplexName: String): TfrTDataSet;
|
||||
function frGetDataSet(const ComplexName: String): TfrTDataSet;
|
||||
var
|
||||
Component: TComponent;
|
||||
begin
|
||||
Result := nil;
|
||||
if not Assigned(frFindComponent(CurReport.Owner, ComplexName)) then exit;
|
||||
if frFindComponent(CurReport.Owner, ComplexName) is TDataSet then
|
||||
Result := TfrTDataSet(frFindComponent(CurReport.Owner, ComplexName))
|
||||
Component := frFindComponent(CurReport.Owner, ComplexName);
|
||||
if Assigned(Component) then
|
||||
begin
|
||||
if Component is TDataSet then
|
||||
Result := TfrTDataSet(Component)
|
||||
else if Component is TDataSource then
|
||||
Result := TfrTDataSet(TDataSource(Component).DataSet);
|
||||
end
|
||||
else
|
||||
if frFindComponent(CurReport.Owner, ComplexName) is TDataSource then
|
||||
Result := TfrTDataSet(TDataSource(frFindComponent(CurReport.Owner, ComplexName)).DataSet);
|
||||
Result := nil;
|
||||
end;
|
||||
|
||||
procedure frGetDataSetAndField(ComplexName: String; var DataSet: TfrTDataSet;
|
||||
out Field: TfrTField);
|
||||
var
|
||||
n: Integer;
|
||||
f: TComponent;
|
||||
Owner, Component: TComponent;
|
||||
s1, s2, s3, s4: String;
|
||||
begin
|
||||
Field := nil;
|
||||
f := CurReport.Owner;
|
||||
Owner := CurReport.Owner;
|
||||
n := Pos('.', ComplexName);
|
||||
if n <> 0 then
|
||||
begin
|
||||
@ -337,20 +342,20 @@ begin
|
||||
begin
|
||||
s3 := Copy(s2, Pos('.', s2) + 1, 255);
|
||||
s2 := Copy(s2, 1, Pos('.', s2) - 1);
|
||||
f:=FindGlobalComponent(S1);
|
||||
if f <> nil then
|
||||
Owner:=FindGlobalComponent(S1);
|
||||
if Owner <> nil then
|
||||
begin
|
||||
n:=Pos('.', S3); //test for frame name
|
||||
if n>0 then //if frame name present
|
||||
begin
|
||||
S4:=Copy(S3, 1, n-1);
|
||||
Delete(S3, 1, n);
|
||||
f:=F.FindComponent(S2);
|
||||
if Assigned(F)then
|
||||
DataSet := TfrTDataSet(f.FindComponent(s4));
|
||||
Owner:=Owner.FindComponent(S2);
|
||||
if Assigned(Owner)then
|
||||
DataSet := TfrTDataSet(Owner.FindComponent(s4));
|
||||
end
|
||||
else
|
||||
DataSet := TfrTDataSet(f.FindComponent(s2));
|
||||
DataSet := TfrTDataSet(Owner.FindComponent(s2));
|
||||
RemoveQuotes(s3);
|
||||
if DataSet <> nil then
|
||||
Field := TfrTField(DataSet.FindField(s3));
|
||||
@ -358,12 +363,13 @@ begin
|
||||
end
|
||||
else
|
||||
begin
|
||||
if Assigned(frFindComponent(f, s1)) then
|
||||
Component := frFindComponent(Owner, s1);
|
||||
if Assigned(Component) then
|
||||
begin
|
||||
if TfrTDataSet(frFindComponent(f, s1)) is TDataSet then
|
||||
DataSet := TfrTDataSet(frFindComponent(f, s1))
|
||||
else if frFindComponent(f, s1) is TDataSource then
|
||||
DataSet := TfrTDataSet(TDataSource(frFindComponent(f, s1)).DataSet);
|
||||
if Component is TDataSet then
|
||||
DataSet := TfrTDataSet(Component)
|
||||
else if Component is TDataSource then
|
||||
DataSet := TfrTDataSet(TDataSource(Component).DataSet);
|
||||
end;
|
||||
RemoveQuotes(s2);
|
||||
if DataSet <> nil then
|
||||
|
Loading…
Reference in New Issue
Block a user