Aggiunta fincatura automatica
git-svn-id: svn://10.65.10.50/trunk@2407 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
68f398ca96
commit
6c141e99a4
@ -45,6 +45,7 @@ class TEC_form : public TForm
|
|||||||
int _fincatura; // 0 = nessuna, 1 = testo, 2 = grafica
|
int _fincatura; // 0 = nessuna, 1 = testo, 2 = grafica
|
||||||
word _num_rip; // Numero di righe usate per i riporti
|
word _num_rip; // Numero di righe usate per i riporti
|
||||||
word _total_rows; // Numero di righe usate per i totali
|
word _total_rows; // Numero di righe usate per i totali
|
||||||
|
word _maxtot; // Numero massimo di totali da stampare
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void init_header(const TMask& m);
|
void init_header(const TMask& m);
|
||||||
@ -841,12 +842,8 @@ void TEC_form::stampa_pedata(TPrinter& pr)
|
|||||||
THash_object* tot[MAXTOT];
|
THash_object* tot[MAXTOT];
|
||||||
word num_rip = ordina_totali_per_valuta(tot);
|
word num_rip = ordina_totali_per_valuta(tot);
|
||||||
|
|
||||||
// La prima riga del footer deve essere lasciata libera per la fincatura
|
if (num_rip > _maxtot)
|
||||||
// Ogni sottosezione di totale occupa _total_rows righe: per cui devo calcolare
|
num_rip = _maxtot;
|
||||||
// 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;
|
|
||||||
|
|
||||||
for (word j = 0; j < num_rip; j++)
|
for (word j = 0; j < num_rip; j++)
|
||||||
print_total(j*_total_rows+1, *tot[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);
|
pr.setheaderhandler(ec_header_handler);
|
||||||
TPrint_section& head = section('H');
|
TPrint_section& head = section('H');
|
||||||
pr.headerlen(head.height());
|
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);
|
TForm_item& flags = find_field('H', last_page, PEC_FLAGS);
|
||||||
TToken_string f(flags.prompt());
|
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
|
_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);
|
_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;
|
_total_rows = 1;
|
||||||
for (word fi = 0; fi < foot.fields(); fi++)
|
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;
|
_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()
|
TEC_form::~TEC_form()
|
||||||
|
@ -127,7 +127,7 @@ class TESSL_form : public TForm
|
|||||||
int _fincatura; // 0 = nessuna, 1 = testo, 2 = grafica
|
int _fincatura; // 0 = nessuna, 1 = testo, 2 = grafica
|
||||||
word _num_rip; // numero di righe usate per i riporti
|
word _num_rip; // numero di righe usate per i riporti
|
||||||
word _total_rows; // numero di righe usate per i totali
|
word _total_rows; // numero di righe usate per i totali
|
||||||
int _maxtot; // numero massimo di totali
|
word _maxtot; // numero massimo di totali
|
||||||
char _who;
|
char _who;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user