📄 erpreportcontrol.h
字号:
//---------------------------------------------------------------------------
#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 + -