rm_class.pas
来自「胜天进销存源码,国产优秀的进销存」· PAS 代码 · 共 1,744 行 · 第 1/5 页
PAS
1,744 行
starting at the new page.}
TRMBandGroupHeader = class(TRMBand)
private
protected
public
constructor Create; override;
//property BreakNo: Integer;
published
property HideIfEmpty;
// property NewPageBefore;
property NewPageAfter;
property Stretched;
property PageBreaked;
property GroupCondition;
property ReprintOnNewPage;
property ReprintOnNewColumn;
property MasterBandName;
property PrintChildIfInvisible;
property OutlineText;
property ChildBand;
property KeepChild;
property KeepTogether;
property KeepFooter;
// property ResetPageNo;
end;
TRMBandGroupFooter = class(TRMBand)
private
protected
public
constructor Create; override;
published
// property NewPageBefore;
property NewPageAfter;
property HideIfEmpty;
property Stretched;
property PageBreaked;
// property ReprintOnEveryPage;
property PrintChildIfInvisible;
property GroupHeaderBandName;
property ChildBand;
property KeepChild;
property OutlineText;
end;
TRMBandCrossHeader = class(TRMBand)
private
protected
public
constructor Create; override;
published
property ReprintOnNewPage;
property Stretched;
property PrintAtDesignPos;
end;
TRMBandCrossData = class(TRMBand)
private
FDataSource: string;
protected
public
constructor Create; override;
published
property DataSource: string read FDataSource write FDataSource;
property PrintAtDesignPos;
property AutoAppendBlank;
property ColumnGap;
property Columns;
end;
TRMBandCrossFooter = class(TRMBand)
private
protected
public
constructor Create; override;
published
property PrintAtDesignPos;
end;
TRMBandOverlay = class(TRMBand)
private
protected
public
constructor Create; override;
published
//property ChildBand;
//property KeepChild;
property PrintChildIfInvisible;
end;
TRMBandChild = class(TRMBand)
private
protected
public
constructor Create; override;
published
// property NewPageBefore;
property NewPageAfter;
property PrintChildIfInvisible;
property ChildBand;
property KeepChild;
property OutlineText;
end;
{ TRMCustomPage }
TRMCustomPage = class(TRMPersistent)
private
FPrintToPrevPage: Boolean;
FParentReport: TRMReport;
FVisible: Boolean;
FObjects: TList;
FFont: TFont;
FOutlineText: string;
FOnActivate: TNotifyEvent;
FOnBeginPage: TRMBeginPageEvent;
FOnEndPage: TRMEndPageEvent;
// 生成报表时需要的参数
FEventList: TList;
FAggrList: TList;
FParentPage: TRMReportPage;
FPageNumber: Integer;
FIsSubReportPage: Boolean;
FPrintChildTypeSubReportPage: Boolean;
FSubReportView: TRMSubReportView;
FSubReport_MMLeft, FSubReport_MMTop: Integer;
FColumnPos, FCurrentPos: Integer;
FmmCurrentX, FmmCurrentY, FmmCurrentX1: Integer;
FmmCurrentBottomY, FmmLastStaticColumnY: Integer;
FmmOffsetX, FmmOffsetY: Integer; // 打印时用到的,就是边距信息
FLastPrintBand: TRMBand;
FDrawRepeatHeader, FDisableRepeatHeader: Boolean;
FCurPageColumn: Integer;
FStartPageNo: Integer;
procedure AfterPrint;
function GetItems(Index: string): TRMView;
procedure SetFont(Value: TFont);
procedure SetOutlineText(Value: string);
protected
FChildPageNo: Integer;
FChildPageBegin: Integer;
FChildEndPages: TRMEndPages;
FCurrentEndPages: TRMEndPages;
function DocMode: TRMDocMode;
procedure SetName(const Value: string); override;
procedure SetObjectsEvent;
procedure AddChildView(aStringList: TStringList; aDontAddBlankNameObject: Boolean); virtual;
procedure BuildTmpObjects; virtual;
procedure PreparePage; virtual; abstract;
procedure UnPreparePage; virtual; abstract;
procedure LoadFromStream(aStream: TStream); virtual; abstract;
procedure SaveToStream(aStream: TStream); virtual; abstract;
function GetPrinter: TRMPrinter;
procedure Loaded; virtual;
procedure BeforeDeleteObject(aObject: TRMView); virtual;
property PrintToPrevPage: Boolean read FPrintToPrevPage write FPrintToPrevPage;
property IsSubReportPage: Boolean read FIsSubReportPage;
property mmCurrentY: Integer read FmmCurrentY;
property mmCurrentBottomY: Integer read FmmCurrentBottomY;
property OutlineText: string read FOutlineText write SetOutlineText;
property OnBeginPage: TRMBeginPageEvent read FOnBeginPage write FOnBeginPage;
property OnEndPage: TRMEndPageEvent read FOnEndPage write FOnEndPage;
property OnActivate: TNotifyEvent read FOnActivate write FOnActivate;
public
constructor Create; override;
destructor Destroy; override;
procedure Clear;
procedure CreateName;
procedure Delete(Index: Integer);
function IndexOf(aObjectName: string): Integer;
function FindObject(aObjectName: string): TRMView; virtual;
function UpdateBandsPageRect: Boolean; virtual; abstract;
function PageObjects: TList; virtual;
function EventList: TList;
function Count: Integer;
property Items[Index: string]: TRMView read GetItems; default;
property Objects: TList read FObjects;
property ParentReport: TRMReport read FParentReport;
published
property Visible: Boolean read FVisible write FVisible;
property Font: TFont read FFont write SetFont;
property Name;
end;
{ TRMDialogPage }
TRMDialogPage = class(TRMCustomPage)
private
FBorderStyle: TFormBorderStyle;
FCaption: string;
FColor: TColor;
FLeft, FTop, FWidth, FHeight: Integer;
FPosition: TPosition;
FForm: TForm;
protected
procedure PreparePage; override;
procedure UnPreparePage; override;
procedure LoadFromStream(aStream: TStream); override;
procedure SaveToStream(aStream: TStream); override;
function GetPropValue(aObject: TObject; aPropName: string; var aValue: Variant; Args: array of Variant): Boolean; override;
function SetPropValue(aObject: TObject; aPropName: string; aValue: Variant): Boolean; override;
public
constructor CreatePage(aParentReport: TRMReport);
destructor Destroy; override;
function UpdateBandsPageRect: Boolean; override;
property Form: TForm read FForm;
published
property BorderStyle: TFormBorderStyle read FBorderStyle write FBorderStyle;
property Caption: string read FCaption write FCaption;
property Color: TColor read FColor write FColor;
property Left: Integer read FLeft write FLeft;
property Top: Integer read FTop write FTop;
property Width: Integer read FWidth write FWidth;
property Height: Integer read FHeight write FHeight;
property Position: TPosition read FPosition write FPosition;
property OnActivate;
end;
{ TRMReportPage }
TRMReportPage = class(TRMCustomPage)
private
FPageWidth, FPageHeight: Longint;
FPageSize: Integer;
FPageOrientation: TRMPrinterOrientation;
FPageBin: Integer;
FDuplex: TRMDuplex;
FResetPageNo: Boolean;
FNewPrintJob: Boolean;
FmmbkPictureLeft, FmmbkPictureTop: Integer;
FmmMarginLeft, FmmMarginTop, FmmMarginRight, FmmMarginBottom: Integer;
FAutoHCenter, FAutoVCenter: Boolean;
FFlags: Word;
FColumnCount: Integer;
FmmColumnGap: Integer;
// 保持在同一页用到的信息
FKeepPage_Count: Integer;
// FKeepPage_EndPage: TRMEndPage;
FKeepPage_SaveStream: TMemoryStream;
FKeepPage_Stream: TMemoryStream;
FKeepPage_SavePos: Int64;
FKeepPage_OffsetLeft: Integer;
FKeepPage_OffsetTop: Integer;
FKeepPage_OutLines: TStringList;
// 打印是用到的临时变量
FSubReports: TList;
FParentPages: TList;
FBands: array[TRMBandType] of TList;
FShowBackPicture: Boolean;
FMaxLevel: Integer;
FFlag_NewPage, FFlag_ColumnNewPage: Boolean;
FSavePageNo: Integer;
FInDrawPageHeader: Boolean; // 正在打印PageHeader
FmmColumnWidth: Integer;
FBaseOutlineLevel, FNowOutlineLevel: Integer;
procedure SetmmMarginLeft(aValue: Integer);
procedure SetmmMarginTop(aValue: Integer);
function GetspMarginLeft(index: Integer): Integer;
procedure SetspMarginLeft(index: Integer; value: Integer);
function GetpgMargins: TRect;
procedure SetpgMargins(aValue: TRect);
procedure SetColumnCount(Value: Integer);
function GetColumnGap: Double;
procedure SetColumnGap(Value: Double);
function GetCurrentRightX: Integer;
function GetCurrentBottomY: Integer;
function BandByType(aType: TRMBandType): TRMBand;
procedure ShowBand(aBand: TRMBand);
procedure ResetPosition(aBand: TRMBand; aResetTo: Integer);
procedure PlaceObjects;
procedure PrepareObjects;
procedure PrepareAggrObjects; //计算字段
// SubReport相关
procedure CreateChildReport;
procedure FreeChildReport;
procedure PrintChildTypeSubReports;
function HaveChildEndPage(aPageIndex: Integer): Boolean;
procedure TransferChildTypeSubReportViews(aPageIndex: Integer; aEndPage: TRMEndPage;
aEndPages: TRMEndPages);
procedure DoPrintPage(aMasterBand: TRMBand; aBandType: TRMBandType;
aNowLevel: Integer; var aBndStackTop: Integer; var aBndStack: array of TRMBand);
procedure PrintPage;
procedure InitKeepPageInfo;
procedure FreeKeepPageInfo;
procedure AddKeepPageBand(aEndBand: TRMBand);
procedure DeleteKeepPageBand(aEndBand: TRMBand);
procedure TransferToCachePage;
procedure TransferFromCachePage(aNewPage: Boolean);
procedure DrawColumnFooter(aLastPageFlag: Boolean);
procedure DrawPageFooters(aLastPageFlag: Boolean);
procedure DoDetailHeaderAggrs(aBand: TRMBand);
procedure DoGroupHeaderAggrs(aGroupHeader: TRMBand);
procedure AutoCenterObjects(aPageNo: Integer);
function GetbkGroundLeft(index: Integer): Double;
procedure SetbkGroundLeft(index: Integer; Value: Double);
procedure SetbkPicture(aPicture: TPicture);
protected
FbkPicture: TPicture;
function GetPropValue(aObject: TObject; aPropName: string; var aValue: Variant;
Args: array of Variant): Boolean; override;
function SetPropValue(aObject: TObject; aPropName: string;
aValue: Variant): Boolean; override;
procedure PreparePage; override;
procedure UnPreparePage; override;
procedure LoadFromStream(aStream: TStream); override;
procedure SaveToStream(aStream: TStream); override;
public
PrinterInfo: TRMPageInfo;
bkPictureWidth, bkPictureHeight: Integer;
constructor CreatePage(aParentReport: TRMReport; aSize, aWidth, aHeight, aBin: Integer; aOr: TRMPrinterOrientation); virtual;
destructor Destroy; override;
function UpdateBandsPageRect: Boolean; override;
procedure NewColumn(aBand: TRMBand);
procedure NewPage;
procedure ShowBandByName(const aBandName: string);
procedure ShowBandByType(aBandType: TRMBandType);
procedure ChangePaper(ASize, AWidth, AHeight, ABin: Integer; AOr: TRMPrinterOrientation);
property PageWidth: Longint read FPageWidth;
property PageHeight: Longint read FPageHeight;
property PageSize: Integer read FPageSize;
property PageOrientation: TRMPrinterOrientation read FPageOrientation;
property PageBin: Integer read FPag
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?