diff --git a/ve/ve1300.cpp b/ve/ve1300.cpp index 839398d07..ec091ddf5 100755 --- a/ve/ve1300.cpp +++ b/ve/ve1300.cpp @@ -1102,24 +1102,30 @@ void TReport_doc_app::print_selection(bool send_by_mail) void TReport_doc_app::main_loop() { - if (argc() > 6) // Stampa da riga di comando + const int a = argc(); + if (a > 2) + _msk->set(F_CODNUM, argv(2)); // Stampa da menu con numerazione imposta + + if (a > 6) // Stampa da riga di comando { _msk->set(F_DATA_O_NUM, "N"); // Stampa per numero documento - _msk->set(F_PROVV, argv(4)); _msk->set(F_ANNO, argv(3)); - _msk->set(F_CODNUM, argv(2)); + _msk->set(F_PROVV, argv(4)); _msk->set(F_DA_NDOC, argv(5)); _msk->set(F_A_NDOC, argv(6)); - // argv(7) = stampa Definitiva o Provvisoria - if (argc() > 8) + if (a > 8) _msk->set(F_NCOPIE, argv(8)); // Numero copie print_selection(); + return; } - else + + while (true) { - KEY k; - while ((k = _msk->run()) != K_QUIT) // Stampa interattiva - print_selection(k != K_ENTER); + const KEY k = _msk->run(); + if (k == K_QUIT) + break; + const bool mail = k != K_ENTER; + print_selection(mail); } } diff --git a/ve/velib.h b/ve/velib.h index 8c83a5524..b1d4b9730 100755 --- a/ve/velib.h +++ b/ve/velib.h @@ -247,7 +247,7 @@ public: // Funzioni che effettuano la cache di importanti valori contenuti nel profilo const char tipocf() const; void set_defaults(TMask& m) const; - const TString_array& keys_descrs(); + const TString_array& keys_descrs() const; const TString_array& sheet_columns() const; const TString_array& handlers() const; diff --git a/ve/velib03a.cpp b/ve/velib03a.cpp index 9a10ca410..53ff82902 100755 --- a/ve/velib03a.cpp +++ b/ve/velib03a.cpp @@ -181,7 +181,7 @@ const TString& TTipo_documento::riferimento(const TDocumento & doc, TString& rif return rif; } -const TString_array& TTipo_documento::keys_descrs() +const TString_array& TTipo_documento::keys_descrs() const { if (_keys_descrs.empty()) { @@ -208,16 +208,15 @@ const TString_array& TTipo_documento::keys_descrs() if (k.blank()) { TTable tri("%TRI"); - for (int err = tri.first(); err == NOERR; err = tri.next()) { k.add(tri.get("CODTAB")); d.add(tri.get("S0")); } } - - _keys_descrs.add(k); - _keys_descrs.add(d); + // Fool const + ((TString_array&)_keys_descrs).add(k); + ((TString_array&)_keys_descrs).add(d); } return _keys_descrs; diff --git a/ve/velib06.cpp b/ve/velib06.cpp index d71940f35..3c0c8234d 100755 --- a/ve/velib06.cpp +++ b/ve/velib06.cpp @@ -54,25 +54,19 @@ bool TOriginal_row_mask::on_key(KEY key) TDocumento_mask::TDocumento_mask(const char* td) - : TVariable_mask(), _progs_page(-1), - _condv(NULL), _smartcard(NULL), - _cms_start(-1), _cms_end(-1), - _cms_start_sh(-1), _cms_end_sh(-1), - _cdc_start(-1), _cdc_end(-1), - _cdc_start_sh(-1), _cdc_end_sh(-1) - + : TVariable_mask(), _progs_page(-1), _condv(NULL), _smartcard(NULL), + _cms_start(-1), _cms_end(-1), _cms_start_sh(-1), _cms_end_sh(-1), + _cdc_start(-1), _cdc_end(-1), _cdc_start_sh(-1), _cdc_end_sh(-1) { - CHECK(strlen(td) <= 4, "TDocumento_mask(TipoDocumento) not (MaskName)"); - + CHECK(td && *td && strlen(td) <= 4, "TDocumento_mask(TipoDocumento) not (MaskName)"); { TMagazzini m; - _ges_mag = m.gestmag(); _ges_dep = m.gestdep(); _std_mag = m.standardmag(); _std_dep = m.standarddep(); } - TDocumento & d = doc(); + TDocumento& d = doc(); d.set_tipo(td); const TString16 mname = d.tipo().mask_name(); read_mask(mname, 0, MAX_PAGES); @@ -82,12 +76,12 @@ TDocumento_mask::TDocumento_mask(const char* td) _sheet->set_notify( ss_notify ); _sheet->set_append(FALSE); - TList_field& listbox = (TList_field&)field(F_LBTIPORIGA); + TList_field& listbox = lfield(F_LBTIPORIGA); - TTipo_documento& tdoc = (TTipo_documento&)d.tipo(); - TToken_string& keys = (TToken_string&)tdoc.keys_descrs()[0]; - TToken_string& descrs = (TToken_string&)tdoc.keys_descrs()[1]; - listbox.replace_items(keys, descrs); + const TTipo_documento& tdoc = d.tipo(); + const TToken_string& keys = tdoc.keys_descrs().row(0); + const TToken_string& desc = tdoc.keys_descrs().row(1); + listbox.replace_items(keys, desc); // Controlla se deve generare la pagina di analitica _ges_ca = dongle().active(CAAUT) || dongle().active(CMAUT); @@ -1660,30 +1654,25 @@ bool TDocumento_mask::clifo_handler( TMask_field& f, KEY key ) void TDocumento_mask::highlight_row(int row, bool dirty, bool update) { - TSheet_field & sf = sfield(F_SHEET); - const int items = sf.items(); - COLOR back = NORMAL_BACK_COLOR; - COLOR fore = NORMAL_COLOR; - const int last_rule = colors().items() - 1; - bool on = false; const TRiga_documento & rigadoc = doc()[row + 1]; - TRow_colors * c = NULL; - - for (int rule = last_rule; !on && rule >= 0; rule--) - { - c = (TRow_colors *) colors().objptr(rule); + TSheet_field& sf = sfield(F_SHEET); + COLOR back = COLOR_INVALID, fore = COLOR_INVALID; + + for (int rule = colors().last(); rule >= 0; rule--) + { + TRow_colors* c = (TRow_colors*)colors().objptr(rule); if (c != NULL) { + bool on = false; if (rule == 0) - on = rigadoc.linked(); + on = rigadoc.linked(); // Regola standard else { - TExpression * expr = (TExpression *) color_rules().objptr(rule); - + TExpression* expr = (TExpression*)color_rules().objptr(rule); if (expr != NULL) { - // SET VARS + // SET VARS const int vars = expr->numvar(); for (int i = 0; i < vars; i++) @@ -1696,11 +1685,9 @@ void TDocumento_mask::highlight_row(int row, bool dirty, bool update) if (name.starts_with("#")) { const short id = atoi(name.mid(1)); - if (id > 0) { - TToken_string & sheet_row = sf.row(row); - + TToken_string& sheet_row = sf.row(row); expr->setvar(i, sheet_row.get(sf.cid2index(id))); } else @@ -1709,39 +1696,37 @@ void TDocumento_mask::highlight_row(int row, bool dirty, bool update) else if (name.starts_with("33.") || name.starts_with("DOC.")) { - const TString & fldname = name.after('.'); - + const TString& fldname = name.after('.'); expr->setvar(i, doc().get(fldname)); } else { - const TString & fldname = name.find('.') > 0 ? name.after('.') : name; - + const TString& fldname = name.find('.') > 0 ? name.after('.') : name; expr->setvar(i, rigadoc.get(fldname)); } } on = expr->as_bool(); } } + if (on) + { + back = c->back(); + fore = c->fore(); + break; + } } } - if (on && c != NULL) - { - back = c->back(); - fore = c->fore(); - } - sf.set_back_and_fore_color(back, fore, row); - if (update) + + sf.set_back_and_fore_color(back, fore, row); + if (update) sf.force_update(row); } void TDocumento_mask::highlight() { - TSheet_field & sf = sfield(F_SHEET); - const int items = sf.items(); - - for (int i = 0 ; i < items; i++) - highlight_row(i, false, false); + TSheet_field& sf = sfield(F_SHEET); + FOR_EACH_SHEET_ROW(sf, i, r) + highlight_row(i, false, false); sf.force_update(); }