maskfld.cpp Aggiunti validate ai list_field

msksheet.cpp Corretta gestione edit di una riga
validate.cpp Trasformati in Tmask_field tutti gli edit_field
validate.h   Aggiornata la funzione validate di conseguenza


git-svn-id: svn://10.65.10.50/trunk@1926 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 1995-10-06 13:26:53 +00:00
parent 34ad90a94e
commit a050caf1cf
4 changed files with 55 additions and 37 deletions

View File

@ -3285,6 +3285,12 @@ bool TList_field::on_key(KEY key)
dispacth_e_char(win(), K_F9); dispacth_e_char(win(), K_F9);
#endif #endif
if (key == K_TAB || key == K_ENTER)
{
bool ok = ::validate(_validate_func, *this, key, _validate_parms);
if (!ok) return FALSE;
}
if (key == K_SPACE) on_hit(); if (key == K_SPACE) on_hit();
return TMask_field::on_key(key); return TMask_field::on_key(key);

View File

@ -541,9 +541,9 @@ void TSpreadsheet::set_focus_cell(int riga, int colonna)
_cur_row = riga; _cur_row = riga;
_cur_col = colonna; _cur_col = colonna;
_cur_rec = r; _cur_rec = r;
_edit_field = col2field(colonna);
_row_dirty = FALSE; _row_dirty = FALSE;
} }
_edit_field = col2field(colonna);
str2mask(_cur_rec); str2mask(_cur_rec);
} }
} }
@ -853,7 +853,7 @@ void TSpreadsheet::list_handler(XI_EVENT *xiev)
_cur_rec = items() - 1; _cur_rec = items() - 1;
} }
if (_cur_rec >= 0 && !cell_disabled(_cur_rec, _cur_col-1)) if (_cur_rec >= 0)
set_focus_cell(_cur_row, _cur_col); set_focus_cell(_cur_row, _cur_col);
_check_enabled = TRUE; _check_enabled = TRUE;
} }
@ -919,8 +919,13 @@ void TSpreadsheet::list_handler(XI_EVENT *xiev)
const int col = (f->dlg()-FIRST_FIELD) % 100; const int col = (f->dlg()-FIRST_FIELD) % 100;
if (cell_disabled(_cur_rec, col)) // If the cell is disabled ... if (cell_disabled(_cur_rec, col)) // If the cell is disabled ...
{ {
dispatch_e_char(win(), _lastab); // ... skip to the next one. if (!cell_disabled(_cur_rec, -1)) // If the row is not disabled ...
_edit_field = NULL; {
dispatch_e_char(win(), _lastab); // ... skip to the next one.
_edit_field = NULL;
}
else
xiev->refused = TRUE;
} }
else else
{ {
@ -1461,17 +1466,24 @@ void TSpreadsheet::set_column_header(const int col, const TString& header) cons
// Certified 99% // Certified 99%
// @mfunc Controlla se una cella e' disabilitata // @mfunc Controlla se una cella o un'intera riga e' disabilitata
// //
// @rdesc Ritorna lo stato della cella indicate: // @rdesc Se column e' minore di zero si considera l'intera riga
// @rdesc Ritorna lo stato della cella indicata:
// //
// @flag TRUE | Se la cella e' disabilitata // @flag TRUE | Se la cella e' disabilitata
// @flag FALSE| Se la cella e' abilitata // @flag FALSE| Se la cella e' abilitata
bool TSpreadsheet::cell_disabled(int row, int column) const bool TSpreadsheet::cell_disabled(int row, int column) const
{ {
TBit_array* ba = (TBit_array*)_disabled.objptr(row); TBit_array* ba = (TBit_array*)_disabled.objptr(row);
if (ba == NULL) return _column_disabled[column]; // Use default
return (*ba)[column]; bool d;
if (column < 0)
d = ba == NULL ? FALSE : (ba->ones() == columns()-1);
else
d = ba == NULL ? _column_disabled[column] : (*ba)[column];
return d;
} }

View File

@ -12,7 +12,7 @@
#include <nditte.h> #include <nditte.h>
typedef bool (*VAL_FUNC)(TEdit_field&, KEY k); typedef bool (*VAL_FUNC)(TMask_field&, KEY k);
HIDDEN const TArray* _parms; HIDDEN const TArray* _parms;
HIDDEN int get_val_param_num() { return _parms->items(); } HIDDEN int get_val_param_num() { return _parms->items(); }
@ -20,7 +20,7 @@ HIDDEN int get_val_param_num() { return _parms->items(); }
HIDDEN const char* get_val_param(int i) HIDDEN const char* get_val_param(int i)
{ return i < _parms->items() ? (const char*)((const TString&) (*_parms)[i]):"" ; } { return i < _parms->items() ? (const char*)((const TString&) (*_parms)[i]):"" ; }
HIDDEN bool _expr_val(TEdit_field& f, KEY) HIDDEN bool _expr_val(TMask_field& f, KEY)
{ {
TTypeexp type = atoi(get_val_param(0)) == 0 ? _numexpr :_strexpr; TTypeexp type = atoi(get_val_param(0)) == 0 ? _numexpr :_strexpr;
TExpression e(get_val_param(1), type); TExpression e(get_val_param(1), type);
@ -50,7 +50,7 @@ HIDDEN bool _expr_val(TEdit_field& f, KEY)
} }
HIDDEN bool _emptycopy_val(TEdit_field& f, KEY) HIDDEN bool _emptycopy_val(TMask_field& f, KEY)
{ {
if (f.get().empty()) if (f.get().empty())
{ {
@ -100,7 +100,7 @@ bool pi_check(const char * st, const char * paiva)
// Controlla la partita iva se e' non vuota ed italiana // Controlla la partita iva se e' non vuota ed italiana
HIDDEN bool _pi_val(TEdit_field& f, KEY) HIDDEN bool _pi_val(TMask_field& f, KEY)
{ {
if (f.mask().query_mode()) return TRUE; if (f.mask().query_mode()) return TRUE;
@ -197,7 +197,7 @@ bool cf_check (const char * stato, const char * codcf)
} }
HIDDEN bool _cf_val(TEdit_field& f, KEY key) HIDDEN bool _cf_val(TMask_field& f, KEY key)
{ {
if (f.mask().query_mode()) return TRUE; if (f.mask().query_mode()) return TRUE;
@ -227,7 +227,7 @@ HIDDEN bool _cf_val(TEdit_field& f, KEY key)
} }
HIDDEN bool _xt_pi_val(TEdit_field& f, KEY key) HIDDEN bool _xt_pi_val(TMask_field& f, KEY key)
{ {
TMask& m = f.mask(); TMask& m = f.mask();
@ -278,7 +278,7 @@ HIDDEN bool _xt_pi_val(TEdit_field& f, KEY key)
} }
HIDDEN bool _xtz_pi_val(TEdit_field& f, KEY key) HIDDEN bool _xtz_pi_val(TMask_field& f, KEY key)
{ {
if (f.mask().query_mode()) return TRUE; if (f.mask().query_mode()) return TRUE;
TString16 pi(f.get()); TString16 pi(f.get());
@ -287,7 +287,7 @@ HIDDEN bool _xtz_pi_val(TEdit_field& f, KEY key)
} }
HIDDEN bool _xt_cf_val(TEdit_field& f, KEY key) HIDDEN bool _xt_cf_val(TMask_field& f, KEY key)
{ {
if (f.mask().query_mode()) return TRUE; if (f.mask().query_mode()) return TRUE;
@ -387,7 +387,7 @@ HIDDEN bool _xt_cf_val(TEdit_field& f, KEY key)
} }
HIDDEN bool _xtz_cf_val(TEdit_field& f, KEY key) HIDDEN bool _xtz_cf_val(TMask_field& f, KEY key)
{ {
if (f.mask().query_mode()) return TRUE; if (f.mask().query_mode()) return TRUE;
@ -396,13 +396,13 @@ HIDDEN bool _xtz_cf_val(TEdit_field& f, KEY key)
} }
HIDDEN bool _notempty_val(TEdit_field& f, KEY) HIDDEN bool _notempty_val(TMask_field& f, KEY)
{ {
return f.mask().query_mode() || f.get().not_empty(); return f.mask().query_mode() || f.get().not_empty();
} }
HIDDEN bool _date_cmp(TEdit_field& f, KEY) HIDDEN bool _date_cmp(TMask_field& f, KEY)
{ {
TFixed_string s(f.get()); TFixed_string s(f.get());
if (s.empty()) return TRUE; if (s.empty()) return TRUE;
@ -425,7 +425,7 @@ HIDDEN bool _date_cmp(TEdit_field& f, KEY)
} }
HIDDEN bool _fixlen_val(TEdit_field& f, KEY) HIDDEN bool _fixlen_val(TMask_field& f, KEY)
{ {
const TFixed_string s(f.get()); const TFixed_string s(f.get());
@ -438,7 +438,7 @@ HIDDEN bool _fixlen_val(TEdit_field& f, KEY)
} }
HIDDEN bool _mtcheck_val(TEdit_field& f, KEY) HIDDEN bool _mtcheck_val(TMask_field& f, KEY)
{ {
const int month = atoi(f.get()); const int month = atoi(f.get());
if (month < 1 || month > 13) return FALSE; if (month < 1 || month > 13) return FALSE;
@ -453,7 +453,7 @@ HIDDEN bool _mtcheck_val(TEdit_field& f, KEY)
} }
HIDDEN bool _reqif_val(TEdit_field& f, KEY k) HIDDEN bool _reqif_val(TMask_field& f, KEY k)
{ {
if (k == K_ENTER) if (k == K_ENTER)
{ {
@ -470,7 +470,7 @@ HIDDEN bool _reqif_val(TEdit_field& f, KEY k)
} }
HIDDEN bool _autoexit_val(TEdit_field& f, KEY key) HIDDEN bool _autoexit_val(TMask_field& f, KEY key)
{ {
TMask& m = f.mask(); TMask& m = f.mask();
@ -513,7 +513,7 @@ HIDDEN bool _autoexit_val(TEdit_field& f, KEY key)
} }
HIDDEN bool _numcalc_val(TEdit_field& f, KEY k) HIDDEN bool _numcalc_val(TMask_field& f, KEY k)
{ {
if (k != K_TAB) return TRUE; if (k != K_TAB) return TRUE;
TExpression e(get_val_param(0), _numexpr); TExpression e(get_val_param(0), _numexpr);
@ -536,7 +536,7 @@ HIDDEN bool _numcalc_val(TEdit_field& f, KEY k)
} }
HIDDEN bool _strcalc_val(TEdit_field& f, KEY k) HIDDEN bool _strcalc_val(TMask_field& f, KEY k)
{ {
if (k != K_TAB) return TRUE; if (k != K_TAB) return TRUE;
TExpression e(get_val_param(0), _strexpr); TExpression e(get_val_param(0), _strexpr);
@ -559,7 +559,7 @@ HIDDEN bool _strcalc_val(TEdit_field& f, KEY k)
} }
HIDDEN bool _onereq_val(TEdit_field& f, KEY k) HIDDEN bool _onereq_val(TMask_field& f, KEY k)
{ {
if (k != K_ENTER) return TRUE; if (k != K_ENTER) return TRUE;
const TMask& m = f.mask(); const TMask& m = f.mask();
@ -574,7 +574,7 @@ HIDDEN bool _onereq_val(TEdit_field& f, KEY k)
return FALSE; return FALSE;
} }
HIDDEN bool _chkfld_val(TEdit_field& f, KEY k) HIDDEN bool _chkfld_val(TMask_field& f, KEY k)
{ {
if (f.to_check(k)) if (f.to_check(k))
{ {
@ -596,13 +596,13 @@ HIDDEN bool _chkfld_val(TEdit_field& f, KEY k)
return TRUE; return TRUE;
} }
HIDDEN bool _filename_val(TEdit_field& f, KEY) HIDDEN bool _filename_val(TMask_field& f, KEY)
{ {
const TFilename fn(f.get()); const TFilename fn(f.get());
return fn.ok(); return fn.ok();
} }
HIDDEN bool _zerofill_val(TEdit_field& f, KEY k) HIDDEN bool _zerofill_val(TMask_field& f, KEY k)
{ {
if (f.to_check(k)) if (f.to_check(k))
{ {
@ -617,7 +617,7 @@ HIDDEN bool _zerofill_val(TEdit_field& f, KEY k)
return TRUE; return TRUE;
} }
HIDDEN bool _alpha_val(TEdit_field& f, KEY k) HIDDEN bool _alpha_val(TMask_field& f, KEY k)
{ {
if (f.to_check(k)) if (f.to_check(k))
{ {
@ -629,12 +629,12 @@ HIDDEN bool _alpha_val(TEdit_field& f, KEY k)
return TRUE; return TRUE;
} }
HIDDEN bool _not_empty_chkfld_val(TEdit_field& f, KEY k) HIDDEN bool _not_empty_chkfld_val(TMask_field& f, KEY k)
{ {
bool ok = TRUE; bool ok = TRUE;
if (f.to_check(k) && f.get().not_empty()) if (f.to_check(k) && f.get().not_empty())
{ {
TBrowse * b = f.browse(); TBrowse * b = ((TEdit_field&)f).browse();
if (b != NULL) ok = b->check(k == K_TAB ? RUNNING_CHECK : FINAL_CHECK); if (b != NULL) ok = b->check(k == K_TAB ? RUNNING_CHECK : FINAL_CHECK);
} }
return ok; return ok;
@ -669,7 +669,7 @@ HIDDEN VAL_FUNC _global_val_func[MAX_FUNC] =
_not_empty_chkfld_val _not_empty_chkfld_val
}; };
bool validate(int fn, TEdit_field& f, KEY k, const TArray& parms) bool validate(int fn, TMask_field& f, KEY k, const TArray& parms)
{ {
_parms = &parms; _parms = &parms;
return (fn >= 0 && fn < MAX_FUNC) ? _global_val_func[fn](f, k) : TRUE; return (fn >= 0 && fn < MAX_FUNC) ? _global_val_func[fn](f, k) : TRUE;

View File

@ -5,7 +5,7 @@
#include <maskfld.h> #include <maskfld.h>
#endif #endif
bool validate(int fn, TEdit_field& f, KEY k, const TArray& parms); bool validate(int fn, TMask_field& f, KEY k, const TArray& parms);
bool pi_check (const char * stato, const char * cf); bool pi_check (const char * stato, const char * cf);
bool cf_check (const char * stato, const char * cf); bool cf_check (const char * stato, const char * cf);