diff --git a/lv/lv3100.cpp b/lv/lv3100.cpp index 180293706..af969e2b0 100755 --- a/lv/lv3100.cpp +++ b/lv/lv3100.cpp @@ -377,10 +377,13 @@ void TGestione_bolle_msk:: on_idle() if (_autoselect >= 0) { TSheet_field& s = sfield(F_SHEET); - //per ora 4 fisso perchè non sappiamo calcolare la colonna del ritirato - s.set_focus_cell_id(_autoselect, FR_QTAGG1); + if (_autoselect < s.items()) + { + //per ora 4 fisso perchè non sappiamo calcolare la colonna del ritirato + s.set_focus_cell_id(_autoselect, FR_QTAGG1); + dettaglio_causale(s); + } _autoselect = -1; - dettaglio_causale(s); } } @@ -391,8 +394,8 @@ bool TGestione_bolle_msk::ss_notify(TSheet_field& ss, int r, KEY key) { TGestione_bolle_msk& dmsk = (TGestione_bolle_msk&) ss.mask(); - if (key == K_TAB && dmsk._autoselect == -1) - dmsk._autoselect = ss.selected(); //riga per settare il focus + if (key == K_TAB && dmsk._autoselect < 0 && dmsk.is_running()) + dmsk._autoselect = r; //riga per settare il focus return TDocumento_mask::ss_notify(ss, r, key); } @@ -1359,16 +1362,18 @@ int TGestione_bolle_app::rewrite( const TMask& m ) int TGestione_bolle_app::read(TMask& m) { const int err = TMotore_application::read(m); - - TGestione_bolle_msk& mask = (TGestione_bolle_msk&) m; - TDocumento& d = mask.doc(); - - _giac.reset(d); - FOR_EACH_DOC_ROW_BACK(d, r, row) - _giac.load_row((TRiga_documento&)*row); - + if (err == NOERR) + { + TGestione_bolle_msk& mask = (TGestione_bolle_msk&) m; + TDocumento& d = mask.doc(); + + _giac.reset(d); + FOR_EACH_DOC_ROW_BACK(d, r, row) + _giac.load_row((TRiga_documento&)*row); + mask._autoselect = 0; + } return err; }