diff --git a/at/at7200.cpp b/at/at7200.cpp index dfe5085af..1790c9212 100755 --- a/at/at7200.cpp +++ b/at/at7200.cpp @@ -49,6 +49,7 @@ class TStampaTessereS : public TPrintapp bool _sttess2; int _numdon2; TString16 _catini2, _catfin2; + int _tecolonne, _telarghezza; protected: virtual bool user_create(); @@ -111,20 +112,53 @@ void TStampaTessereS::set_page(int file, int cnt) switch (_tipostampa) { case tessere: + /* { TPrint_section& corpo = _form_pag->get_body(); - corpo.reset(); - TForm_item& rigadon = corpo.find_field(TES_RIGADON1); - rigadon.set(_riepilogodon); - corpo.update(); - for (word i = 0; i < corpo.height(); i++) - { - TPrintrow& riga = corpo.row(i); - set_row(i+1,riga); - } - force_setpage(TRUE); // serve perchè alla prossima etichetta rifaccia la setpage + for (int r=1;r<=_etcolonne;r++) + { + if (current_cursor()->pos()items()) + { + + corpo.reset(); + TForm_item& rigadon = corpo.find_field(TES_RIGADON1); + rigadon.set(_riepilogodon); + corpo.update(); + for (word i = 0; i < corpo.height(); i++) + { + TPrintrow& riga = corpo.row(i); + set_row(i+1,riga); + } + force_setpage(TRUE); // serve perchè alla prossima etichetta rifaccia la setpage // altrimenti stampa sempre la stessa etichetta } + */ + { + TPrint_section& corpo = _form_pag->get_body(); + for (int r=1;r<=_tecolonne;r++) + { + if (current_cursor()->pos()items()) + { + force_setpage(TRUE); + TForm_item& rigadon = corpo.find_field(TES_RIGADON1); + rigadon.set(_riepilogodon); + corpo.update(); + for (word i = 0; i < corpo.height(); i++) + { + TPrintrow& riga = corpo.row(i); + TString256 riga1 = riga.row(); + riga1.cut(_telarghezza); + int colonna = ((r-1)*_telarghezza); + TString16 formato; + formato << '@' << colonna << "g"; + riga1.insert(formato,0); + set_row(i+1,riga1); + } + if (r < _tecolonne) + ++(*current_cursor()); + } + } + } break; case elenco: { @@ -338,7 +372,11 @@ bool TStampaTessereS::user_create() _catini2 = config.get("CatIni2"); _catfin2 = config.get("CatFin2"); _sttess2 = config.get_bool("StTess2"); - _form_pag = new TTessereS_form("ATTESSER"); + + TString16 teformato = config.get("TeFormato"); + _form_pag = new TTessereS_form(teformato); + _tecolonne = config.get_int("TeColonne"); + _telarghezza = config.get_int("TeLarghezza"); TSheet_field& ss = (TSheet_field&)_msk->field(F_SOGGETTI); add_rows_soggetti(ss,50); ss.set_notify(soggetti_notify); @@ -456,7 +494,6 @@ bool TStampaTessereS::user_destroy() delete _form_pag; delete _msk; delete _rel; - //printer().read_configuration(); return TRUE; } diff --git a/at/at7300.cpp b/at/at7300.cpp index fabde28c5..be5d4961a 100755 --- a/at/at7300.cpp +++ b/at/at7300.cpp @@ -14,7 +14,6 @@ #include "at4100b.h" #include "at4100c.h" #include "at7300a.h" -//#include "at4500.h" #include "atlib.h" #define ALIAS_CTD 700 // categoria donatori @@ -68,8 +67,10 @@ class TStampeSingole : public TPrintapp TString80 _invitoper, _data, _presso1, _presso2, _presso3, _presso4; TString80 _note, _intest1, _intest2, _intest3, _intest4; bool _usomodo, _usasez; - int _etlarghezza, _etcolonne, _schxpag, _lenpage; + int _etlarghezza, _etcolonne, _etrighe, _etbordoini, _etbordofin, _netichette; + int _schxpag, _lenpage; int _contaschede; + int _caxpag, _cabordoini, _cabordofin, _ncartoline; protected: virtual bool user_create(); @@ -204,8 +205,16 @@ void TStampeSingole::set_page(int file, int cnt) { 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); @@ -215,7 +224,7 @@ void TStampeSingole::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()); @@ -277,12 +286,23 @@ void TStampeSingole::set_page(int file, int cnt) note.set(_note); } corpo.update(); - for (word i = 0; i < corpo.height(); i++) + 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(i+1,riga); + set_row(nriga++,riga); } force_setpage(TRUE); + _ncartoline++; } break; } @@ -290,7 +310,7 @@ void TStampeSingole::set_page(int file, int cnt) bool TStampeSingole::preprocess_page(int file, int counter) { - if (_tipostampa==etichette) + if (_tipostampa==etichette && _etrighe == 0) if (printer().rows_left() < _form_eti->get_body().height()) printer().formfeed(); return TRUE; @@ -318,7 +338,7 @@ bool TStampeSingole::set_print(int m) switch (tasto) { case F_CARTOLINE: - _tipostampa=cartoline; + _tipostampa = (configura_stampante(p, "AT_CARTOLINE", "cartoline")) ? cartoline : undefined; break; case F_SCHEDE: _tipostampa=schede; @@ -337,6 +357,8 @@ bool TStampeSingole::set_print(int m) if (_tipostampa == cartoline) dati_cartolina(); _contaschede = 0; + _ncartoline = 0; + _netichette = 0; reset_files(); add_file(LF_SOGGETTI); _asoggetti.destroy(); @@ -383,18 +405,28 @@ bool TStampeSingole::user_create() _cur = add_cursor(new TCursor(_rel, "", 2)); _msk = new TMask("at7300a"); - //Modificato il form per le cartoline in ATCARTO2 da ATCARTO1 da Marco il 14/09/99 - _form_car = new TSingole_form("ATCARTO2"); - _form_don = new TSingole_form("ATDDONAZ"); 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 TSingole_form(etformato); - TString16 schformato = config.get("SchFormato"); + _schxpag = config.get_int("SchXPag"); + TString16 schformato = config.get("SchFormato"); _form_sch = new TSingole_form(schformato); _lenpage = printer().formlen(); + + TString16 caformato = config.get("CaFormato"); + _form_car = new TSingole_form(caformato); + _caxpag = config.get_int("CaPerPag"); + _cabordoini = config.get_int("CaBordoIni"); + _cabordofin = config.get_int("CaBordoFin"); + _form_don = new TSingole_form("ATDDONAZ"); + TSheet_field& ss = (TSheet_field&)_msk->field(F_SOGGETTI); ss.set_notify(soggetti_notify); ss.sheet_mask().set_handler(F_S_NOME,nome_handler); @@ -508,10 +540,10 @@ bool TStampeSingole::codice_handler(TMask_field& f, KEY k) bool TStampeSingole::user_destroy() { - delete _form_sch; - delete _form_eti; delete _form_don; delete _form_car; + delete _form_sch; + delete _form_eti; delete _msk; delete _sbenemerenze; delete _sdonazioni; diff --git a/at/at7400.cpp b/at/at7400.cpp index 4362b723c..d0b0dbe82 100755 --- a/at/at7400.cpp +++ b/at/at7400.cpp @@ -14,7 +14,6 @@ #include "at4100b.h" #include "at4100c.h" #include "at7400a.h" -//#include "at4500.h" #include "atlib.h" #define ALIAS_CTD 700 // categoria donatori @@ -66,7 +65,9 @@ class TStampePerCodice : public TPrintapp TString80 _invitoper, _data, _presso1, _presso2, _presso3, _presso4; TString80 _note, _intest1, _intest2, _intest3, _intest4; bool _usomodo, _usasez; - int _etlarghezza, _etcolonne, _schxpag, _lenpage; + int _etlarghezza, _etcolonne, _etrighe, _etbordoini, _etbordofin, _netichette; + int _contaschede, _schxpag, _lenpage; + int _caxpag, _cabordoini, _cabordofin, _ncartoline; protected: virtual bool user_create(); @@ -166,8 +167,16 @@ void TStampePerCodice::set_page(int file, int cnt) { 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); @@ -177,7 +186,7 @@ void TStampePerCodice::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()); @@ -238,11 +247,23 @@ void TStampePerCodice::set_page(int file, int cnt) note.set(_note); } corpo.update(); - for (word i = 0; i < corpo.height(); i++) + 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(i+1,riga); + set_row(nriga++,riga); } + force_setpage(TRUE); + _ncartoline++; } break; } @@ -257,7 +278,7 @@ print_action TStampePerCodice::postprocess_print(int file, int counter) bool TStampePerCodice::preprocess_page(int file, int counter) { - if (_tipostampa==etichette) + if (_tipostampa==etichette && _etrighe == 0) if (printer().rows_left() < _form_eti->get_body().height()) printer().formfeed(); return TRUE; @@ -273,7 +294,7 @@ bool TStampePerCodice::set_print(int m) switch (tasto) { case F_CARTOLINE: - _tipostampa=cartoline; + _tipostampa = (configura_stampante(p, "AT_CARTOLINE", "cartoline")) ? cartoline : undefined; break; case F_SCHEDE: _tipostampa=schede; @@ -291,6 +312,9 @@ bool TStampePerCodice::set_print(int m) { if (_tipostampa == cartoline) dati_cartolina(); + _contaschede = 0; + _ncartoline = 0; + _netichette = 0; const long codini = _msk->get_long(F_CODINI); const long codfin = _msk->get_long(F_CODFIN); TRectype da(LF_SOGGETTI); @@ -334,26 +358,35 @@ bool TStampePerCodice::user_create() _cur = add_cursor(new TCursor(_rel, "", 1)); _msk = new TMask("at7400a"); //Modificato il form per le cartoline in ATCARTO2 da ATCARTO1 da Marco il 14/09/99 - _form_car = new TPerCodice_form("ATCARTO2"); - _form_don = new TPerCodice_form("ATDDONAZ"); 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 TPerCodice_form(etformato); + TString16 schformato = config.get("SchFormato"); _schxpag = config.get_int("SchXPag"); _form_sch = new TPerCodice_form(schformato); _lenpage = printer().formlen(); + TString16 caformato = config.get("CaFormato"); + _form_car = new TPerCodice_form(caformato); + _caxpag = config.get_int("CaPerPag"); + _cabordoini = config.get_int("CaBordoIni"); + _cabordofin = config.get_int("CaBordoFin"); + _form_don = new TPerCodice_form("ATDDONAZ"); return TRUE; } bool TStampePerCodice::user_destroy() { - delete _form_sch; - delete _form_eti; delete _form_don; delete _form_car; + delete _form_sch; + delete _form_eti; delete _msk; delete _sbenemerenze; delete _sdonazioni;