home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1997 May / Pcwk0597.iso / borland / cb / setup / cbuilder / data.z / QUICKREP.HPP < prev    next >
C/C++ Source or Header  |  1997-02-28  |  35KB  |  950 lines

  1. //----------------------------------------------------------------------------
  2. // QuickRep.hpp - bcbdcc32 generated hdr (DO NOT EDIT) rev: 0
  3. // From: QuickRep.pas
  4. //----------------------------------------------------------------------------
  5. #ifndef QuickRepHPP
  6. #define QuickRepHPP
  7. //----------------------------------------------------------------------------
  8. #include <ComCtrls.hpp>
  9. #include <qrconst.hpp>
  10. #include <DsgnIntf.hpp>
  11. #include <DBTables.hpp>
  12. #include <DB.hpp>
  13. #include <DBCtrls.hpp>
  14. #include <ExtCtrls.hpp>
  15. #include <StdCtrls.hpp>
  16. #include <Printers.hpp>
  17. #include <Dialogs.hpp>
  18. #include <Forms.hpp>
  19. #include <Buttons.hpp>
  20. #include <Controls.hpp>
  21. #include <Graphics.hpp>
  22. #include <Classes.hpp>
  23. #include <Messages.hpp>
  24. #include <Windows.hpp>
  25. #include <SysUtils.hpp>
  26. #include <System.hpp>
  27. #pragma warn -par
  28. #pragma warn -hid 
  29. #pragma warn -inl
  30.  
  31. namespace Quickrep
  32. {
  33. //-- type declarations -------------------------------------------------------
  34. enum TQRBandType { rbTitle, rbPageHeader, rbDetail, rbPageFooter, rbSummary, rbGroupHeader, rbGroupFooter, 
  35.     rbSubDetail, rbColumnHeader, rbOverlay };
  36.  
  37. enum TQRPaperSize { qrpDefault, qrpLetter, qrpLegal, qrpA3, qrpA4, qrpA5, qrpCustom };
  38.  
  39. class __declspec(delphiclass) TQRFrame;
  40. class __declspec(pascalimplementation) TQRFrame : public Graphics::TPen
  41. {
  42.     typedef Graphics::TPen inherited;
  43.     
  44. private:
  45.     bool FTop;
  46.     bool FBottom;
  47.     bool FRight;
  48.     bool FLeft;
  49.     
  50. __published:
  51.     __property bool DrawTop = {read=FTop, write=FTop, nodefault};
  52.     __property bool DrawBottom = {read=FBottom, write=FBottom, nodefault};
  53.     __property bool DrawLeft = {read=FLeft, write=FLeft, nodefault};
  54.     __property bool DrawRight = {read=FRight, write=FRight, nodefault};
  55. public:
  56.     /* TPen.Create */ __fastcall TQRFrame(void) : Graphics::TPen() { }
  57.     /* TPen.Destroy */ __fastcall virtual ~TQRFrame(void) { }
  58.     
  59. };
  60.  
  61. typedef void __fastcall (__closure *TOnPreviewEvent)(void);
  62.  
  63. enum TQRPrinterStatus { mpReady, mpBusy, mpFinished, mpPrinting, mpPreviewing };
  64.  
  65. typedef void __fastcall (__closure *TReportNeedDataEvent)(bool &MoreData);
  66.  
  67. typedef void __fastcall (__closure *TQRFilterEvent)(bool &PrintRecord);
  68.  
  69. typedef void __fastcall (__closure *TQRReportBeforePrintEvent)(bool &PrintReport);
  70.  
  71. struct TQRFileHeader
  72. {
  73.     Word FormatVersion;
  74.     Word QRVersion;
  75.     int PageHeight;
  76.     int PageWidth;
  77.     int Inch;
  78.     int PageCount;
  79.     System::SmallString<80>  ReportTitle;
  80.     System::TDateTime CreateDateTime;
  81.     bool Portrait;
  82.     Byte EmptySpace[256];
  83. } ;
  84.  
  85. class __declspec(delphiclass) TQRController;
  86. class __declspec(delphiclass) TQRBand;
  87. typedef void __fastcall (__closure *TQRBandAfterPrintEvent)(bool BandPrinted);
  88.  
  89. typedef void __fastcall (__closure *TQRBandBeforePrintEvent)(bool &PrintBand);
  90.  
  91. class __declspec(delphiclass) TQuickReport;
  92. class __declspec(pascalimplementation) TQRController : public Classes::TComponent
  93. {
  94.     typedef Classes::TComponent inherited;
  95.     
  96. private:
  97.     Db::TDataSource* FDataSource;
  98.     TQRBand* FDetailBand;
  99.     TQRBand* FFooterBand;
  100.     TQRBand* FHeaderBand;
  101.     TReportNeedDataEvent FNeedDataEvent;
  102.     TQRFilterEvent FOnFilterEvent;
  103.     bool FPrintBefore;
  104.     Classes::TList* SubList;
  105.     void __fastcall SetHeaderBand(TQRBand* aBand);
  106.     void __fastcall SetFooterBand(TQRBand* aBand);
  107.     void __fastcall SetDetailBand(TQRBand* aBand);
  108.     void __fastcall SetDataSource(Db::TDataSource* Value);
  109.     
  110. protected:
  111.     __property TQRBand* DetailBand = {read=FDetailBand, write=SetDetailBand, nodefault};
  112.     __property TQRBand* FooterBand = {read=FFooterBand, write=SetFooterBand, nodefault};
  113.     __property TQRBand* HeaderBand = {read=FHeaderBand, write=SetHeaderBand, nodefault};
  114.     __property bool PrintBefore = {read=FPrintBefore, write=FPrintBefore, nodefault};
  115.     virtual void __fastcall Notification(Classes::TComponent* AComponent, Classes::TOperation Operation
  116.         );
  117.     
  118. public:
  119.     __fastcall virtual TQRController(Classes::TComponent* AOwner);
  120.     __fastcall virtual ~TQRController(void);
  121.     void __fastcall AddSub(TQRController* aController);
  122.     __property Classes::TList* SubData = {read=SubList, nodefault};
  123.     
  124. __published:
  125.     __property Db::TDataSource* DataSource = {read=FDataSource, write=SetDataSource, nodefault};
  126.     __property TQRFilterEvent OnFilter = {read=FOnFilterEvent, write=FOnFilterEvent};
  127.     __property TReportNeedDataEvent OnNeedData = {read=FNeedDataEvent, write=FNeedDataEvent};
  128. };
  129.  
  130. class __declspec(delphiclass) TQRProgressForm;
  131. class __declspec(pascalimplementation) TQRProgressForm : public Classes::TComponent
  132. {
  133.     typedef Classes::TComponent inherited;
  134.     
  135. private:
  136.     Stdctrls::TButton* CancelBtn;
  137.     Forms::TForm* Form;
  138.     Comctrls::TProgressBar* gauge;
  139.     Stdctrls::TLabel* Label1;
  140.     long UpdateInterval;
  141.     long LastUpdate;
  142.     System::AnsiString __fastcall GetCaption(void);
  143.     System::AnsiString __fastcall GetText(void);
  144.     void __fastcall Cancel(System::TObject* Sender);
  145.     void __fastcall SetCaption( System::AnsiString Value);
  146.     void __fastcall SetMaxValue(long Value);
  147.     void __fastcall SetText( System::AnsiString Value);
  148.     void __fastcall SetValue(long Value);
  149.     
  150. public:
  151.     __fastcall virtual TQRProgressForm(Classes::TComponent* AOwner);
  152.     __fastcall virtual ~TQRProgressForm(void);
  153.     void __fastcall Show(void);
  154.     __property System::AnsiString Caption = {read=GetCaption, write=SetCaption, nodefault};
  155.     __property long MaxValue = {write=SetMaxValue, nodefault};
  156.     __property System::AnsiString Text = {read=GetText, write=SetText, nodefault};
  157.     __property long Value = {write=SetValue, nodefault};
  158. };
  159.  
  160. class __declspec(delphiclass) TQRGroup;
  161. enum TQReportClass { qrcDataSource, qrcEventDriven, qrcSingleDetail };
  162.  
  163. class __declspec(pascalimplementation) TQuickReport : public TQRController
  164. {
  165.     typedef TQRController inherited;
  166.     
  167. private:
  168.     Classes::TList* AllBands[10];
  169.     Classes::TList* AllCalcFields;
  170.     Dialogs::TPrintDialog* aPrintDialog;
  171.     TQRProgressForm* aProgressForm;
  172.     HRGN aRgn;
  173.     int FColumnWidth;
  174.     int CurrentCol;
  175.     int CurrentPageStart;
  176.     Classes::TList* DetailLinks;
  177.     bool DidNewPage;
  178.     bool DTPFinish;
  179.     Classes::TNotifyEvent FAfterDetailsEvent;
  180.     Classes::TNotifyEvent FAfterPrintEvent;
  181.     Classes::TNotifyEvent FBeforeDetailsEvent;
  182.     TQRReportBeforePrintEvent FBeforePrintEvent;
  183.     double FColumnMargin;
  184.     int FColumns;
  185.     long FCurY;
  186.     long FCurX;
  187.     bool FDisplayPrintDialog;
  188.     long FFooterHeight;
  189.     Forms::TForm* FForm;
  190.     TQRGroup* FGroups[10];
  191.     double FLeftMargin;
  192.     TReportNeedDataEvent FNeedDataEvent;
  193.     Classes::TNotifyEvent FOnEndPage;
  194.     TQRFilterEvent FOnFilterEvent;
  195.     Classes::TNotifyEvent FOnNewPage;
  196.     TPrinterOrientation FOrientation;
  197.     Classes::TNotifyEvent FOnStartPage;
  198.     long FPageCount;
  199.     TQRFrame* FPageFrame;
  200.     long FPageHeight;
  201.     long FPageNumber;
  202.     int FPaperLength;
  203.     TQRPaperSize FPaperSize;
  204.     int FPaperWidth;
  205.     long FPageWidth;
  206.     long FRecordCount;
  207.     long FRecordNo;
  208.     System::AnsiString FReportTitle;
  209.     bool FRestartData;
  210.     bool FShowProgress;
  211.     bool FSQLCompatible;
  212.     bool FTitleBeforeHD;
  213.     double FXFactor;
  214.     double FYFactor;
  215.     TQReportClass ReportClass;
  216.     bool StuffPrinted;
  217.     TQRGroup* __fastcall GetGroup(int Index);
  218.     long __fastcall GetColumnMarginInches(void);
  219.     long __fastcall GetColumnMarginMM(void);
  220.     long __fastcall GetLeftMarginInches(void);
  221.     long __fastcall GetLeftMarginMM(void);
  222.     bool __fastcall GetFirstData(Db::TDataSource* DataSource, TReportNeedDataEvent OnNeedDataEvent, TQRFilterEvent 
  223.         OnFilterEvent);
  224.     bool __fastcall GetNextData(Db::TDataSource* DataSource, TReportNeedDataEvent OnNeedDataEvent, TQRFilterEvent 
  225.         OnFilterEvent);
  226.     int __fastcall GetPaperLength(void);
  227.     TQRPaperSize __fastcall GetPaperSize(void);
  228.     int __fastcall GetPaperWidth(void);
  229.     void __fastcall PrintGroupHeaders(void);
  230.     void __fastcall PrintBand(TQRBand* aBand);
  231.     void __fastcall PrintBands(TQRBandType BandToPrint);
  232.     bool __fastcall PrintGroupFooters(bool LastFooters);
  233.     void __fastcall DrawPageFrame(void);
  234.     void __fastcall PrinterNewPage(void);
  235.     void __fastcall SetColumnMarginInches(long Value);
  236.     void __fastcall SetColumnMarginMM(long Value);
  237.     void __fastcall SetColumns(int value);
  238.     void __fastcall SetGroup(int Index, TQRGroup* aGroup);
  239.     void __fastcall SetLeftMarginInches(long Value);
  240.     void __fastcall SetLeftMarginMM(long Value);
  241.     void __fastcall SetPaperLength(int value);
  242.     void __fastcall SetPaperSize(TQRPaperSize value);
  243.     void __fastcall SetPaperWidth(int value);
  244.     
  245. protected:
  246.     void __fastcall CalculateFields(Db::TDataSource* ADataSource);
  247.     void __fastcall CheckForSpace(TQRBand* aBand);
  248.     void __fastcall CreateReport(void);
  249.     __property long Curx = {read=FCurX, write=FCurX, nodefault};
  250.     __property long CurY = {read=FCurY, write=FCurY, nodefault};
  251.     __property long FooterHeight = {read=FFooterHeight, write=FFooterHeight, nodefault};
  252.     __property TQRGroup* Group[int Index] = {read=GetGroup, write=SetGroup};
  253.     virtual void __fastcall Notification(Classes::TComponent* AComponent, Classes::TOperation Operation
  254.         );
  255.     void __fastcall PrepareForPrinter(void);
  256.     
  257. public:
  258.     __fastcall virtual TQuickReport(Classes::TComponent* AOwner);
  259.     __fastcall virtual ~TQuickReport(void);
  260.     long __fastcall XPos(long Coor);
  261.     long __fastcall YPos(long Coor);
  262.     void __fastcall NewPage(void);
  263.     void __fastcall Prepare(void);
  264.     void __fastcall Preview(void);
  265.     void __fastcall Print(void);
  266.     __property int ColumnWidth = {read=FColumnWidth, nodefault};
  267.     __property long PageCount = {read=FPageCount, nodefault};
  268.     __property long PageHeight = {read=FPageHeight, nodefault};
  269.     __property long PageNumber = {read=FPageNumber, write=FPageNumber, nodefault};
  270.     __property long PageWidth = {read=FPageWidth, nodefault};
  271.     __property long RecordCount = {read=FRecordCount, nodefault};
  272.     __property long RecordNo = {read=FRecordNo, nodefault};
  273.     
  274. __published:
  275.     __property Classes::TNotifyEvent AfterDetail = {read=FAfterDetailsEvent, write=FAfterDetailsEvent};
  276.         
  277.     __property Classes::TNotifyEvent AfterPrint = {read=FAfterPrintEvent, write=FAfterPrintEvent};
  278.     __property Classes::TNotifyEvent BeforeDetail = {read=FBeforeDetailsEvent, write=FBeforeDetailsEvent
  279.         };
  280.     __property TQRReportBeforePrintEvent BeforePrint = {read=FBeforePrintEvent, write=FBeforePrintEvent
  281.         };
  282.     __property long ColumnMarginInches = {read=GetColumnMarginInches, write=SetColumnMarginInches, nodefault
  283.         };
  284.     __property long ColumnMarginMM = {read=GetColumnMarginMM, write=SetColumnMarginMM, nodefault};
  285.     __property int Columns = {read=FColumns, write=SetColumns, nodefault};
  286.     __property bool DisplayPrintDialog = {read=FDisplayPrintDialog, write=FDisplayPrintDialog, nodefault
  287.         };
  288.     __property long LeftMarginInches = {read=GetLeftMarginInches, write=SetLeftMarginInches, nodefault}
  289.         ;
  290.     __property long LeftMarginMM = {read=GetLeftMarginMM, write=SetLeftMarginMM, nodefault};
  291.     __property Classes::TNotifyEvent OnEndPage = {read=FOnEndPage, write=FOnEndPage};
  292.     __property Classes::TNotifyEvent OnStartPage = {read=FOnStartPage, write=FOnStartPage};
  293.     __property Printers::TPrinterOrientation Orientation = {read=FOrientation, write=FOrientation, nodefault
  294.         };
  295.     __property TQRFrame* PageFrame = {read=FPageFrame, write=FPageFrame, nodefault};
  296.     __property int PaperLength = {read=GetPaperLength, write=SetPaperLength, nodefault};
  297.     __property TQRPaperSize PaperSize = {read=GetPaperSize, write=SetPaperSize, nodefault};
  298.     __property int PaperWidth = {read=GetPaperWidth, write=SetPaperWidth, nodefault};
  299.     __property System::AnsiString ReportTitle = {read=FReportTitle, write=FReportTitle, nodefault};
  300.     __property bool RestartData = {read=FRestartData, write=FRestartData, nodefault};
  301.     __property bool ShowProgress = {read=FShowProgress, write=FShowProgress, default=1};
  302.     __property bool SQLCompatible = {read=FSQLCompatible, write=FSQLCompatible, nodefault};
  303.     __property bool TitleBeforeHeader = {read=FTitleBeforeHD, write=FTitleBeforeHD, nodefault};
  304. };
  305.  
  306. enum TQRRuler { qrrNone, qrrInchesH, qrrInchesV, qrrInchesHV, qrrCmH, qrrCmV, qrrCmHV };
  307.  
  308. class __declspec(delphiclass) TQRDBCalc;
  309. class __declspec(pascalimplementation) TQRBand : public Extctrls::TCustomPanel
  310. {
  311.     typedef Extctrls::TCustomPanel inherited;
  312.     
  313. private:
  314.     TQRBandAfterPrintEvent FAfterPrintEvent;
  315.     TQRBandBeforePrintEvent FBeforePrintEvent;
  316.     bool FEnabled;
  317.     bool FForceNewPage;
  318.     TQRFrame* FFrame;
  319.     Extctrls::TCustomPanel* FLinkBand;
  320.     TQRBandType FQRBandType;
  321.     TQuickReport* FReport;
  322.     TQRRuler FRuler;
  323.     Classes::TList* CalcResetList;
  324.     TQRFrame* __fastcall GetFrame(void);
  325.     virtual void __fastcall Paint(void);
  326.     void __fastcall SetFrame(TQRFrame* Value);
  327.     void __fastcall SetLinkBand(Extctrls::TCustomPanel* Value);
  328.     void __fastcall SetRuler(TQRRuler Value);
  329.     
  330. protected:
  331.     virtual void __fastcall Notification(Classes::TComponent* AComponent, Classes::TOperation Operation
  332.         );
  333.     
  334. public:
  335.     __fastcall virtual TQRBand(Classes::TComponent* AOwner);
  336.     __fastcall virtual ~TQRBand(void);
  337.     int __fastcall StretchHeight(bool IncludeNext);
  338.     bool __fastcall print(long X, long Y);
  339.     void __fastcall AddCalcReset(TQRDBCalc* aQRDBCalc);
  340.     void __fastcall ClearResetList(void);
  341.     __property TQuickReport* ParentReport = {read=FReport, write=FReport, nodefault};
  342.     
  343. __published:
  344.     __property TQRBandAfterPrintEvent AfterPrint = {read=FAfterPrintEvent, write=FAfterPrintEvent};
  345.     __property Align ;
  346.     __property TQRBandType BandType = {read=FQRBandType, write=FQRBandType, nodefault};
  347.     __property TQRBandBeforePrintEvent BeforePrint = {read=FBeforePrintEvent, write=FBeforePrintEvent};
  348.         
  349.     __property Color ;
  350.     __property bool Enabled = {read=FEnabled, write=FEnabled, default=1};
  351.     __property Font ;
  352.     __property bool ForceNewPage = {read=FForceNewPage, write=FForceNewPage, nodefault};
  353.     __property TQRFrame* Frame = {read=GetFrame, write=SetFrame, nodefault};
  354.     __property Extctrls::TCustomPanel* LinkBand = {read=FLinkBand, write=SetLinkBand, nodefault};
  355.     __property ParentFont ;
  356.     __property TQRRuler Ruler = {read=FRuler, write=SetRuler, nodefault};
  357. public:
  358.     /* TWinControl.CreateParented */ __fastcall TQRBand(HWND ParentWindow) : Extctrls::TCustomPanel(ParentWindow
  359.         ) { }
  360.     
  361. };
  362.  
  363. class __declspec(delphiclass) TQRPrinter;
  364. class __declspec(pascalimplementation) TQRPrinter : public Classes::TComponent
  365. {
  366.     typedef Classes::TComponent inherited;
  367.     
  368. private:
  369.     int aHandle;
  370.     TQRProgressForm* aProgressForm;
  371.     bool FCancel;
  372.     Graphics::TMetafileCanvas* FCanvas;
  373.     long FCapabilities;
  374.     bool FEnableOpen;
  375.     bool FEnablePrint;
  376.     bool FEnableSave;
  377.     int FToPage;
  378.     int FFromPage;
  379.     int FLeftWaste;
  380.     Graphics::TMetafile* FMetaFile;
  381.     TOnPreviewEvent FOnPreviewEvent;
  382.     TPrinterOrientation FOrientation;
  383.     Graphics::TMetafile* FPage;
  384.     int FPageCount;
  385.     int FPageHeight;
  386.     int FPageNumber;
  387.     int FPageWidth;
  388.     System::AnsiString FPreviewCaption;
  389.     bool FPrinterOK;
  390.     System::AnsiString FProgressCaption;
  391.     System::AnsiString FTitle;
  392.     int FTopWaste;
  393.     int FTotalPageWidth;
  394.     int FTotalPageHeight;
  395.     int FThumbs;
  396.     bool FShowProgress;
  397.     TQRPrinterStatus FStatus;
  398.     bool FZoomButtons;
  399.     Classes::TList* MetaList;
  400.     char *FDevice;
  401.     char *FDriver;
  402.     char *FPort;
  403.     int FHandle;
  404.     DEVMODEA *FDeviceMode;
  405.     int __fastcall GetPDPaperWidth(void);
  406.     void __fastcall SetPDPaperWidth(int value);
  407.     TQRPaperSize __fastcall GetPDPaperSize(void);
  408.     void __fastcall SetPDPaperSize(TQRPaperSize Value);
  409.     int __fastcall GetPDPaperLength(void);
  410.     void __fastcall setPDPaperLength(int Value);
  411.     int __fastcall GetPDCopies(void);
  412.     void __fastcall SetPDCopies(int Value);
  413.     int __fastcall GetPDPaperBin(void);
  414.     void __fastcall SetPDPaperBin(int Value);
  415.     bool __fastcall LockPrinter(void);
  416.     void __fastcall UnlockPrinter(void);
  417.     bool __fastcall Supported(long Cap);
  418.     bool __fastcall PageOK(int Value);
  419.     void __fastcall AddPageToList(void);
  420.     void __fastcall Init(void);
  421.     void __fastcall MakeCanvas(void);
  422.     void __fastcall SetToPage(int Value);
  423.     void __fastcall SetFromPage(int Value);
  424.     void __fastcall SetOrientation(Printers::TPrinterOrientation value);
  425.     void __fastcall SetPageNumber(int Value);
  426.     void __fastcall SetThumbs(int Value);
  427.     
  428. public:
  429.     __fastcall virtual TQRPrinter(Classes::TComponent* Owner);
  430.     __fastcall virtual ~TQRPrinter(void);
  431.     void __fastcall BeginDoc(void);
  432.     void __fastcall Cancel(void);
  433.     void __fastcall Cleanup(void);
  434.     void __fastcall CopyPageToClipBoard(void);
  435.     void __fastcall EndDoc(void);
  436.     void __fastcall Load( System::AnsiString Filename);
  437.     void __fastcall NewPage(void);
  438.     void __fastcall Preview(void);
  439.     void __fastcall Print(void);
  440.     void __fastcall ResetPaperSize(void);
  441.     void __fastcall Save( System::AnsiString Filename);
  442.     __property bool Canceled = {read=FCancel, write=FCancel, nodefault};
  443.     __property Graphics::TMetafileCanvas* Canvas = {read=FCanvas, write=FCanvas, nodefault};
  444.     __property int Copies = {read=GetPDCopies, write=SetPDCopies, nodefault};
  445.     __property bool EnableOpenBtn = {read=FEnableOpen, write=FEnableOpen, default=1};
  446.     __property bool EnablePrintBtn = {read=FEnablePrint, write=FEnablePrint, default=1};
  447.     __property bool EnableSaveBtn = {read=FEnableSave, write=FEnableSave, default=1};
  448.     __property int ToPage = {read=FToPage, write=SetToPage, nodefault};
  449.     __property int FromPage = {read=FFromPage, write=SetFromPage, nodefault};
  450.     __property int LeftWaste = {read=FLeftWaste, write=FLeftWaste, nodefault};
  451.     __property TOnPreviewEvent OnPreview = {read=FOnPreviewEvent, write=FOnPreviewEvent};
  452.     __property Printers::TPrinterOrientation Orientation = {read=FOrientation, write=SetOrientation, nodefault
  453.         };
  454.     __property Graphics::TMetafile* Page = {read=FPage, nodefault};
  455.     __property int PageHeight = {read=FPageHeight, nodefault};
  456.     __property int PageCount = {read=FPageCount, nodefault};
  457.     __property int PageNumber = {read=FPageNumber, write=SetPageNumber, nodefault};
  458.     __property int PageWidth = {read=FPageWidth, nodefault};
  459.     __property int PaperBin = {read=GetPDPaperBin, write=SetPDPaperBin, nodefault};
  460.     __property int PaperLength = {read=GetPDPaperLength, write=setPDPaperLength, nodefault};
  461.     __property TQRPaperSize PaperSize = {read=GetPDPaperSize, write=SetPDPaperSize, nodefault};
  462.     __property int PaperWidth = {read=GetPDPaperWidth, write=SetPDPaperWidth, nodefault};
  463.     __property System::AnsiString PreviewCaption = {read=FPreviewCaption, write=FPreviewCaption, nodefault
  464.         };
  465.     __property bool PrinterOK = {read=FPrinterOK, nodefault};
  466.     __property System::AnsiString ProgressCaption = {read=FProgressCaption, write=FProgressCaption, nodefault
  467.         };
  468.     __property bool ShowProgress = {read=FShowProgress, write=FShowProgress, default=1};
  469.     __property TQRPrinterStatus Status = {read=FStatus, nodefault};
  470.     __property System::AnsiString Title = {read=FTitle, write=FTitle, nodefault};
  471.     __property int TopWaste = {read=FTopWaste, write=FTopWaste, nodefault};
  472.     __property int TotalPageHeight = {read=FTotalPageHeight, write=FTotalPageHeight, nodefault};
  473.     __property int TotalPageWidth = {read=FTotalPageWidth, write=FTotalPageWidth, nodefault};
  474.     __property int Thumbs = {read=FThumbs, write=SetThumbs, nodefault};
  475.     __property bool ZoomButtons = {read=FZoomButtons, write=FZoomButtons, nodefault};
  476. };
  477.  
  478. enum TQRZoomState { qrZoomToFit, qrZoomToWidth, qrZoomOther };
  479.  
  480. class __declspec(delphiclass) TQRCustomPreview;
  481. class __declspec(pascalimplementation) TQRCustomPreview : public Controls::TGraphicControl
  482. {
  483.     typedef Controls::TGraphicControl inherited;
  484.     
  485. public:
  486.     int Zoom;
  487.     __fastcall virtual TQRCustomPreview(Classes::TComponent* AOwner);
  488.     virtual void __fastcall Paint(void);
  489.     
  490. __published:
  491.     __property Align ;
  492. public:
  493.     /* TGraphicControl.Destroy */ __fastcall virtual ~TQRCustomPreview(void) { }
  494.     
  495. };
  496.  
  497. class __declspec(delphiclass) TQRPreview;
  498. class __declspec(pascalimplementation) TQRPreview : public Forms::TScrollBox
  499. {
  500.     typedef Forms::TScrollBox inherited;
  501.     
  502. private:
  503.     TQRCustomPreview* FCustomPrPanel;
  504.     int FPageNumber;
  505.     int FZoom;
  506.     TQRZoomState ZoomState;
  507.     void __fastcall SetPageNumber(int Value);
  508.     void __fastcall SetZoom(int value);
  509.     void __fastcall UpdateZoom(void);
  510.     void __fastcall Fixvalues(System::TObject* Sender);
  511.     
  512. public:
  513.     __fastcall virtual TQRPreview(Classes::TComponent* aOwner);
  514.     void __fastcall ZoomToWidth(void);
  515.     void __fastcall ZoomToFit(void);
  516.     
  517. __published:
  518.     __property int PageNumber = {read=FPageNumber, write=SetPageNumber, nodefault};
  519.     __property int Zoom = {read=FZoom, write=SetZoom, nodefault};
  520. public:
  521.     /* TScrollingWinControl.Destroy */ __fastcall virtual ~TQRPreview(void) { }
  522.     
  523. public:
  524.     /* TWinControl.CreateParented */ __fastcall TQRPreview(HWND ParentWindow) : Forms::TScrollBox(ParentWindow
  525.         ) { }
  526.     
  527. };
  528.  
  529. class __declspec(delphiclass) TQRStandardPreview;
  530. class __declspec(pascalimplementation) TQRStandardPreview : public Classes::TComponent
  531. {
  532.     typedef Classes::TComponent inherited;
  533.     
  534. private:
  535.     Forms::TForm* Form;
  536.     Buttons::TSpeedButton* FitPageBtn;
  537.     Buttons::TSpeedButton* FitWidthBtn;
  538.     Buttons::TSpeedButton* HundredBtn;
  539.     Stdctrls::TButton* ExitBtn;
  540.     Extctrls::TPanel* InfoPanel;
  541.     Buttons::TBitBtn* CopyBtn;
  542.     Buttons::TBitBtn* LoadBtn;
  543.     Buttons::TBitBtn* FirstBtn;
  544.     Buttons::TBitBtn* LastBtn;
  545.     Buttons::TBitBtn* NextBtn;
  546.     Buttons::TBitBtn* PrevBtn;
  547.     Buttons::TBitBtn* PrintBtn;
  548.     TQRPreview* QRPreview;
  549.     Buttons::TBitBtn* SaveBtn;
  550.     Extctrls::TPanel* TopPanel;
  551.     Stdctrls::TComboBox* ZoomCombo;
  552.     void __fastcall ClickCopy(System::TObject* sender);
  553.     void __fastcall ClickExit(System::TObject* Sender);
  554.     void __fastcall ClickFirst(System::TObject* Sender);
  555.     void __fastcall ClickNext(System::TObject* Sender);
  556.     void __fastcall ClickLast(System::TObject* Sender);
  557.     void __fastcall ClickOpen(System::TObject* Sender);
  558.     void __fastcall ClickPrev(System::TObject* Sender);
  559.     void __fastcall ClickPrint(System::TObject* Sender);
  560.     void __fastcall ClickSave(System::TObject* Sender);
  561.     void __fastcall ClickFitPage(System::TObject* Sender);
  562.     void __fastcall ClickHundred(System::TObject* Sender);
  563.     void __fastcall ClickFitWidth(System::TObject* Sender);
  564.     void __fastcall FixScrollBars(void);
  565.     void __fastcall HScroll(System::TObject* Sender, Stdctrls::TScrollCode ScrollCode, int &ScrollPos);
  566.         
  567.     void __fastcall Resize(System::TObject* Sender);
  568.     void __fastcall SetZoom(System::TObject* Sender);
  569.     void __fastcall UpdateInfo(void);
  570.     void __fastcall VScroll(System::TObject* Sender, Stdctrls::TScrollCode ScrollCode, int &ScrollPos);
  571.         
  572. public:
  573.     __fastcall virtual TQRStandardPreview(Classes::TComponent* AOwner);
  574.     __fastcall virtual ~TQRStandardPreview(void);
  575.     void __fastcall Show(void);
  576. };
  577.  
  578. typedef void __fastcall (__closure *TGroupNeedDataEvent)( System::AnsiString &Value);
  579.  
  580. class __declspec(pascalimplementation) TQRGroup : public Classes::TComponent
  581. {
  582.     typedef Classes::TComponent inherited;
  583.     
  584. protected:
  585.     Dbtables::TFieldDataLink* FDataLink;
  586.     System::AnsiString LastData;
  587.     System::AnsiString NextLastData;
  588.     TQRBand* FFooterBand;
  589.     int FLevel;
  590.     TGroupNeedDataEvent FOnNeedData;
  591.     TQRBand* FHeaderBand;
  592.     bool FReprint;
  593.     System::AnsiString __fastcall GetDataField(void);
  594.     Db::TDataSource* __fastcall GetDataSource(void);
  595.     void __fastcall SetDataField(const System::AnsiString Value);
  596.     void __fastcall SetDataSource(Db::TDataSource* Value);
  597.     virtual void __fastcall Notification(Classes::TComponent* AComponent, Classes::TOperation Operation
  598.         );
  599.     void __fastcall SetHeaderBand(TQRBand* aBand);
  600.     void __fastcall SetFooterBand(TQRBand* aBand);
  601.     
  602. public:
  603.     __fastcall virtual TQRGroup(Classes::TComponent* AOwner);
  604.     void __fastcall Start(void);
  605.     bool __fastcall Update(void);
  606.     __property System::AnsiString GroupData = {read=NextLastData, nodefault};
  607.     __property bool Reprint = {read=FReprint, write=FReprint, nodefault};
  608.     
  609. __published:
  610.     __property Db::TDataSource* DataSource = {read=GetDataSource, write=SetDataSource, nodefault};
  611.     __property System::AnsiString DataField = {read=GetDataField, write=SetDataField, nodefault};
  612.     __property TQRBand* FooterBand = {read=FFooterBand, write=SetFooterBand, nodefault};
  613.     __property TQRBand* HeaderBand = {read=FHeaderBand, write=SetHeaderBand, nodefault};
  614.     __property int Level = {read=FLevel, write=FLevel, nodefault};
  615.     __property TGroupNeedDataEvent OnNeedData = {read=FOnNeedData, write=FOnNeedData};
  616. public:
  617.     /* TComponent.Destroy */ __fastcall virtual ~TQRGroup(void) { }
  618.     
  619. };
  620.  
  621. class __declspec(delphiclass) TQRDetailLink;
  622. class __declspec(pascalimplementation) TQRDetailLink : public TQRController
  623. {
  624.     typedef TQRController inherited;
  625.     
  626. private:
  627.     TQRController* FMaster;
  628.     void __fastcall SetMaster(TQRController* Value);
  629.     
  630. public:
  631.     __fastcall virtual TQRDetailLink(Classes::TComponent* AOwner);
  632.     virtual void __fastcall Notification(Classes::TComponent* AComponent, Classes::TOperation Operation
  633.         );
  634.     bool __fastcall print(long X, long Y);
  635.     
  636. __published:
  637.     __property DetailBand ;
  638.     __property FooterBand ;
  639.     __property HeaderBand ;
  640.     __property TQRController* Master = {read=FMaster, write=SetMaster, nodefault};
  641.     __property PrintBefore ;
  642. public:
  643.     /* TQRController.Destroy */ __fastcall virtual ~TQRDetailLink(void) { }
  644.     
  645. };
  646.  
  647. enum TQRPrintOrder { qrColByCol, qrRowByRow };
  648.  
  649. enum TQReportType { qrStandard, qrMasterDetail, qrSingleDetail };
  650.  
  651. typedef void __fastcall (__closure *TQRLabelOnPrintEvent)(System::TObject* sender,  System::AnsiString &
  652.     Value);
  653.  
  654. class __declspec(delphiclass) TQRCustomControl;
  655. class __declspec(pascalimplementation) TQRCustomControl : public Stdctrls::TCustomLabel
  656. {
  657.     typedef Stdctrls::TCustomLabel inherited;
  658.     
  659. private:
  660.     bool FAlignToBand;
  661.     TQRLabelOnPrintEvent FOnPrintEvent;
  662.     TQuickReport* FReport;
  663.     __property bool AlignToBand = {read=FAlignToBand, write=FAlignToBand, nodefault};
  664.     
  665. protected:
  666.     __property TQRLabelOnPrintEvent OnPrint = {read=FOnPrintEvent, write=FOnPrintEvent};
  667.     
  668. public:
  669.     __fastcall virtual TQRCustomControl(Classes::TComponent* AOwner);
  670.     virtual void __fastcall Paint(void);
  671.     virtual void __fastcall Print(int X, int Y);
  672.     virtual void __fastcall Stretch(int &size);
  673.     __property AutoSize  = {stored=true, default=1};
  674.     __property TQuickReport* ParentReport = {read=FReport, write=FReport, nodefault};
  675.     
  676. __published:
  677.     __property Height ;
  678.     __property Left ;
  679.     __property Top ;
  680.     __property Visible ;
  681.     __property Width ;
  682. public:
  683.     /* TGraphicControl.Destroy */ __fastcall virtual ~TQRCustomControl(void) { }
  684.     
  685. };
  686.  
  687. enum TQRShapeType { qrsRectangle, qrsCircle, qrsVertLine, qrsHorLine, qrsTopAndBottom, qrsRightAndLeft 
  688.     };
  689.  
  690. class __declspec(delphiclass) TQRShape;
  691. class __declspec(pascalimplementation) TQRShape : public TQRCustomControl
  692. {
  693.     typedef TQRCustomControl inherited;
  694.     
  695. private:
  696.     TQRShapeType FShape;
  697.     Graphics::TBrush* FBrush;
  698.     Graphics::TPen* FPen;
  699.     void __fastcall SetBrush(Graphics::TBrush* Value);
  700.     void __fastcall SetPen(Graphics::TPen* Value);
  701.     void __fastcall SetShape(TQRShapeType Value);
  702.     
  703. public:
  704.     virtual void __fastcall Paint(void);
  705.     virtual void __fastcall Print(int X, int Y);
  706.     void __fastcall StyleChanged(System::TObject* sender);
  707.     __fastcall virtual TQRShape(Classes::TComponent* AOwner);
  708.     __fastcall virtual ~TQRShape(void);
  709.     
  710. __published:
  711.     __property Graphics::TBrush* Brush = {read=FBrush, write=SetBrush, nodefault};
  712.     __property Height ;
  713.     __property Graphics::TPen* Pen = {read=FPen, write=SetPen, nodefault};
  714.     __property TQRShapeType Shape = {read=FShape, write=SetShape, nodefault};
  715.     __property Width ;
  716. };
  717.  
  718. class __declspec(delphiclass) TQRLabel;
  719. class __declspec(pascalimplementation) TQRLabel : public TQRCustomControl
  720. {
  721.     typedef TQRCustomControl inherited;
  722.     
  723. private:
  724.     Graphics::TBrush* FBrush;
  725.     bool FFramed;
  726.     Graphics::TPen* FPen;
  727.     void __fastcall SetBrush(Graphics::TBrush* Value);
  728.     void __fastcall SetPen(Graphics::TPen* Value);
  729.     __property bool Framed = {read=FFramed, write=FFramed, nodefault};
  730.     __property Graphics::TPen* Pen = {read=FPen, write=SetPen, nodefault};
  731.     __property Graphics::TBrush* Brush = {read=FBrush, write=SetBrush, nodefault};
  732.     
  733. public:
  734.     __fastcall virtual TQRLabel(Classes::TComponent* AOwner);
  735.     __fastcall virtual ~TQRLabel(void);
  736.     virtual void __fastcall Print(int X, int Y);
  737.     virtual void __fastcall Stretch(int &size);
  738.     
  739. __published:
  740.     __property Alignment ;
  741.     __property AutoSize ;
  742.     __property Caption ;
  743.     __property AlignToBand ;
  744.     __property Color ;
  745.     __property Font ;
  746.     __property OnPrint ;
  747.     __property ParentFont ;
  748.     __property Transparent ;
  749. };
  750.  
  751. class __declspec(delphiclass) TQRMemo;
  752. class __declspec(pascalimplementation) TQRMemo : public Stdctrls::TCustomMemo
  753. {
  754.     typedef Stdctrls::TCustomMemo inherited;
  755.     
  756. private:
  757.     TQuickReport* FReport;
  758.     void __fastcall ReadStringData(Classes::TReader* Reader);
  759.     
  760. protected:
  761.     virtual void __fastcall DefineProperties(Classes::TFiler* Filer);
  762.     
  763. public:
  764.     __fastcall virtual TQRMemo(Classes::TComponent* AOwner);
  765.     void __fastcall Print(int x, int y);
  766.     __property TQuickReport* ParentReport = {read=FReport, write=FReport, nodefault};
  767.     
  768. __published:
  769.     __property Alignment ;
  770.     __property Color ;
  771.     __property Font ;
  772.     __property Lines ;
  773.     __property ParentFont ;
  774.     __property WordWrap ;
  775. public:
  776.     /* TCustomMemo.Destroy */ __fastcall virtual ~TQRMemo(void) { }
  777.     
  778. public:
  779.     /* TWinControl.CreateParented */ __fastcall TQRMemo(HWND ParentWindow) : Stdctrls::TCustomMemo(ParentWindow
  780.         ) { }
  781.     
  782. };
  783.  
  784. class __declspec(delphiclass) TQRDBText;
  785. class __declspec(pascalimplementation) TQRDBText : public TQRCustomControl
  786. {
  787.     typedef TQRCustomControl inherited;
  788.     
  789. protected:
  790.     Dbtables::TFieldDataLink* FDataLink;
  791.     System::AnsiString __fastcall GetDataField(void);
  792.     Db::TDataSource* __fastcall GetDataSource(void);
  793.     void __fastcall DataChange(System::TObject* Sender);
  794.     virtual void __fastcall Notification(Classes::TComponent* AComponent, Classes::TOperation Operation
  795.         );
  796.     void __fastcall SetDataField(const System::AnsiString Value);
  797.     void __fastcall SetDataSource(Db::TDataSource* Value);
  798.     
  799. public:
  800.     __fastcall virtual TQRDBText(Classes::TComponent* AOwner);
  801.     __fastcall virtual ~TQRDBText(void);
  802.     virtual void __fastcall Print(int X, int Y);
  803.     virtual void __fastcall Stretch(int &size);
  804.     
  805. __published:
  806.     __property Alignment ;
  807.     __property AlignToBand ;
  808.     __property AutoSize ;
  809.     __property Color ;
  810.     __property Db::TDataSource* DataSource = {read=GetDataSource, write=SetDataSource, nodefault};
  811.     __property System::AnsiString DataField = {read=GetDataField, write=SetDataField, nodefault};
  812.     __property Font ;
  813.     __property OnPrint ;
  814.     __property ParentFont ;
  815.     __property Transparent ;
  816. };
  817.  
  818. enum TQRCalcOperation { qrcSUM, qrcCOUNT, qrcMAX, qrcMIN, qrcAVERAGE };
  819.  
  820. class __declspec(pascalimplementation) TQRDBCalc : public TQRDBText
  821. {
  822.     typedef TQRDBText inherited;
  823.     
  824. private:
  825.     long FCount;
  826.     double FRealMax;
  827.     double FRealMin;
  828.     long FIntMax;
  829.     long FIntMin;
  830.     long FIntSum;
  831.     TQRCalcOperation FOperation;
  832.     System::AnsiString FPrintMask;
  833.     double FRealSum;
  834.     TQRBand* FResetBand;
  835.     long __fastcall GetAsInteger(void);
  836.     double __fastcall GetAsReal(void);
  837.     void __fastcall CreateCaption(void);
  838.     void __fastcall Calculate(void);
  839.     virtual void __fastcall Notification(Classes::TComponent* AComponent, Classes::TOperation Operation
  840.         );
  841.     void __fastcall SetResetBand(TQRBand* Value);
  842.     void __fastcall SetOperation(TQRCalcOperation Value);
  843.     
  844. public:
  845.     __fastcall virtual TQRDBCalc(Classes::TComponent* AOwner);
  846.     virtual void __fastcall Print(int X, int Y);
  847.     void __fastcall Start(void);
  848.     __property long AsInteger = {read=GetAsInteger, nodefault};
  849.     __property double AsReal = {read=GetAsReal};
  850.     
  851. __published:
  852.     __property OnPrint ;
  853.     __property TQRCalcOperation Operation = {read=FOperation, write=SetOperation, nodefault};
  854.     __property ParentFont ;
  855.     __property System::AnsiString PrintMask = {read=FPrintMask, write=FPrintMask, nodefault};
  856.     __property TQRBand* ResetBand = {read=FResetBand, write=SetResetBand, nodefault};
  857. public:
  858.     /* TQRDBText.Destroy */ __fastcall virtual ~TQRDBCalc(void) { }
  859.     
  860. };
  861.  
  862. enum TQRSysDataType { qrsTime, qrsDate, qrsDateTime, qrsPageNumber, qrsReportTitle, qrsDetailCount, 
  863.     qrsDetailNo };
  864.  
  865. class __declspec(delphiclass) TQRSysData;
  866. class __declspec(pascalimplementation) TQRSysData : public TQRCustomControl
  867. {
  868.     typedef TQRCustomControl inherited;
  869.     
  870. private:
  871.     TQRSysDataType FData;
  872.     System::AnsiString FText;
  873.     void __fastcall SetData(TQRSysDataType Value);
  874.     HIDESBASE void __fastcall SetText( System::AnsiString Value);
  875.     void __fastcall CreateCaption(void);
  876.     
  877. public:
  878.     __fastcall virtual TQRSysData(Classes::TComponent* AOwner);
  879.     virtual void __fastcall Paint(void);
  880.     virtual void __fastcall Print(int X, int Y);
  881.     
  882. __published:
  883.     __property Alignment ;
  884.     __property AlignToBand ;
  885.     __property AutoSize ;
  886.     __property Color ;
  887.     __property TQRSysDataType Data = {read=FData, write=SetData, nodefault};
  888.     __property Font ;
  889.     __property OnPrint ;
  890.     __property ParentFont ;
  891.     __property System::AnsiString Text = {read=FText, write=SetText, nodefault};
  892.     __property Transparent ;
  893. public:
  894.     /* TGraphicControl.Destroy */ __fastcall virtual ~TQRSysData(void) { }
  895.     
  896. };
  897.  
  898. class __declspec(delphiclass) TQRDesignModePreview;
  899. class __declspec(pascalimplementation) TQRDesignModePreview : public Dsgnintf::TComponentEditor
  900. {
  901.     typedef Dsgnintf::TComponentEditor inherited;
  902.     
  903. private:
  904.     void __fastcall ShowAboutBox(void);
  905.     
  906. protected:
  907.     TQuickReport* FReport;
  908.     
  909. public:
  910.     __fastcall virtual TQRDesignModePreview(Classes::TComponent* AComponent, Dsgnintf::TFormDesigner* ADesigner
  911.         );
  912.     virtual void __fastcall Edit(void);
  913.     virtual void __fastcall ExecuteVerb(int Index);
  914.     virtual System::AnsiString __fastcall GetVerb(int Index);
  915.     virtual int __fastcall GetVerbCount(void);
  916. public:
  917.     /* TObject.Destroy */ __fastcall virtual ~TQRDesignModePreview(void) { }
  918.     
  919. };
  920.  
  921. //-- var, const, procedure ---------------------------------------------------
  922. #define QuickReportMaxGroups (Byte)(9)
  923. #define QuickReportVersion (Byte)(100)
  924. #define QRFileFormatVersion (Byte)(1)
  925. #define cQRVersion "1.0d"
  926. extern System::AnsiString cQRProgressCaption;
  927. extern System::AnsiString cQRPreviewCaption;
  928. #define cQRPageShadowWidth (Byte)(2)
  929. #define cQRPageFrameWidth (Byte)(1)
  930. #define cQRPageShadowColor (int)(0)
  931. #define cQRGroupStartValue "#$&QuIcKrEpOrT&$#"
  932. extern long qrOrgRes;
  933. extern TQRZoomState qrDefaultZoom;
  934. extern TQRPrinter* QRPrinter;
  935. extern void __fastcall Register(void);
  936. //-- template instantiations -------------------------------------------------
  937. template class SmallString<80> ;
  938.  
  939. }    /* namespace Quickrep */
  940.  
  941. #pragma warn .par
  942. #pragma warn .hid 
  943. #pragma warn .inl
  944.  
  945. #if !defined(NO_IMPLICIT_NAMESPACE_USE)
  946. using namespace Quickrep;
  947. #endif
  948. //-- end unit ----------------------------------------------------------------
  949. #endif    // QuickRep
  950.