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

📄 erpreportcontrol.h

📁 科思ERP部分源码及控件
💻 H
📖 第 1 页 / 共 3 页
字号:
//---------------------------------------------------------------------------
#ifndef ErpReportControlH
#define ErpReportControlH
//---------------------------------------------------------------------------
#include <Controls.hpp>
#include <Forms.hpp>
#include <Classes.hpp>
#include <Graphics.hpp>
#include <syncobjs.hpp>
#include <printers.hpp>
#include <systobj.h>
#include "Calc.h"
#include "BaseGlobeVars.h"
#include "ClientDcom.h"
#include "container.h"

extern bool FGuoQiLe;

class PACKAGE TReport;
class PACKAGE TBillReport;
//class PACKAGE TFinReport;
class PACKAGE TRptControl;
class PACKAGE TRptComponent;
class PACKAGE TRptContainer;
class PACKAGE TRptCell;
class PACKAGE TRptField;
class PACKAGE TRptVariable;
class PACKAGE TRptLines;
class PACKAGE TRptGlobalInfo;
class PACKAGE TRptComponentList;
class PACKAGE TRptFields;
class PACKAGE TRptVariables;
class PrintThread;

enum TRptUnit { uCm, uMm, uInch, uPoint};
enum TRptMouseRect { mrCentre, mrVBorder, mrHBorder };
enum TRptPattern { pAtLeft, pAtRight, pRow, pCol };
enum TRptFieldType { rftString, rftInteger, rftFloat, rftDateTime};
enum TRptDragMode { dmNone, dmVDrag, dmHDrag };
enum TRptMode { rmDesign, rmPreview, rmAddRecord, rmPrinting};
enum TRptContainerType { ctEmpty, ctReportHead, ctReportTail,
             ctPageHead, ctPageTail, ctGroupHead, ctGroupTail};
enum TRptAlign { raVLeft, raVMiddle, raVRight, raHTop, raHMiddle, raHBottom};
enum TRptBiasLine { rbNone,
                    rbLeftTopRight, rbLeftTopBottom,
                    rbLeftBottomTop, rbLeftBottomRight,
                    rbRightTopLeft, rbRightTopBottom,
                    rbRightBottomTop, rbRightBottomLeft};

bool PointIn(TRect Rect, TPoint Point);

//--------------------------------------------
    //TReport
//--------------------------------------------
class TReport: public TComponent
{
      friend TRptComponent;
      friend TRptContainer;
      friend TRptCell;
      friend TRptLines;
      friend TRptFields;
      friend TRptGlobalInfo;
      friend TRptVariables;
      friend TRptControl;
  private:
      TRptFields *FFields;
      TRptVariables *FVariables;
      TFileStream * FPageFile;
      TCriticalSection *FPageOpt;
      TStrings *FPages;
      AnsiString FPageFileName;
      int FCurrOptPage;
      int __fastcall GetPageCount();
      void __fastcall CheckPosition();
      //打开保存文件
  protected:
      virtual void __fastcall WriteInt(const int Value);
      virtual void __fastcall WriteDouble(const double Value);
      virtual void __fastcall WriteString(const AnsiString Value);
      virtual int __fastcall ReadInt();
      virtual double __fastcall ReadDouble();
      virtual AnsiString __fastcall ReadString();
      virtual AnsiString __fastcall SetField(const AnsiString Value) = 0;
      void __fastcall SaveToStream();
      void __fastcall LoadFromStream();
      void __fastcall ClearPage();
      TFileStream *ReportStream;
      Graphics::TBitmap * TempDraw;
      int FSaveType;
      bool Maked;
      bool Making;
  public:
      __fastcall TReport(Classes::TComponent * AOwner);
      __fastcall ~TReport();
      virtual void __fastcall LoadFromFile(AnsiString AFileName);
      virtual void __fastcall SaveToFile(AnsiString AFileName);
      virtual void __fastcall Print(AnsiString AWhere) = 0;
      virtual void __fastcall Preview() = 0;
      void __fastcall GetPage(int Index, TRptContainer *APage);
      void __fastcall SetPage(int Index, TRptContainer *APage);
      virtual bool __fastcall GetComplet() = 0;
      AnsiString FileName;
      TRptGlobalInfo *GlobalInfo;
      __property int PageCount = {read=GetPageCount};
      __property TRptFields *Fields = {read=FFields};
      __property TRptVariables *Variables = {read=FVariables};
      __property bool Complet = {read=GetComplet};
};
//------------------------------------------------------------------------
    //TReport
    
    //TBillReport
//------------------------------------------------------------------------
class TBillReport: public TReport
{
      friend PrintThread;
  private:
      PrintThread *pt;  
      TStrings * FPagePosition;
      TStrings * BkFormat;
      bool FLastVariable;
      TRptContainer *FMakePage;
      bool FFirst;
      TStrings * SaveStrings;
      int ReadIndex;
      TCriticalSection *csMake;
      void __fastcall SaveToStrings(TStrings * AStrings);
      void __fastcall LoadFromStrings(TStrings * AStrings);
      void __fastcall StartAddRecord();
      void __fastcall AddRecord();
      void __fastcall LastRecord();
      void __fastcall GetFieldDefineFromServer();
      void __fastcall SetCurrTime();
      void __fastcall MakeTemp(AnsiString AWhere, int APageNum); //add 2003-02-09
  protected:
      void __fastcall WriteInt(const int Value);
      void __fastcall WriteDouble(const double Value);
      void __fastcall WriteString(const AnsiString Value);
      int __fastcall ReadInt();
      double __fastcall ReadDouble();
      AnsiString __fastcall ReadString();
      AnsiString __fastcall SetField(const AnsiString Value);
      AnsiString __fastcall GetFieldValue(char * c1, char * c2);
      char * __fastcall FindField(char * c, bool head);
      bool __fastcall GetComplet();
  public:
      __fastcall TBillReport(TComponent * AOwner);
      __fastcall ~TBillReport();
      void __fastcall Print(AnsiString AWhere);
      void __fastcall Preview();
      void __fastcall SaveToServer(AnsiString ATemplet, AnsiString ADesc);
      void __fastcall LoadFromServer(AnsiString ATemplet, AnsiString ADesc);
      void __fastcall MakeReport(AnsiString AWhere);
      void __fastcall MakeTest(AnsiString AWhere);
      void __fastcall Restore();
      AnsiString RptTemplet;
      AnsiString RptDesc;
};
//----------------------------------------------------------------------
    //TBillReport

    //TFinReport
//----------------------------------------------------------------------
class TFinReport : public TReport
{
  private:
  protected:
      AnsiString __fastcall SetField(const AnsiString Value);
  public:
      __fastcall TFinReport(TComponent * AOwner);
      __fastcall ~TFinReport();
      void __fastcall LoadFromServer();
      void __fastcall SaveToServer();
      void __fastcall Print(AnsiString AWhere);
      void __fastcall Preview();
      bool __fastcall GetComplet();
};
//-------------------------------------------------------------------------
    //TFinReport

    //TRptControl
//-------------------------------------------------------------------------
class TRptControl : public TScrollingWinControl
{
  friend TRptCell;
  private:
      void __fastcall DrawBorderLines();
      //Drag
      TRptDragMode FDragMode;
      int FMinDrag;
      int FMaxDrag;
      bool FDragStarted;
      int FOldMouse;
      int FDragStart; //拖动时的前一画点
      TPoint FStartPoint;
      TRptComponent *FOldSelect;
      void __fastcall SetMinDrag(int Value);
      void __fastcall SetMaxDrag(int Value);
      void __fastcall StartDrag(int X, int Y);
      void __fastcall Draging(int X, int Y);
      void __fastcall EndDrag(int X, int Y);
      //output
      void __fastcall DrawFocusRect(TRect Rect);
      void __fastcall ReDraw();

      TEdit * EditBox;
      int bkSelStart;
      void __fastcall EditBoxEnter(TObject *Sender);
      void __fastcall EditBoxExit(TObject *Sender);
      void __fastcall EditBoxKeyUp(TObject *Sender, WORD &Key,
                               TShiftState Shift);
      void __fastcall EditBoxKeyDown(TObject *Sender, WORD &Key,
                               TShiftState Shift);
      Classes::TNotifyEvent FOnSelected;
      Classes::TNotifyEvent FOnGetFocus;
      TRptContainer * FDesignPage;

      Graphics::TCanvas* FCanvas;
      void __fastcall GlobalInfoChange(TObject *Sender);

      MESSAGE void __fastcall WMKeyDown(Messages::TWMKey &Message);
      MESSAGE void __fastcall WMKeyUp(Messages::TWMKey &Message);
  protected:
      DYNAMIC void __fastcall MouseDown(TMouseButton Button, Classes::TShiftState Shift, int X, int Y);
      DYNAMIC void __fastcall MouseMove(Classes::TShiftState Shift, int X, int Y);
      DYNAMIC void __fastcall MouseUp(TMouseButton Button, Classes::TShiftState Shift, int X, int Y);
      DYNAMIC void __fastcall Click(void);
      DYNAMIC void __fastcall DblClick(void);
//      DYNAMIC void __fastcall KeyDown(Word &Key, Classes::TShiftState Shift);
//      DYNAMIC void __fastcall KeyUp(Word &Key, Classes::TShiftState Shift);
      DYNAMIC void __fastcall KeyPress(char &Key);
      void __fastcall PaintWindow(HDC DC);
      TComponent * FReport;
      virtual TComponent * __fastcall GetReport();
      virtual void __fastcall SetReport(TComponent *ACom);
  public:
      __fastcall TRptControl(Classes::TComponent * AOwner, TReport * AReport);
      __fastcall ~TRptControl();
      void __fastcall WndProc(Messages::TMessage &Message);
      void __fastcall Paint(void);
      void __fastcall ZoomTo(double Size);
      void __fastcall Coordinate();
      void __fastcall Adjust();
      void __fastcall VDivide();
      void __fastcall HDivide();
      void __fastcall Delete();
      TRptGlobalInfo *GlobalInfo;
      TRptComponent * Select;
      TRptMode Mode;
      __property TComponent * Report = {read=GetReport, write=SetReport};
      __property Graphics::TCanvas* Canvas = {read=FCanvas};
      __property TRptContainer* DesignPage = {read=FDesignPage};
      __property OnMouseMove;
      __property OnClick;
      __property OnDblClick;
      __property OnKeyDown;
      __property OnKeyPress;
      __property OnKeyUp;
      __property Enabled;
      __property Classes::TNotifyEvent OnSelected = {read=FOnSelected, write=FOnSelected};
BEGIN_MESSAGE_MAP
    VCL_MESSAGE_HANDLER(WM_KEYDOWN, TWMKeyDown, WMKeyDown);
    VCL_MESSAGE_HANDLER(WM_KEYUP, TWMKeyUp, WMKeyUp);

⌨️ 快捷键说明

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