Aggiunta fincatura automatica

git-svn-id: svn://10.65.10.50/trunk@2407 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 1996-01-09 10:38:06 +00:00
parent 68f398ca96
commit 6c141e99a4
2 changed files with 27 additions and 12 deletions

View File

@ -45,6 +45,7 @@ class TEC_form : public TForm
int _fincatura; // 0 = nessuna, 1 = testo, 2 = grafica
word _num_rip; // Numero di righe usate per i riporti
word _total_rows; // Numero di righe usate per i totali
word _maxtot; // Numero massimo di totali da stampare
protected:
void init_header(const TMask& m);
@ -841,12 +842,8 @@ void TEC_form::stampa_pedata(TPrinter& pr)
THash_object* tot[MAXTOT];
word num_rip = ordina_totali_per_valuta(tot);
// La prima riga del footer deve essere lasciata libera per la fincatura
// Ogni sottosezione di totale occupa _total_rows righe: per cui devo calcolare
// quanti totali ci stanno nelle righe riservate al footer
const word maxtot = (section('F').height()-1) / _total_rows;
if (num_rip > maxtot)
num_rip = maxtot;
if (num_rip > _maxtot)
num_rip = _maxtot;
for (word j = 0; j < num_rip; j++)
print_total(j*_total_rows+1, *tot[j]);
@ -1013,17 +1010,26 @@ TEC_form::TEC_form(const TEC_mask& m, bool gesval)
pr.setheaderhandler(ec_header_handler);
TPrint_section& head = section('H');
pr.headerlen(head.height());
pr.setfooterhandler(ec_footer_handler);
const TPrint_section& foot = section('F');
pr.footerlen(foot.height());
TForm_item& flags = find_field('H', last_page, PEC_FLAGS);
TToken_string f(flags.prompt());
_in_valuta = gesval && f.get_char(0) == 'X'; // Il profilo e' in valuta se c'e' il flag di valuta
_fincatura = f.get_int(1);
init_header(m); // Set fixed text
pr.setfooterhandler(ec_footer_handler);
const TPrint_section& foot = section('F');
pr.footerlen(foot.height());
if (_fincatura > 0)
{
const int first = head.height()-2;
const int last = pr.formlen();
const int horiz[] = { first+2, last-foot.height()+1, 0 };
genera_fincatura(odd_page, first, last, horiz);
}
init_header(m); // Set fixed text
_total_rows = 1;
for (word fi = 0; fi < foot.fields(); fi++)
{
@ -1035,6 +1041,15 @@ TEC_form::TEC_form(const TEC_mask& m, bool gesval)
_total_rows = y;
}
}
_maxtot = f.get_int(3);
// La prima e l'ultima riga del footer devono essere lasciate libere per la fincatura
// Ogni totale occupa _total_rows righe: per cui posso calcolare il massimo di totali
// che posso stampare nel footer.
const word max = (foot.height() - 2) / _total_rows;
if (_maxtot <= 0 || _maxtot > max)
_maxtot = max;
}
TEC_form::~TEC_form()

View File

@ -127,7 +127,7 @@ class TESSL_form : public TForm
int _fincatura; // 0 = nessuna, 1 = testo, 2 = grafica
word _num_rip; // numero di righe usate per i riporti
word _total_rows; // numero di righe usate per i totali
int _maxtot; // numero massimo di totali
word _maxtot; // numero massimo di totali
char _who;
protected: