COMPASSi/trunk/code/3rd/CCSReport_2/include/base/ccsbandinterface.h

121 lines
3.9 KiB
C
Raw Normal View History

2025-06-25 15:06:42 +08:00
#ifndef CCSBANDINTERFACE_H
#define CCSBANDINTERFACE_H
#include "ccsbaseiteminterface.h"
#include "QFont"
#include "qglobal.h"
#include "ccsreport_global.h"
namespace CCS_Report {
class CCSBaseItemInterface;
class CCSBandInterfacePrivate;
class CCSTableInterface;
class CCSTable;
class CCS_COMPASSREPORT_EXPORT CCSBandInterface:public CCSBaseItemInterface
{
Q_OBJECT
Q_PROPERTY(QFont font READ font WRITE setFont)
Q_PROPERTY(int marginLeft READ marginLeft WRITE setMarginLeft)
Q_PROPERTY(int marginTop READ marginTop WRITE setMarginTop)
Q_PROPERTY(int marginRight READ marginRight WRITE setMarginRight)
Q_PROPERTY(int marginBottom READ marginBottom WRITE setMarginBottom)
// Q_PROPERTY(CCS_Report::Margins margins READ margins WRITE setMargins)
Q_PROPERTY(int orientation READ orientation WRITE setOrientation)
Q_PROPERTY(QPen showline READ showline WRITE SetShowLine)
Q_PROPERTY(QString version READ version WRITE SetVersion)
public:
CCSBandInterface(QObject *parent=0);
~CCSBandInterface();
virtual CCSBaseItemInterface * createInstance(QObject * parent) const=0;
virtual CCSBaseItemInterface * clone(bool withChildren = true, bool init = true) const=0;
virtual void SetValue(const QString &text,int iPos=0) = 0;
virtual void exeFunction(ReportFunPara& arg)=0;
int marginLeft();
int marginTop();
int marginRight();
int marginBottom();
void setMarginLeft(int margin) ;
void setMarginTop(int margin) ;
void setMarginRight(int margin);
void setMarginBottom(int margin);
void setMargin(const int &left,const int &right,const int &top,const int &bottom);
void setMargin(const QMargins& margin);
QMargins margins() const;
int orientation() const;
void setOrientation(int& o);
// CCS_Report::Margins margins() const;
// void setMargins(const CCS_Report::Margins& margin);
QFont font() const;
void setFont(const QFont & font);
QPen showline() const;
void SetShowLine(const QPen& flag);
QString version() const;
void SetVersion(const QString& strVer);
QList<CCSTableInterface*> tableitems();
public:
int ParseTableItems();
int ParseItems(QList<QPair<CCSTableInterface*, int>>& listTableinfo); //add 20230815 用于标识动态表删除后,后续表的换页情况
protected:
/// <summary>
/// 用于标识动态表如果无数据且标识不显示且删除后,后续表的换页情况(是否新页和方向的信息)
/// 用于处理未用到的表被删除后,前后表的换页问题
/// </summary>
//void handleEmptyTables(QList<QPair<CCSTable*, QList<int>>>& tableinfo);
void handleEmptyTables(QList<QPair<CCSTableInterface*, int>>& iteminfo);
protected:
Q_DECLARE_PRIVATE(CCSBandInterface)
CCSBandInterface(CCSBandInterfacePrivate *dd, QObject * parent);
virtual CCSBaseItemInterface * itemClone() const =0;
private:
};
class CCSBandInterfacePrivate : public CCSBaseItemInterfacePrivate
{
public:
CCSBandInterfacePrivate()
:CCSBaseItemInterfacePrivate(),
m_iMarginBottom(0),
m_iMarginRight(0),
m_iMarginTop(0),
m_iMarginLeft(0),
m_iOrientation(0),m_bLine(QPen()), m_strVersion("")
{
// m_margins = QMargins();
m_bLine.setStyle(Qt::NoPen);
}
CCSBandInterfacePrivate(const CCSBandInterfacePrivate & p)
:CCSBaseItemInterfacePrivate(p),
m_iMarginBottom(p.m_iMarginBottom),
m_iMarginRight(p.m_iMarginRight),
m_iMarginTop(p.m_iMarginTop),
m_iMarginLeft(p.m_iMarginLeft),
m_Font(p.m_Font),
m_iOrientation(p.m_iOrientation),
m_bLine(p.m_bLine),
m_strVersion(p.m_strVersion)
{}
// Margins margins;
int m_iMarginLeft;
int m_iMarginTop;
int m_iMarginBottom;
int m_iMarginRight;
int m_iOrientation;
QPen m_bLine;
QFont m_Font;
QString m_strVersion;
};
}
#endif // CCSBANDINTERFACE_H