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

📄 rm_class.pas

📁 这是一个功能强大
💻 PAS
📖 第 1 页 / 共 5 页
字号:
    mmSaveLeft, mmSaveTop, mmSaveWidth, mmSaveHeight: Integer;
    mmSaveFWLeft, mmSaveFWTop, mmSaveFWRight, mmSaveFWBottom: Integer;
    mmSaveFontWidth: Integer;
    mmSaveShadowWidth: Integer;
    SaveFontWidth: Integer;
    RealRect: TRect;
    OriginalTop, OriginalHeight: Integer;
    OriginalTop1, OriginalHeight1: Integer;

    FactorX, FactorY: Double; // used for scaling objects in preview
    OffsetLeft, OffsetTop: Integer; //

    procedure SetFillColor(Value: TColor);
    procedure SetPropertyValue(aPropName: string; aValue: Variant);
    procedure ClearContents; virtual;
    procedure SetName(const Value: string); override;
    procedure InternalOnGetValue(aView: TRMReportView; aParName: WideString;
      var aParValue: WideString);
    procedure InternalOnBeforePrint(Memo: TWideStringList; View: TRMReportView);
    function _CalcVFrameWidth(aTopWidth, aBottomWidth: Double): Integer;
    function _CalcHFrameWidth(aLeftWidth, aRightWidth: Double): Integer;
    function _DrawRect: TRect;
    function GetPrinter: TRMPrinter;
    procedure AfterChangeName; virtual;
    function DocMode: TRMDocMode;
    procedure OnHook(View: TRMView); virtual;
    procedure AfterLoaded; virtual;
    procedure CalcGaps; virtual;
    procedure RestoreCoord; virtual;
    procedure ShowBackGround; virtual;
    procedure Prepare; virtual;
    procedure UnPrepare; virtual;
    function GetViewCommon: string; virtual;
    function HaveEventProp: Boolean;
    function DrawAsPicture: Boolean; virtual;
    function GetParentBand: TRMBand;
    procedure SetParentPage(Value: TRMCustomPage); virtual;
    procedure SetParentReport(Value: TRMReport);
    function IsCrossView: Boolean; virtual;
    function IsContainer: Boolean; virtual;

    function GetPropValue(aObject: TObject; aPropName: string; var aValue: Variant;
      aArgs: array of Variant): Boolean; override;
    function SetPropValue(aObject: TObject; aPropName: string; aValue: Variant): Boolean; override;

    property Tag: Integer read FTag write FTag;
    property TagStr: string read FTagStr write SetTagStr;
    property Url: string read FUrl write SetUrl;
    property FlowTo: string read FFlowTo write SetFlowTo;
    property Style: string read FStyle write SetStyle;
    property BrushStyle: TBrushStyle read FBrushStyle write FBrushStyle;
    property ParentFont: Boolean read FParentFont write SetParentFont;
    property ParentReport: TRMReport read FParentReport write FParentReport;
    property WantHook: Boolean read GetWantHook write SetWantHook;
    property Stretched: Boolean read GetStretched write SetStretched;
    property StretchedMax: Boolean read GetStretchedMax write SetStretchedMax;
    property Transparent: Boolean read GetTransparent write SetTransparent;
    property HideZeros: Boolean read GetHideZeros write SetHideZeros;
    property Visible: Boolean read FVisible write FVisible;
    property Left: Double index 0 read GetLeft write SetLeft;
    property Top: Double index 1 read GetLeft write SetLeft;
    property Width: Double index 2 read GetLeft write SetLeft;
    property Height: Double index 3 read GetLeft write SetLeft;
    property Cursor: TCursor read FCursor write FCursor;
    property ExpressionDelimiters: string read FExpressionDelimiters write FExpressionDelimiters;

    property mmGapLeft: Integer read FmmGapLeft write FmmGapLeft;
    property mmGapTop: integer read FmmGapTop write FmmGapTop;
    property mmLeft: Integer read FmmLeft write FmmLeft;
    property mmTop: Integer read FmmTop write FmmTop;
    property mmWidth: Integer read FmmWidth write FmmWidth;
    property mmHeight: Integer read FmmHeight write FmmHeight;
    property DontUndo: Boolean read GetDontUndo write SetDontUndo;
    property OnePerPage: Boolean read GetOnePerPage write SetOnePerPage;
    property IsChildView: Boolean read GetIsChildView write SetIsChildView;
    property UseDoublePass: Boolean read GetUseDoublePass write SetUseDoublePass;
    property TabOrder: Integer read FTabOrder write FTabOrder;
  public
    Selected: Boolean; // used in designer
    NeedCreateName: Boolean;

    constructor Create; override;
    destructor Destroy; override;
    procedure Assign(aSource: TPersistent); override;
    procedure ShowEditor; virtual;
    procedure DefinePopupMenu(aPopup: TRMCustomMenuItem); virtual;

    function GetClipRgn(rt: TRMRgnType): HRGN; virtual;
    function GetUnits: TRMUnitType;
    procedure CreateName(aReport: TRMReport);
    procedure SetBounds(aLeft, aTop, aWidth, aHeight: Double);
    procedure SetspBounds(aLeft, aTop, aWidth, aHeight: Integer);
    procedure LoadFromStream(aStream: TStream); virtual; abstract;
    procedure SaveToStream(aStream: TStream); virtual; abstract;
    procedure Draw(aCanvas: TCanvas); virtual; abstract;
    procedure SetFrameVisible(aVisible: Boolean);

    property Prop[Index: string]: Variant read GetProp write SetProp; default;
    property IsBand: Boolean read FIsBand;
    property IsCrossBand: Boolean read FIsCrossBand;
    property ParentPage: TRMCustomPage read FParentPage write SetParentPage;

    property spLeft_Designer: Integer index 0 read GetspLeft_Designer write SetspLeft_Designer;
    property spTop_Designer: Integer index 1 read GetspLeft_Designer write SetspLeft_Designer;
    property spWidth_Designer: Integer index 2 read GetspLeft_Designer write SetspLeft_Designer;
    property spHeight_Designer: Integer index 3 read GetspLeft_Designer write SetspLeft_Designer;
    property spRight_Designer: Integer index 4 read GetspLeft_Designer;
    property spBottom_Designer: Integer index 5 read GetspLeft_Designer;

    property spLeft: Integer index 0 read GetspLeft write SetspLeft;
    property spTop: Integer index 1 read GetspLeft write SetspLeft;
    property spWidth: Integer index 2 read GetspLeft write SetspLeft;
    property spHeight: Integer index 3 read GetspLeft write SetspLeft;
    property spRight: Integer index 4 read GetspLeft;
    property spBottom: Integer index 5 read GetspLeft;

    property Memo1: TWideStringList read FMemo1 write SetMemo1;
    property ObjectType: Byte read Typ;
    property LeftFrame: TRMFrameLine read FLeftFrame write FLeftFrame;
    property TopFrame: TRMFrameLine read FTopFrame write FTopFrame;
    property RightFrame: TRMFrameLine read FRightFrame write FRightFrame;
    property BottomFrame: TRMFrameLine read FBottomFrame write FBottomFrame;
    property LeftRightFrame: Word read FLeftRightFrame write FLeftRightFrame;
    property ShadowStyle: TRMShadowStyle read FShadowStyle write FShadowStyle;
    property FillColor: TColor read FFillColor write SetFillColor;
    property Memo: TWideStringList read FMemo write SetMemo;
  published
    property Restrictions: TRMRestrictions read FRestrictions write FRestrictions;
    property Name;
  end;

  { TRMDialogComponent }
  TRMDialogComponent = class(TRMView)
  private
    FParentControl: string;

    procedure SetParentControl(Value: string);
  protected
    FBmpRes: string;
    procedure BeginDraw(aCanvas: TCanvas);
    procedure PaintDesignControl;
    property ParentControl: string read FParentControl write SetParentControl;
  public
    class procedure DefaultSize(var aKx, aKy: Integer); override;
    constructor Create; override;
    destructor Destroy; override;
    procedure Draw(aCanvas: TCanvas); override;
    procedure LoadFromStream(aStream: TStream); override;
    procedure SaveToStream(aStream: TStream); override;
  published
  end;

  { TRMDialogControl }
  TRMDialogControl = class(TRMDialogComponent)
  private
  protected
    FControl: TControl;

    function GetFont: TFont; virtual;
    procedure SetFont(Value: TFont); virtual;

    procedure FreeChildViews;
    procedure PaintDesignControl;

    property Font: TFont read GetFont write SetFont;
  public
    constructor Create; override;
    destructor Destroy; override;
    procedure Draw(aCanvas: TCanvas); override;

    property Control: TControl read FControl;
  published
  end;

  { TRMReportView }
  TRMReportView = class(TRMView)
  private
    FNeedPrint: Boolean;
    FmmOldTop, FmmOldHeight: Integer;
    FBandAlign: TRMBandAlign;
    FShiftWith: string;
    FStretchWith: string;
    FOnBeforePrint: TNotifyEvent;
    FOnBeforeCalc: TNotifyEvent;
    FOnAfterCalc: TNotifyEvent;
    FOnPreviewClick: TRMPreviewClickEvent;
    FOnPreviewClickUrl: TRMPreviewClickUrlEvent;
    FStretchWithView, FShiftWithView: TRMReportView;
    FUseBandHeight: Boolean;
    FSubReportName: string;

    procedure OnStretchedClick(Sender: TObject);
    procedure OnStretchedMaxClick(Sender: TObject);
    procedure OnVisibleClick(Sender: TObject);
    procedure OnPrintableClick(Sender: TObject);

    function GetGapX(Index: Integer): Double;
    procedure SetGapX(Index: Integer; Value: Double);
    function GetspGapX(Index: Integer): Integer;
    procedure SetspGapX(Index: Integer; Value: Integer);
    function GetPrintFrame: Boolean;
    procedure SetPrintFrame(Value: Boolean);
    function GetPrintable: Boolean;
    procedure SetPrintable(Value: Boolean);
    function GetTextOnly: Boolean;
    procedure SetTextOnly(Value: Boolean);
    function GetReprintOnOverFlow: Boolean;
    procedure SetReprintOnOverFlow(Value: Boolean);
    procedure SetShiftWith(Value: string);
    procedure SetStretchWith(Value: string);
    function GetDataField: string;
    procedure SetDataField(Value: string);
    procedure SetDisplayFormat(Value: string);
    function GetParentWidth: Boolean;
    procedure SetParentWidth(Value: Boolean);
    function GetParentHeight: Boolean;
    procedure SetParentHeight(Value: Boolean);
    function GetShowAtNewColumn: Boolean;
    procedure SetShowAtNewColumn(Value: Boolean);
  protected
    FDisplayFormat: string;
    FormatFlag: TRMFormat;
    OutputOnly: Boolean;

    procedure BeginDraw(aCanvas: TCanvas);
    procedure Prepare; override;
    procedure ShowFrame; virtual;
    procedure ExpandUrl;
    procedure ExpandVariables(var aStr: WideString);
    procedure PlaceOnEndPage(aStream: TStream); virtual;
    procedure GetEndPageData(aStream: TStream); virtual;
    procedure GetBlob; virtual;
    procedure SetFactorFont(aCanvas: TCanvas);
    function GetFactorSize(aValue: Integer): Integer;
    procedure ExportData; virtual;
    function GetExportMode: TRMExportMode; virtual;
    function GetExportData: string; virtual;
    procedure GetExportPicture(var aDstGraphic: TGraphic; aDrawFrame: Boolean); virtual;

    property PrintFrame: Boolean read GetPrintFrame write SetPrintFrame;
    property Printable: Boolean read GetPrintable write SetPrintable;
    property BandAlign: TRMBandAlign read FBandAlign write FBandAlign;
    property TextOnly: Boolean read GetTextOnly write SetTextOnly;
    property GapLeft: Double index 0 read GetGapX write SetGapX;
    property GapTop: Double index 1 read GetGapX write SetGapX;
    property DisplayFormat: string read FDisplayFormat write SetDisplayFormat;
    property ReprintOnOverFlow: Boolean read GetReprintOnOverFlow write SetReprintOnOverFlow;
    property ShiftWith: string read FShiftWith write SetShiftWith;
    property StretchWith: string read FStretchWith write SetStretchWith;
    property DataField: string read GetDataField write SetDataField;
    property ParentHeight: Boolean read GetParentHeight write SetParentHeight;
    property ParentWidth: Boolean read GetParentWidth write SetParentWidth;
    property ShowAtNewColumn: Boolean read GetShowAtNewColumn write SetShowAtNewColumn;
    property SubReport: string read FSubReportName write FSubReportName;
    property OnBeforeCalc: TNotifyEvent read FOnBeforeCalc write FOnBeforeCalc;
    property OnAfterCalc: TNotifyEvent read FOnAfterCalc write FOnAfterCalc;
    property OnPreviewClick: TRMPreviewClickEvent read FOnPreviewClick write FOnPreviewClick;
    property OnPreviewClickUrl: TRMPreviewClickUrlEvent read FOnPreviewClickUrl write FOnPreviewClickUrl;
  public
    constructor Create; override;
    destructor Destroy; override;
    procedure DefinePopupMenu(aPopup: TRMCustomMenuItem); override;
    function GetClipRgn(rt: TRMRgnType): HRGN; override;

    procedure LoadFromStream(aStream: TStream); override;
    procedure SaveToStream(aStream: TStream); override;

    property spGapLeft: Integer index 0 read GetspGapX write SetspGapX;
    property spGapTop: Integer index 1 read GetspGapX write SetspGapX;
    property mmLeft;
    property mmTop;
    property mmWidth;
    property mmHeight;
  published
    property Visible;
    property Left;
    property Top;
    property Width;
    property Height;
    property OnBeforePrint: TNotifyEvent read FOnBeforePrint write FOnBeforePrint;
  end;

  { TRMStretcheableView }
  TRMStretcheableView = class(TRMReportView)
  private
  protected
    DrawMode: TRMDrawMode;
    CalculatedHeight: Integer;
    ActualHeight: Integer;

    function CalcHeight: Integer; virtual; abstract;
    function RemainHeight: Integer; virtual; abstract;
    procedure GetMemoVariables; virtual; abstract;
  public
    constructor Create; override;
    destructor Destroy; override;
  published
    property Stretched;
    property StretchedMax;
  end;

  TRMRepeatedOptions = class(TPersistent)
  private
    FMasterMemoView: string;
    FSuppressRepeated: Boolean;
    FMergeRepeated: Boolean;
    FMergeStretchedHeight: Boolean;
  protected
  public
  published
    property MasterMemoView: string read FMasterMemoView write FMasterMemoView;
    property SuppressRepeated: Boolean read FSuppressRepeated write FSuppressRepeated;
    property MergeRepeated: Boolean read FMergeRepeated write FMergeRepeated;
    property MergeStretchedHeight: Boolean read FMergeStretchedHeight write FMergeStretchedHeight;
  end;

  { TRMCustomMemoView }
  TRMCustomMemoView = class(TRMStretcheableView)
  private
    FDisplayBeginLine, FDisplayEndLine: Integer;
    FMasterView: TRMView;
    FSMemo: TWideStringList;
    FFont: TFont;
    FHighlight: TRMHighlight;
    FLineSpacing, FCharacterSpacing: Integer;
    FRotationType: TRMRotationType;
    FScaleFontType: TRMScaleFontType;
    FRepeatedOptions: TRMRepeatedOptions;
    FHAlign: TRMHAlign;
    FVAlign: TRMVAlign;
    FFontScaleWidth: Integer;
    FLastValue, FLastValue1: string;
    FLastValuePage: Integer;
    FLastValueChanged: Boolean;
    //    FTextWidths: array of integer;
    FStyleName: string;
    FFontAdapter: TRMPersistentCompAdapter;

    FVHeight: Integer; // used for height calculation of TRMCustomMemoView
    FLastStreamPosition: Integer;
    FmmLastTop: Integer;
    FSaveHtmlTagList: TWideStringList;

    procedure OnWordWrapClick(Sender: TObject);
    procedure OnAutoWidthClick(Sender: TObject);
    procedure OnHideZerosClick(Sender: TObject);
    //    procedure OnUnderlinesClick(Sender: TObject);
    procedure OnTextOnlyClick(Sender: TObject);

    procedure SetHAlign(Value: TRMHAlign);
    procedure SetVAlign(Value: TRMVAlign);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -