📄 rm_class.pas
字号:
destructor Destroy; override;
procedure DefineProperties; override;
procedure PlaceControl(Form: TForm);
procedure Draw(Canvas: TCanvas); override;
end;
{ TRMRegionView }
TRMRegionView = class(TRMView)
private
protected
public
constructor Create; override;
destructor Destroy; override;
procedure BeforeMove(aPage: TRMPage; aKx, aKy: Integer);
procedure Draw(Canvas: TCanvas); override;
procedure DefineProperties; override;
end;
{ TRMStretcheable }
TRMStretcheable = class(TRMView)
private
protected
ActualHeight: Integer;
DrawMode: TRMDrawMode;
function CalcHeight: Integer; virtual; abstract;
function MinHeight: Integer; virtual; abstract;
function LostSpace: Integer; virtual; abstract;
function RemainHeight: Integer; virtual; abstract;
public
end;
{ TRMMemoView }
TRMMemoView = class(TRMStretcheable)
private
FFont: TFont;
FLastValue: string;
FWrapped: Boolean;
procedure P1Click(Sender: TObject);
procedure P2Click(Sender: TObject);
procedure P5Click(Sender: TObject);
procedure P6Click(Sender: TObject);
procedure P8Click(Sender: TObject);
procedure P9Click(Sender: TObject);
procedure P10Click(Sender: TObject);
procedure P11Click(Sender: TObject);
procedure SetFont(Value: TFont);
function GetAlignment: TRMAlignment;
procedure SetAlignment(value: TRMAlignment);
function GetLayout: TRMLayout;
procedure SetLayout(value: TRMLayout);
function GetUnderlines: Boolean;
procedure SetUnderlines(value: Boolean);
function GetHideZeros: Boolean;
procedure SetHideZeros(value: Boolean);
function GetWordWrap: Boolean;
procedure SetWordWrap(value: Boolean);
function GetAutoSize: Boolean;
procedure SetAutoSize(value: Boolean);
function GetTextOnly: Boolean;
procedure SetTextOnly(value: Boolean);
function GetSuppressRepeated: Boolean;
procedure SetSuppressRepeated(value: Boolean);
function GetRotation90: Boolean;
procedure SetRotation90(value: Boolean);
function GetWordBreak: Boolean;
procedure SetWordBreak(Value: Boolean);
protected
Streaming: Boolean;
TextHeight: Integer;
CurStrNo: Integer;
Exporting: Boolean;
procedure ExpandMemoVariables; virtual;
procedure AssignFont(Canvas: TCanvas);
procedure WrapMemo;
procedure ShowMemo;
procedure ShowUnderLines;
function CalcWidth(Memo: TStringList): Integer;
function CalcHeight: Integer; override;
function MinHeight: Integer; override;
function LostSpace: Integer; override;
function RemainHeight: Integer; override;
procedure GetBlob(b: TField); override;
procedure SetPropValue(Index: string; Value: Variant); override;
function GetPropValue(Index: string): Variant; override;
function DoMethod(const MethodName: string; Par1, Par2, Par3: Variant): Variant; override;
public
Alignment: Integer;
Highlight: TRMHighlightAttr;
HighlightStr: string;
LineSpacing, CharacterSpacing: integer;
constructor Create; override;
destructor Destroy; override;
procedure Draw(Canvas: TCanvas); override;
procedure StreamOut(Stream: TStream); override;
procedure ExportData; override;
procedure LoadFromStream(Stream: TStream); override;
procedure SaveToStream(Stream: TStream); override;
procedure DefinePopupMenu(Popup: TPopupMenu); override;
procedure DefineProperties; override;
procedure ShowEditor; override;
property Font: TFont read FFont write SetFont;
property PAlignment: TRMAlignment read GetAlignment write SetAlignment;
property PLayout: TRMLayout read GetLayout write SetLayout;
property PUnderlines: Boolean read GetUnderlines write SetUnderlines;
property PHideZeros: Boolean read GetHideZeros write SetHideZeros;
property PWordWrap: Boolean read GetWordWrap write SetWordWrap;
property PAutoSize: Boolean read GetAutoSize write SetAutoSize;
property PTextOnly: Boolean read GetTextOnly write SetTextOnly;
property PSuppressRepeated: Boolean read GetSuppressRepeated write SetSuppressRepeated;
property PRotation90: Boolean read GetRotation90 write SetRotation90;
property PWordBreak: Boolean read GetWordBreak write SetWordBreak;
end;
{ TRMBandView }
TRMBandView = class(TRMView)
private
procedure P1Click(Sender: TObject);
procedure P2Click(Sender: TObject);
procedure P3Click(Sender: TObject);
procedure P4Click(Sender: TObject);
procedure P5Click(Sender: TObject);
procedure P6Click(Sender: TObject);
procedure P7Click(Sender: TObject);
procedure P8Click(Sender: TObject);
function GetBandType: TRMBandType;
procedure SetBandType(const Value: TRMBandType);
function GetRectangleWidth: Integer;
function GetBandNewPage: Boolean;
procedure SetBandNewPage(value: Boolean);
function GetPrintEmpty: Boolean;
procedure SetPrintEmpty(value: Boolean);
function GetBreaked: Boolean;
procedure SetBreaked(value: Boolean);
function GetOnFirstPage: Boolean;
procedure SetOnFirstPage(value: Boolean);
function GetOnLastPage: Boolean;
procedure SetOnLastPage(value: Boolean);
function GetRepeatHeader: Boolean;
procedure SetRepeatHeader(value: Boolean);
function GetPrintChildIfInvisible: Boolean;
procedure SetPrintChildIfInvisible(value: Boolean);
function GetAutoAppendBlank: Boolean;
procedure SetAutoAppendBlank(value: Boolean);
function GetPrintColFirst: Boolean;
procedure SetPrintColFirst(value: Boolean);
protected
procedure SetPropValue(Index: string; Value: Variant); override;
function GetPropValue(Index: string): Variant; override;
function DoMethod(const MethodName: string; Par1, Par2, Par3: Variant): Variant; override;
public
ChildBand, Master: string;
Columns: integer;
ColumnWidth: integer;
ColumnGap: integer;
NewColumnAfter: Integer;
LinesPerPage: Word;
RangeBegin, RangeEnd: Byte;
RangeEndCount: Integer;
constructor Create; override;
procedure Draw(Canvas: TCanvas); override;
procedure LoadFromStream(Stream: TStream); override;
procedure SaveToStream(Stream: TStream); override;
procedure DefinePopupMenu(Popup: TPopupMenu); override;
procedure DefineProperties; override;
function GetClipRgn(rt: TRMRgnType): HRGN; override;
property BandType: TRMBandType read GetBandType write SetBandType;
property DataSet: string read FormatStr write FormatStr;
property GroupCondition: string read FormatStr write FormatStr;
property PNewPageAfter: Boolean read GetBandNewPage write SetBandNewPage;
property PPrintIfSubsetEmpty: Boolean read GetPrintEmpty write SetPrintEmpty;
property PBreaked: Boolean read GetBreaked write SetBreaked;
property POnFirstPage: Boolean read GetOnFirstPage write SetOnFirstPage;
property POnLastPage: Boolean read GetOnLastPage write SetOnLastPage;
property PRepeatHeader: Boolean read GetRepeatHeader write SetRepeatHeader;
property PPrintChildIfInvisible: Boolean read GetPrintChildIfInvisible write SetPrintChildIfInvisible;
property PAutoAppendBlank: Boolean read GetAutoAppendBlank write SetAutoAppendBlank;
property PPrintColFirst: Boolean read GetPrintColFirst write SetPrintColFirst;
end;
{ TRMSubReportView }
TRMSubReportView = class(TRMView)
public
SubPage: Integer;
constructor Create; override;
procedure Draw(Canvas: TCanvas); override;
procedure LoadFromStream(Stream: TStream); override;
procedure SaveToStream(Stream: TStream); override;
procedure DefinePopupMenu(Popup: TPopupMenu); override;
end;
{ TRMPictureView }
TRMPictureView = class(TRMView)
private
procedure P1Click(Sender: TObject);
procedure P2Click(Sender: TObject);
function GetPictureCenter: Boolean;
procedure SetPictureCenter(value: Boolean);
function GetPictureRatio: Boolean;
procedure SetPictureRatio(value: Boolean);
protected
function GetViewCommon: string; override;
procedure SetPropValue(Index: string; Value: Variant); override;
function GetPropValue(Index: string): Variant; override;
function DoMethod(const MethodName: string; Par1, Par2, Par3: Variant): Variant; override;
procedure GetBlob(b: TField); override;
public
Picture: TPicture;
BlobType: Byte;
constructor Create; override;
destructor Destroy; override;
procedure Draw(Canvas: TCanvas); override;
procedure LoadFromStream(Stream: TStream); override;
procedure SaveToStream(Stream: TStream); override;
procedure DefinePopupMenu(Popup: TPopupMenu); override;
procedure DefineProperties; override;
procedure ShowEditor; override;
property PPictureCenter: Boolean read GetPictureCenter write SetPictureCenter;
property PPictureRatio: Boolean read GetPictureRatio write SetPictureRatio;
end;
{ TRMLineView }
TRMLineView = class(TRMStretcheable)
public
constructor Create; override;
procedure Draw(Canvas: TCanvas); override;
function CalcHeight: Integer; override;
function MinHeight: Integer; override;
function LostSpace: Integer; override;
function RemainHeight: Integer; override;
procedure DefineProperties; override;
end;
{ TRMCalcMemoView }
TRMCalcMemoView = class(TRMMemoView)
private
FValueIndex: Integer;
FValues: TStringList;
FAggrBandName: string;
FResetAfterPrint: Boolean;
FCalcType: TRMDBCalcType;
FFilter, FOPZFilter: string;
FValue: Double;
FResAssigned: Boolean;
FSum: Double;
FCount: integer;
FExpression: string;
function GetValue: Double;
procedure P2Click(Sender: TObject);
procedure ResetValues;
procedure AfterPrint;
function GetTotalCalc: Boolean;
procedure SetTotalCalc(aValue: Boolean);
function GetCalcNoVisible: Boolean;
procedure SetCalcNoVisible(aValue: Boolean);
protected
procedure SetPropValue(Index: string; Value: Variant); override;
function GetPropValue(Index: string): Variant; override;
procedure ExpandMemoVariables; override;
public
constructor Create; override;
destructor Destroy; override;
procedure DoAggregate;
procedure Reset;
procedure StreamOut(Stream: TStream); override;
procedure DefinePopupMenu(Popup: TPopupMenu); override;
procedure LoadFromStream(Stream: TStream); override;
procedure SaveToStream(Stream: TStream); override;
procedure DefineProperties; override;
property Expression: string read FExpression write FExpression;
property CalcType: TRMDBCalcType read FCalcType write FCalcType;
property Filter: string read FFilter write FFilter;
property ResetAfterPrint: Boolean read FResetAfterPrint write FResetAfterPrint;
property AggrBandName: string read FAggrBandName write FAggrBandName;
property PTotalCalc: Boolean read GetTotalCalc write SetTotalCalc;
property PCalcNoVisible: Boolean read GetCalcNoVisible write SetCalcNoVisible;
published
end;
{ TRMBand }
TRMBand = class(TObject)
private
FParentPage: TRMPage;
FBandView: TRMBandView;
FFlags: Word;
FNext, FPrev: TRMBand;
FNextGroup, FPrevGroup: TRMBand;
FFirstGroup, FLastGroup: TRMBand;
FChild: TRMBand;
AggrBand: TRMBand;
FSubIndex, FMaxY: Integer;
FEOFReached: Boolean;
FEOFArr: array[0..31] of Boolean;
FPositions: array[TRMDatasetPosition] of Integer;
FLastGroupValue: Variant;
FHeaderBand, FFooterBand, FDataBand, FLastBand: TRMBand;
FCount: Integer;
FValues: TRMVariables;
FDisableInit: Boolean;
FCalculatedHeight: Integer;
FCurColumn: Integer;
FSaveXAdjust, FSaveTop: Integer;
FSaveCury: Boolean;
FCallNewPage, FCallNewColumn: Integer;
FMaxColumns: Integer;
FNowLine: Word;
FSaveRangeBegin: TRangeBegin;
FSaveRangeEnd: TRangeEnd;
FSaveRangeEndCount: Integer;
FDisableBandScript: Boolean;
FPageBreak: Boolean;
procedure InitDataSet(Desc: string);
procedure FreeDataSet;
function CalcHeight: Integer;
procedure StretchObjects(MaxHeight: Integer);
procedure UnStretchObjects;
procedure DrawObject(t: TRMView);
procedure PrepareSubReports;
procedure DoSubReports;
function DrawObjects: Boolean;
procedure DrawCrossCell(Parnt: TRMBand; CurX: Integer);
procedure DrawCross;
function CheckPageBreak(y, dy: Integer; PBreak: Boolean): Boolean;
procedure DrawPageBreak;
function HasCross: Boolean;
function DoCalcHeight: Integer;
procedure DoDraw;
function Draw: Boolean;
procedure InitValues;
procedure DoAggregate;
function ExtractField(const s: string; FieldNo: Integer): string;
procedure AddAggregateValue(const s: string; v: Variant);
function GetAggregateValue(const s: string): Variant;
function GetOnFirstPage: Boolean;
function GetOnLastPage: Boolean;
function GetRepeatHeader: Boolean;
public
Name: string;
x, y, dx, dy, maxdy: Integer;
Typ: TRMBandType;
PrintIfSubsetEmpty, NewPageAfter, Stretched, PrintChildIfInvisible: Boolean;
AutoAppendBlank: Boolean;
LinesPerPage: Word;
Visible: Boolean;
Objects: TList;
Memo, Script, Script_AfterPrint: TStringList;
DataSet: TRMDataSet;
IsVirtualDS: Boolean;
VCDataSet: TRMDataSet;
IsVirtualVCDS: Boolean;
GroupCondition: string;
constructor Create(ATyp: TRMBandType; AParent: TRMPage);
destructor Destroy; override;
property POnFirstPage: Boolean read GetOnFirstPage;
property POnLastPage: Boolean read GetOnLastPage;
property PRepeatHeader: Boolean read GetRepeatHeader;
end;
{ TRMPage }
TRMPage = class(TRMObject)
private
FpgMargins: TRect;
FParentPage: TRMPage;
FBands: array[TRMBandType] of TRMBand;
FSkip, FInitFlag, FCanDisableControls: Boolean;
FCurColumn, FLastStaticColumnY, FXAdjust, FSaveBottom: Integer;
FList: TList;
FMode: TRMPageMode;
FPlayFrom: Integer;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -