📄 lxaccountstmtprint.cc
字号:
bbox = painter->boundingRect ( leftMargin, topEdge, pageWidth, headTextFieldHeight, Qt::AlignLeft | Qt::AlignTop, labelInstitute); lw1 = bbox.width(); instituteWidth = instituteWidth < lw1 ? lw1 : instituteWidth; bbox = painter->boundingRect ( leftMargin, topEdge, pageWidth, headTextFieldHeight, Qt::AlignLeft | Qt::AlignTop, labelAccount); lw1 = bbox.width(); accountWidth = accountWidth < lw1 ? lw1 : accountWidth; bbox = painter->boundingRect ( leftMargin, topEdge, pageWidth, headTextFieldHeight, Qt::AlignLeft | Qt::AlignTop, labelCode); lw1 = bbox.width(); codeWidth = codeWidth < lw1 ? lw1 : codeWidth; bbox = painter->boundingRect ( leftMargin, topEdge, pageWidth, headTextFieldHeight, Qt::AlignLeft | Qt::AlignTop, labelBuchungstext); lw1 = bbox.width(); textWidth = textWidth < lw1 ? lw1 : textWidth; bbox = painter->boundingRect ( leftMargin, topEdge, pageWidth, headTextFieldHeight, Qt::AlignLeft | Qt::AlignTop, labelUmsatz); lw1 = bbox.width(); turnoverWidth = dateWidth < lw1 ? lw1 : turnoverWidth; bbox = painter->boundingRect ( leftMargin, topEdge, pageWidth, headTextFieldHeight, Qt::AlignLeft | Qt::AlignTop, labelSaldo); lw1 = bbox.width(); balanceWidth = balanceWidth < lw1 ? lw1 : balanceWidth; int sWidth = dateWidth + valutaWidth + instituteWidth + accountWidth + codeWidth + textWidth + turnoverWidth + balanceWidth; double sfac = (double)(pageWidth - 2*edgeMargin) / (double)sWidth; dateWidth = (int)ceil((double)dateWidth * sfac); valutaWidth = (int)ceil((double)valutaWidth * sfac); instituteWidth = (int)ceil((double)instituteWidth * sfac); accountWidth = (int)ceil((double)accountWidth * sfac); codeWidth = (int)ceil((double)codeWidth * sfac); textWidth = (int)ceil((double)textWidth * sfac); turnoverWidth = (int)ceil((double)turnoverWidth * sfac); balanceWidth = (int)ceil((double)balanceWidth * sfac); sWidth = dateWidth + valutaWidth + instituteWidth + accountWidth + codeWidth + textWidth + turnoverWidth + balanceWidth; if ( sWidth > (pageWidth - 2*edgeMargin) ){ textWidth -= sWidth - (pageWidth - 2*edgeMargin); }}void LxAccountStmtPrint::printHeader ( ){ painter->setFont( largeFont ); painter->drawText ( headTxtRecLeftOts, Qt::AlignLeft | Qt::AlignTop, labelBank ); painter->drawText ( headTxtRecLeftOts, Qt::AlignLeft | Qt::AlignBottom, labelInhaber ); painter->drawText ( headTxtRecLeftIns, Qt::AlignLeft | Qt::AlignTop, bank ); painter->drawText ( headTxtRecLeftIns, Qt::AlignLeft | Qt::AlignBottom, inhaber ); painter->drawText ( headTxtRecRightIns, Qt::AlignLeft | Qt::AlignTop, labelBlz ); painter->drawText ( headTxtRecRightIns, Qt::AlignLeft | Qt::AlignBottom, labelKtonumber ); painter->drawText ( headTxtRecRightOts, Qt::AlignLeft | Qt::AlignTop, blz ); painter->drawText ( headTxtRecRightOts, Qt::AlignLeft | Qt::AlignBottom, ktonumber ); painter->setFont( hugeFont ); painter->drawText ( headTxtRecCenter, Qt::AlignCenter, ktoname ); painter->drawLine (leftMargin, topMargin, leftMargin + pageWidth, topMargin ); painter->drawLine (leftMargin, topMargin + headTextFieldHeight + 2*ruleHeight, leftMargin + pageWidth, topMargin + headTextFieldHeight + 2*ruleHeight); int x = leftMargin + edgeMargin; int y = topMargin + headTextFieldHeight + 2*ruleHeight; int ny = y + textSpacing; painter->setFont( normalFont ); txtRec.setTop( y ); txtRec.setBottom( ny ); // column 1, datum txtRec.setLeft( x ); x += dateWidth; txtRec.setRight( x ); painter->drawText ( txtRec, Qt::AlignLeft | Qt::AlignVCenter, labelDatum ); // column 2, valuta txtRec.setLeft( x ); x += valutaWidth; txtRec.setRight( x ); painter->drawText ( txtRec, Qt::AlignLeft | Qt::AlignVCenter, labelValuta ); // column 3, institute txtRec.setLeft( x ); x += instituteWidth; txtRec.setRight( x ); painter->drawText ( txtRec, Qt::AlignLeft | Qt::AlignVCenter, labelInstitute ); // column 4, account txtRec.setLeft( x ); x += accountWidth; txtRec.setRight( x ); painter->drawText ( txtRec, Qt::AlignLeft | Qt::AlignVCenter, labelAccount ); // column 5, code txtRec.setLeft( x ); x += codeWidth; txtRec.setRight( x ); painter->drawText ( txtRec, Qt::AlignLeft | Qt::AlignVCenter, labelCode ); // column 6, buchungstext txtRec.setLeft( x ); x += textWidth; txtRec.setRight( x ); painter->drawText ( txtRec, Qt::AlignLeft | Qt::AlignVCenter, labelBuchungstext ); // column 7, umsatz txtRec.setLeft( x ); x += turnoverWidth; txtRec.setRight( x ); painter->drawText ( txtRec, Qt::AlignRight | Qt::AlignVCenter, labelUmsatz ); // column 8, saldo txtRec.setLeft( x ); x += balanceWidth; txtRec.setRight( x ); painter->drawText ( txtRec, Qt::AlignRight | Qt::AlignVCenter, labelSaldo ); painter->drawLine (leftMargin, ny, leftMargin + pageWidth, ny);}void LxAccountStmtPrint::printStmts (AccListVItemList *lvItems ){ if ( lvItems->isEmpty () ) // nothing to print return; printHeader (); LxAccountListViewItem *item; int x, y, ny, leftEdge = leftMargin + edgeMargin; painter->setFont( normalFont ); for (item = lvItems->first(), x = leftEdge, y = topMargin + headHeight + ruleHeight, ny = y + textSpacing; item != 0; item = lvItems->next(), x = leftEdge, y += 2*ruleHeight, ny = y + textSpacing ){ QStringList &btxt = item->getBText(); if ( (btxt.count() > 1 ? (ny + textSpacing) : ny) > bottomEdge ){ printer->newPage (); printHeader (); painter->setFont( normalFont ); y = topMargin + headHeight + ruleHeight; ny = y + textSpacing; } // paint background pattern rectangle bgRec.setTop( y ); bgRec.setBottom( ny ); painter->setPen( Qt::NoPen ); painter->fillRect ( bgRec, brush ); painter->setPen( penColor ); txtRec.setTop( y ); txtRec.setBottom( ny ); // column 1, datum txtRec.setLeft( x ); x += dateWidth; txtRec.setRight( x ); painter->drawText ( txtRec, Qt::AlignLeft | Qt::AlignVCenter, item->text(0) ); // column 2, valuta txtRec.setLeft( x ); x += valutaWidth; txtRec.setRight( x ); painter->drawText ( txtRec, Qt::AlignLeft | Qt::AlignVCenter, item->text(1) ); // column 3, institute txtRec.setLeft( x ); x += instituteWidth; txtRec.setRight( x ); painter->drawText ( txtRec, Qt::AlignLeft | Qt::AlignVCenter, item->text(2) ); // column 4, account txtRec.setLeft( x ); x += accountWidth; txtRec.setRight( x ); painter->drawText ( txtRec, Qt::AlignLeft | Qt::AlignVCenter, item->text(3) ); // column 5, code txtRec.setLeft( x ); x += codeWidth; txtRec.setRight( x ); painter->drawText ( txtRec, Qt::AlignLeft | Qt::AlignVCenter, item->text(4) ); // column 6, buchungstext txtRec.setLeft( x ); x += textWidth; txtRec.setRight( x ); it = btxt.begin(); painter->drawText ( txtRec, Qt::AlignLeft | Qt::AlignVCenter, *it ); bTxtRec = txtRec; // column 7, umsatz txtRec.setLeft( x ); x += turnoverWidth; txtRec.setRight( x ); painter->drawText ( txtRec, Qt::AlignRight | Qt::AlignVCenter, item->text(6) ); // column 8, saldo txtRec.setLeft( x ); x += balanceWidth; txtRec.setRight( x ); painter->drawText ( txtRec, Qt::AlignRight | Qt::AlignVCenter, item->text(7) ); // rest column 6, buchungstext for( ++it, y += textSpacing, ny = y + textSpacing; it != btxt.end(); ++it, y += textSpacing, ny = y + textSpacing ){ if ( ny > bottomEdge ){ printer->newPage (); printHeader (); painter->setFont( normalFont ); y = topMargin + headHeight + ruleHeight; ny = y + textSpacing; } bTxtRec.setTop( y ); bTxtRec.setBottom( ny ); painter->drawText ( bTxtRec, Qt::AlignLeft | Qt::AlignVCenter, *it ); } }}void LxAccountStmtPrint::print ( AccListVItemList *lst){ CHECK_PTR( printer ); if ( printer->setup( lView ) ) { if ( !painter->begin( printer ) ) return; setup (); printStmts ( lst ); painter->end( ); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -