diff --git a/at/at4100.cpp b/at/at4100.cpp index 105b13187..edd52e309 100755 --- a/at/at4100.cpp +++ b/at/at4100.cpp @@ -69,8 +69,10 @@ class TStampaScadenze : public TPrintapp TString16 _codsez, _codsot, _orario, _datacart; TString80 _invitoper, _data, _presso1, _presso2, _presso3, _presso4; TString80 _note, _intest1, _intest2, _intest3, _intest4; - int _etlarghezza, _etcolonne; int _contatore, _totfinestampa; + int _etlarghezza, _etcolonne, _etrighe, _etbordoini, _etbordofin, _netichette; + int _caxpag, _cabordoini, _cabordofin, _ncartoline; + static bool filter_func_scadenze(const TRelation* rel); @@ -218,14 +220,22 @@ void TStampaScadenze::set_page(int file, int cnt) switch (_tipostampa) { case etichette: - { + { TPrint_section& corpo = _form_eti->get_body(); for (int r=1;r<=_etcolonne;r++) { if (current_cursor()->pos()items()) { + _netichette++; force_setpage(TRUE); corpo.update(); + int nriga = 1; + if (_etrighe > 0) + { + int resto = _netichette % (_etrighe*_etcolonne); + if (resto > 0 && resto <= _etcolonne) + nriga = nriga+_etbordoini; + } for (word i = 0; i < corpo.height(); i++) { TPrintrow& riga = corpo.row(i); @@ -235,7 +245,7 @@ void TStampaScadenze::set_page(int file, int cnt) TString16 formato; formato << '@' << colonna << "g"; riga1.insert(formato,0); - set_row(i+1,riga1); + set_row(nriga++,riga1); } if (r < _etcolonne) ++(*current_cursor()); @@ -282,13 +292,23 @@ void TStampaScadenze::set_page(int file, int cnt) note.set(_note); } corpo.update(); - for (word i = 0; i < corpo.height(); i++) - { - TPrintrow& riga = corpo.row(i); - set_row(i+1,riga); + word primariga = 0; + word ultimariga = corpo.height(); + if (_caxpag > 0) + { + if (_ncartoline % _caxpag == 0) // numero cartoline per pagina + primariga = _cabordoini; // bordo iniziale + if (_ncartoline % _caxpag == _caxpag-1) // numero cartoline per pagina - 1 + ultimariga -= _cabordofin; // bordo finale + } + int nriga = 1; + for (word i = primariga; i < ultimariga; i++) + { + TPrintrow& riga = corpo.row(i); + set_row(nriga++,riga); } - force_setpage(TRUE); // serve perchè alla prossima etichetta rifaccia la setpage - // altrimenti stampa sempre la stessa etichetta + force_setpage(TRUE); + _ncartoline++; } break; case elenco: @@ -571,7 +591,7 @@ bool TStampaScadenze::preprocess_page(int file, int counter) recsog.put(SOG_NUMCONV, 0); current_cursor()->file().rewrite(); } - if (_tipostampa==etichette) + if (_tipostampa==etichette && _etrighe == 0) if (printer().rows_left() < _form_eti->get_body().height()) printer().formfeed(); if (_tipostampa==personale) @@ -732,6 +752,8 @@ bool TStampaScadenze::set_print(int m) // filtro per categorie e altro current_cursor()->set_filterfunction(filter_func_scadenze); _contatore = 0; + _netichette = 0; + _ncartoline = 0; _totfinestampa = 0; reset_print(); printer().footerlen(0); @@ -841,11 +863,21 @@ bool TStampaScadenze::user_create() add_cursor(new TCursor(_rel, "", 3)); _msk = new TMask("at4100a"); TConfig config(CONFIG_STUDIO); + TString16 etformato = config.get("EtFormato"); _etlarghezza = config.get_int("EtLarghezza"); _etcolonne = config.get_int("EtColonne"); + _etrighe = config.get_int("EtRighe"); + _etbordoini = config.get_int("EtBordoIni"); + _etbordofin = config.get_int("EtBordoFin"); _form_eti = new TScadenze_form(etformato); - _form_car = new TScadenze_form("ATCARTO1"); + + TString16 caformato = config.get("CaFormato"); + _form_car = new TScadenze_form(caformato); + _caxpag = config.get_int("CaPerPag"); + _cabordoini = config.get_int("CaBordoIni"); + _cabordofin = config.get_int("CaBordoFin"); + TString16 performato = config.get("ElencoFormato"); _form_per = new TScadenze_form(performato); return TRUE; diff --git a/at/at4200.cpp b/at/at4200.cpp index cdd451e8a..a2a9e83dc 100755 --- a/at/at4200.cpp +++ b/at/at4200.cpp @@ -44,7 +44,8 @@ class TStampaUrgenze : public TPrintapp TDate _data_stampa, _datalimite; ts _tipostampa; TString16 _codsez, _codsot; - int _etlarghezza, _etcolonne; + int _etlarghezza, _etcolonne, _etrighe, _etbordoini, _etbordofin, _netichette; + bool _unica; int _cur; int _contatore, _totale; @@ -98,14 +99,22 @@ void TStampaUrgenze::set_page(int file, int cnt) switch (_tipostampa) { case etichette: - { + { TPrint_section& corpo = _form_eti->get_body(); for (int r=1;r<=_etcolonne;r++) { if (current_cursor()->pos()items()) { + _netichette++; force_setpage(TRUE); corpo.update(); + int nriga = 1; + if (_etrighe > 0) + { + int resto = _netichette % (_etrighe*_etcolonne); + if (resto > 0 && resto <= _etcolonne) + nriga = nriga+_etbordoini; + } for (word i = 0; i < corpo.height(); i++) { TPrintrow& riga = corpo.row(i); @@ -115,7 +124,7 @@ void TStampaUrgenze::set_page(int file, int cnt) TString16 formato; formato << '@' << colonna << "g"; riga1.insert(formato,0); - set_row(i+1,riga1); + set_row(nriga++,riga1); } if (r < _etcolonne) ++(*current_cursor()); @@ -276,7 +285,7 @@ bool TStampaUrgenze::preprocess_page(int file, int counter) if (printer().rows_left() < 2) printer().formfeed(); } - if (_tipostampa==etichette) + if (_tipostampa==etichette && _etrighe == 0) if (printer().rows_left() < _form_eti->get_body().height()) printer().formfeed(); _contatore++; @@ -417,6 +426,7 @@ bool TStampaUrgenze::set_print(int) _tipodon = _msk->get(F_TIPODON); _unica = _msk->get_bool(F_UNICA); _datalimite = _msk->get_date(F_DATALIMITE); + _netichette = 0; // filtro per sezioni filtra_sezioni(); if (_unica) @@ -471,9 +481,13 @@ bool TStampaUrgenze::user_create() add_cursor(new TSorted_cursor(_rel,"","",3)); _msk = new TMask("at4200a"); TConfig config(CONFIG_STUDIO); + TString16 etformato = config.get("EtFormato"); _etlarghezza = config.get_int("EtLarghezza"); _etcolonne = config.get_int("EtColonne"); + _etrighe = config.get_int("EtRighe"); + _etbordoini = config.get_int("EtBordoIni"); + _etbordofin = config.get_int("EtBordoFin"); _form_eti = new TUrgenze_form(etformato); return TRUE; } diff --git a/at/at4300.cpp b/at/at4300.cpp index db170ccde..b99eeb485 100755 --- a/at/at4300.cpp +++ b/at/at4300.cpp @@ -56,6 +56,7 @@ class TStampaConvocazioni : public TPrintapp bool _definitiva; int _etlarghezza, _etcolonne; int _contatore, _totfinestampa; + int _caxpag, _cabordoini, _cabordofin, _ncartoline; bool _provastampa; protected: @@ -202,7 +203,8 @@ void TStampaConvocazioni::set_page(int file, int cnt) datacart.set(_datacart); TForm_item& note = corpo.find_field(CAR_NOTE); note.set(_note); - } + } + /* corpo.update(); for (word i = 0; i < corpo.height(); i++) { @@ -211,6 +213,25 @@ void TStampaConvocazioni::set_page(int file, int cnt) } force_setpage(TRUE); // serve perchè alla prossima etichetta rifaccia la setpage // altrimenti stampa sempre la stessa etichetta + */ + corpo.update(); + word primariga = 0; + word ultimariga = corpo.height(); + if (_caxpag > 0) + { + if (_ncartoline % _caxpag == 0) // numero cartoline per pagina + primariga = _cabordoini; // bordo iniziale + if (_ncartoline % _caxpag == _caxpag-1) // numero cartoline per pagina - 1 + ultimariga -= _cabordofin; // bordo finale + } + int nriga = 1; + for (word i = primariga; i < ultimariga; i++) + { + TPrintrow& riga = corpo.row(i); + set_row(nriga++,riga); + } + force_setpage(TRUE); + _ncartoline++; } break; case sms: @@ -397,7 +418,11 @@ bool TStampaConvocazioni::preprocess_page(int file, int counter) if (_numconv > 4) { if (_tipostampa==cartoline || _tipostampa==etichette || _tipostampa==elencocon) + { + if (_tipostampa==cartoline) + _ncartoline--; return FALSE; + } else { _contatore++; @@ -489,6 +514,7 @@ bool TStampaConvocazioni::set_print(int) _contatore = 0; _totfinestampa = 0; _provastampa = TRUE; + _ncartoline = 0; reset_files(); add_file(LF_SOGGETTI); _dataconv = _msk->get(F_DATACONV); @@ -558,7 +584,12 @@ bool TStampaConvocazioni::user_create() _etlarghezza = config.get_int("EtLarghezza"); _etcolonne = config.get_int("EtColonne"); _form_eti = new TConv_form(etformato); - _form_car = new TConv_form("ATCARTO1"); + + TString16 caformato = config.get("CaFormato"); + _form_car = new TConv_form(caformato); + _caxpag = config.get_int("CaPerPag"); + _cabordoini = config.get_int("CaBordoIni"); + _cabordofin = config.get_int("CaBordoFin"); return TRUE; }