⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rm_class.pas

📁 report machine 2.3 功能强大
💻 PAS
📖 第 1 页 / 共 5 页
字号:
    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 + -