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

📄 rm_class.pas.~2~

📁 胜天进销存源码,国产优秀的进销存
💻 ~2~
📖 第 1 页 / 共 5 页
字号:
    procedure GetVariablesList(const Category: string; List: TStrings);

    property Value[const Index: string]: Variant read GetValue;
    property RealDataSetName[const Index: string]: string read GetRealDataSetName;
    property RealDataSourceName[const Index: string]: string read GetRealDataSourceName;
    property RealFieldName[const Index: string]: string read GetRealFieldName;
    property AliasName[const Index: string]: string read GetAliasName;
    property DisabledDatasets: TStringList read FDisabledDatasets;
  end;

  TRMReportSaveEvent = procedure(var Saved: Boolean) of object;

  TRMReportInfo = class(TPersistent)
  private
    FTitle: string;
    FAuthor: string;
    FCompany: string;
    FCopyRight: string;
    FComment: string;
  public
    procedure Clear;
    procedure Assign(Source: TPersistent); override;
    property Title: string read FTitle write FTitle;
    property Author: string read FAuthor write FAuthor;
    property Company: string read FCompany write FCompany;
    property CopyRight: string read FCopyRight write FCopyRight;
    property Comment: string read FComment write FComment;
  end;

 { TRMSaveReportOptions }
  TRMSaveReportOptions = class(TPersistent)
  private
    FAutoLoadSaveSetting: Boolean;
    FUseRegistry: Boolean;
    FIniFileName: string;
    FRegistryPath: string;
  protected
  public
    constructor Create;
    procedure Assign(Source: TPersistent); override;
    procedure LoadReportSetting(aReport: TRMReport; aReportName: string);
    procedure SaveReportSetting(aReport: TRMReport; aReportName: string);
  published
    property AutoLoadSaveSetting: Boolean read FAutoLoadSaveSetting write FAutoLoadSaveSetting default False;
    property UseRegistry: Boolean read FUseRegistry write FUseRegistry default False;
    property IniFileName: string read FIniFileName write FIniFileName;
    property RegistryPath: string read FRegistryPath write FRegistryPath;
  end;

  { TRMReport }
  TRMReport = class(TComponent)
  private
    FVariables: TRMVariables;
    FPrintOffsetLeft, FPrintOffsetTop: Integer;
    FDefaultDictionaryFile: string;
    FPrintBackColor: Boolean;
    FReportInfo: TRMReportInfo;
    FPreviewInitialDir: string;
    FPages: TRMPages;
    FEMFPages: TRMEMFPages;
    FDictionary: TRMDataDictionary;
    FDataset: TRMDataset;
    FReportType: TRMReportType;
    FShowProgress: Boolean;
    FModalPreview: Boolean;
    FModifyPrepared: Boolean;
    FStoreInDFM: Boolean;
    FPreview: TRMPreview;
    FPreviewButtons: TRMPreviewButtons;
    FInitialZoom: TRMPreviewZoom;
    FOnBeginDoc: TRMBeginDocEvent;
    FOnEndDoc: TRMEndDocEvent;
    FOnBeginPage: TRMBeginPageEvent;
    FOnEndPage: TRMEndPageEvent;
    FOnEndPrintPage: TRMEndPrintPageEvent;
    FOnBeginBand: TRMBeginBandEvent;
    FOnCrossBeginDoc: TRMBeginDocEvent;
    FOnCrossEndDoc: TRMEndDocEvent;
    FOnEndBand: TRMEndBandEvent;
    FOnGetValue: TRMDetailEvent;
    FOnEnterRect: TRMEnterRectEvent;
    FOnAfterPrint: TRMAfterPrintEvent;
    FOnProgress: TRMProgressEvent;
    FOnFunction: TRMFunctionEvent;
    FOnBeginColumn: TRMBeginColumnEvent;
    FOnPrintColumn: TRMPrintColumnEvent;
    FOnManualBuild: TRMManualBuildEvent;
    FObjectClick: TRMObjectClickEvent;
    FMouseOverObject: TRMMouseOverObjectEvent;
    FOnPrintReportEvent: TRMPrintReportEvent;
    FOnBeforePrintBand: TRMBeforePrintBandEvent;
    FOnCustomizeObject: TNotifyEvent;
    FCurrentFilter: TRMExportFilter;
    FPageNumbers: string;
    FCopies: Integer;
    FCollate: Boolean;
    FPrintPages: TRMPrintPages;
    FCurPage: TRMPage;
    _DoublePass: Boolean;
    FMDIPreview: Boolean;
    FDefaultCopies: Integer;
    FDefaultCollate: Boolean;
    FPrinterName: string;
    FDFMStream: TStream;
    FPrintIfEmpty: Boolean;
    FShowPrintDialog: Boolean;
    FOnAfterPreviewPageSetup: TNotifyEvent;
    FSaveReportOptions: TRMSaveReportOptions;
    FOnLoadReportSetting: TRMLoadSaveReportSetting;
    FOnSaveReportSetting: TRMLoadSaveReportSetting;

    procedure BuildBeforeModal(Sender: TObject);
    procedure ExportBeforeModal(Sender: TObject);
    procedure PrintBeforeModal(Sender: TObject);
    function DoPrepareReport: Boolean;
    procedure DoBuildReport; virtual;
    procedure GetIntrpValue(const Name: string; var Value: Variant);
    procedure GetIntrpFunction(const Name: string; p: array of Variant; var Val: Variant);
    function GetTitle: string;
    procedure SetTitle(Value: string);
  protected
    UseScale: Boolean;
    Scale: Integer;
    PageSize, PageWidth, PageHeight: Integer;

    FDefaultDataSetOwner: TComponent;
    FOnSaveReport: TRMReportSaveEvent;
    HVersion, LVersion: Byte;
    FFlag_Taoda: Boolean;
    procedure CalcScaleXY;
    procedure SetPrinterTo(PrnName: string);
    procedure DefineProperties(Filer: TFiler); override;
    procedure ReadBinaryData(Stream: TStream);
    procedure WriteBinaryData(Stream: TStream);
    procedure Notification(AComponent: TComponent; Operation: TOperation); override;
    procedure DoPrintReport(PageNumbers: string; Copies: Integer; //打印报表
      Collate: Boolean; PrintPages: TRMPrintPages); virtual;
    procedure Loaded; override;
    property OnAfterPreviewPageSetup: TNotifyEvent read FOnAfterPreviewPageSetup write FOnAfterPreviewPageSetup;
  public
    CanRebuild: Boolean; // true, if report can be rebuilded
    Terminated: Boolean;
    DoublePass: WordBool;
    FinalPass: Boolean;
    FileName: string;
    Modified, ComponentModified: Boolean;
    MixVariablesAndDBFields: Boolean;
    Taoda: Boolean;
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
    procedure Clear;
    // internal events used through report building
    procedure InternalOnEnterRect(Memo: TStringList; View: TRMView);
    procedure InternalOnAfterPrint(const View: TRMView);
    procedure InternalOnExportData(View: TRMView);
    procedure InternalOnExportText(DrawRect: TRect; x, y: Integer;
      const text: string; FrameTyp: Integer; View: TRMView);
    procedure InternalOnGetValue(ParName: string; var ParValue: string);
//    procedure InternalOnGetDataFieldValue(aDataSet: TDataSet; aFieldName: string; var ParValue: string);
    procedure InternalOnProgress(Percent: Integer);
    procedure InternalOnBeginColumn(Band: TRMBand);
    procedure InternalOnPrintColumn(ColNo: Integer; var ColWidth: Integer);
    procedure InternalOnBeforePrintBand(Band: TRMBand; var PrintBand: Boolean);
    procedure GetVariableValue(const s: string; var v: Variant);
    procedure OnGetParsFunction(const name: string; p: array of Variant; var val: Variant);
    function FindObject(Name: string): TRMView;
    // load/save methods
    procedure LoadFromStream(Stream: TStream);
    procedure SaveToStream(Stream: TStream);
    function LoadFromFile(FName: string): Boolean;
    procedure SaveToFile(FName: string);
    procedure LoadFromDB(Table: TDataSet; DocN: Integer);
    procedure SaveToDB(Table: TDataSet; DocN: Integer);
    procedure SaveToBlobField(Blob: TField);
    procedure LoadFromBlobField(Blob: TField);
    procedure SaveToMemoField(aField: TField);
    procedure LoadFromMemoField(aField: TField);
    procedure SaveToAnsiString(var aStr: AnsiString);
    procedure LoadFromAnsiString(const aStr: AnsiString);
    procedure LoadFromResourceName(Instance: THandle; const ResName: string);
    procedure LoadFromResourceID(Instance: THandle; ResID: Integer);
    procedure LoadTemplate(fname: string; comm: TStrings; Bmp: TBitmap; Load: Boolean);
    procedure SaveTemplate(var fname: string; comm: TStrings; Bmp: TBitmap);
    procedure LoadPreparedReport(FName: string);
    procedure SavePreparedReport(FName: string);
    // report manipulation methods
    procedure NewReport;
    function DesignReport: TModalResult;
    function PrepareReport: Boolean;
    procedure ExportTo(aFilter: TRMExportFilter; aFileName: string);
    procedure ShowReport;
    procedure PrintReport;
    function EditPreparedReport(PageIndex: Integer): Boolean;
    function DesignPreviewedReport: Boolean;
    procedure ShowPreparedReport;
    procedure PrintPreparedReportDlg;
    procedure PrintPreparedReport(aPageNumbers: string; aCopies: Integer;
      aCollate: Boolean; aPrintPages: TRMPrintPages);
    function ChangePrinter(OldIndex, NewIndex: Integer): Boolean;

    property Variables: TRMVariables read FVariables;
    property PrinterName: string read FPrinterName write FPrinterName;
    property Pages: TRMPages read FPages;
    property EMFPages: TRMEMFPages read FEMFPages write FEMFPages;
    property Dictionary: TRMDataDictionary read FDictionary write FDictionary;
    property OnCrossBeginDoc: TRMBeginDocEvent read FOnCrossBeginDoc write FOnCrossBeginDoc;
    property OnCrossEndDoc: TRMEndDocEvent read FOnCrossEndDoc write FOnCrossEndDoc;
    property ReportInfo: TRMReportInfo read FReportInfo;
    property PrintBackColor: Boolean read FPrintBackColor write FPrintBackColor;
    property PrintOffsetLeft: Integer read FPrintOffsetLeft write FPrintOffsetLeft;
    property PrintOffsetTop: Integer read FPrintOffsetTop write FPrintOffsetTop;
    property Title: string read GetTitle write SetTitle;
  published
    property SaveReportOptions: TRMSaveReportOptions read FSaveReportOptions write FSaveReportOptions;
    property DefaultDictionaryFile: string read FDefaultDictionaryFile write FDefaultDictionaryFile;
    property PreviewInitialDir: string read FPreviewInitialDir write FPreviewInitialDir;
    property Dataset: TRMDataset read FDataset write FDataset;
    property DefaultCopies: Integer read FDefaultCopies write FDefaultCopies default 1;
    property DefaultCollate: Boolean read FDefaultCollate write FDefaultCollate default True;
    property InitialZoom: TRMPreviewZoom read FInitialZoom write FInitialZoom;
    property MDIPreview: Boolean read FMDIPreview write FMDIPreview default False;
    property ModalPreview: Boolean read FModalPreview write FModalPreview default True;
    property ModifyPrepared: Boolean read FModifyPrepared write FModifyPrepared;
    property Preview: TRMPreview read FPreview write FPreview;
    property PreviewButtons: TRMPreviewButtons read FPreviewButtons write FPreviewButtons;
    property PrintIfEmpty: Boolean read FPrintIfEmpty write FPrintIfEmpty default True;
    property ReportType: TRMReportType read FReportType write FReportType default rtSimple;
    property ShowProgress: Boolean read FShowProgress write FShowProgress default True;
    property StoreInDFM: Boolean read FStoreInDFM write FStoreInDFM default False;
    property ShowPrintDialog: Boolean read FShowPrintDialog write FShowPrintDialog default True;
    property OnBeginDoc: TRMBeginDocEvent read FOnBeginDoc write FOnBeginDoc;
    property OnEndDoc: TRMEndDocEvent read FOnEndDoc write FOnEndDoc;
    property OnBeginPage: TRMBeginPageEvent read FOnBeginPage write FOnBeginPage;
    property OnEndPage: TRMEndPageEvent read FOnEndPage write FOnEndPage;
    property OnEndPrintPage: TRMEndPrintPageEvent read FOnEndPrintPage write FOnEndPrintPage;
    property OnBeginBand: TRMBeginBandEvent read FOnBeginBand write FOnBeginBand;
    property OnEndBand: TRMEndBandEvent read FOnEndBand write FOnEndBand;
    property OnGetValue: TRMDetailEvent read FOnGetValue write FOnGetValue;
    property OnBeforePrint: TRMEnterRectEvent read FOnEnterRect write FOnEnterRect;
    property OnAfterPrint: TRMAfterPrintEvent read FOnAfterPrint write FOnAfterPrint;
    property OnUserFunction: TRMFunctionEvent read FOnFunction write FOnFunction;
    property OnProgress: TRMProgressEvent read FOnProgress write FOnProgress;
    property OnBeginColumn: TRMBeginColumnEvent read FOnBeginColumn write FOnBeginColumn;
    property OnPrintColumn: TRMPrintColumnEvent read FOnPrintColumn write FOnPrintColumn;
    property OnManualBuild: TRMManualBuildEvent read FOnManualBuild write FOnManualBuild;
    property OnObjectClick: TRMObjectClickEvent read FObjectClick write FObjectClick;
    property OnMouseOverObject: TRMMouseOverObjectEvent read FMouseOverObject write FMouseOverObject;
    property OnPrintReport: TRMPrintReportEvent read FOnPrintReportEvent write FOnPrintReportEvent;
    property OnBeforePrintBand: TRMBeforePrintBandEvent read FOnBeforePrintBand write FOnBeforePrintBand;
    property OnCustomizeObject: TNotifyEvent read FOnCustomizeObject write FOnCustomizeObject;
    property OnLoadReportSetting: TRMLoadSaveReportSetting read FOnLoadReportSetting write FOnLoadReportSetting;
    property OnSaveReportSetting: TRMLoadSaveReportSetting read FOnSaveReportSetting write FOnSaveReportSetting;
  end;

  TRMCompositeMode = (rmReportPerReport, rmPagePerPage);

  { TRMCompositeReport }
  TRMCompositeReport = class(TRMReport)
  private
    FReports: TList;
    FMode: TRMCompositeMode;
    procedure DoBuildReport; override;
    procedure OnClearEMFPagesEvnet(Sender: TObject);
    procedure _BuildReports;
    procedure SetMode(Value: TRMCompositeMode);
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
    property Reports: TList read FReports;
  published
    property CompositeMode: TRMCompositeMode read FMode write SetMode default rmReportPerReport;
  end;

  { TRMNewCompositeReport }
  TRMNewCompositeReport = class(TRMReport)
  private
    FReport: TRMReport;
    FReports: TList;
    procedure OnClearEMFPagesEvnet(Sender: TObject);
    procedure _BuildReports;
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
    procedure ShowReport;
    procedure PrintReport;
    property Reports: TList read FReports;
  published
  end;

  { TRMReportDesigner }
  TRMReportDesigner = class(TForm)
  private
  protected
    AutoSave: Boolean;
    PreviewDesign: Boolean;
    FirstInstance: Boolean;
    Modify_flag: Boolean;
    EMFPageIndex: Integer;
    function GetDesignerPage: TWinControl; virtual; abstract;
    function GetModified: Boolean; virtual; abstract;
    procedure SetModified(Value: Boolean); virtual; abstract;
  public
    Page: TRMPage;
    procedure RegisterObject(ButtonBmp: TBitmap; const ButtonHint: string; ButtonTag: Integer; IsControl: Boolean); virtual; abstract;
    procedure RegisterTool(MenuCaption: string; ButtonBmp: TBitmap; OnClick: TNotifyEvent); virtual; abstract;
    constructor CreateDesigner(AFirstInstance: Boolean); virtual;
    procedure BeforeChange; virtual; abstract;
    procedure AfterChange; virtual; abstract;
    procedure RedrawPage; virtual; abstract;
    procedure SelectObject(ObjName: string); virtual; abstract;
    function InsertDBField: string; virtual; abstract;
    function InsertExpression: string; virtual; abstract;
    property Modified: Boolean read GetModified write SetModified;
  end;

  { TRMObjEditorForm }
  TRMObjEditorForm = class(TForm)
  public
    function ShowEditor(View: TRMView): TModalResult; virtual;
  end;

  { TRMExportFilter }
  TRMExportFilter = class(TComponent)
  protected
    FileName: string;
    Stream: TStream;
    Lines: TList;
    FShowDialog: Boolean;
    FOnBeforeExport: TRMBeforeExportEvent;
    FOnAfterExport: TRMAfterExportEvent;
    procedure ClearLines;
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
    function ShowModal: Word; virtual;
    procedure OnBeginDoc; virtual;
    procedure OnEndDoc; virtual;
    procedure OnBeginPage; virtual;
    procedure OnEndPage; virtual;
    procedure OnData(x, y: Integer; View: TRMView); virtual;
    procedure OnText(DrawRect: TRect; x, y: Integer;
      const text: string; FrameTyp: Integer; View: TRMView); virtual;
  published
    property ShowDialog: Boolean read FShowDialog write FShowDialog default True;
    property OnBeforeExport: TRMBeforeExportEvent read FOnBeforeExport write FOnBeforeExport;
    property OnAfterExport: TRMAfterExportEvent read FOnAfterExport write FOnAfterExport;
  end;

⌨️ 快捷键说明

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