Risolto bug nella gestione delle VALIDATE e dei relativi WARNING nei listbox.

Ora la gestione di questi due attributi e' in TMask_field (prima era in
TEdit_field, dove i listbox non arrivano). Modifica seguita anche da Truffelli.


git-svn-id: svn://10.65.10.50/trunk@1970 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
gianluca 1995-10-17 16:47:49 +00:00
parent 7c8d0ff83c
commit 2cd31b0656
2 changed files with 38 additions and 36 deletions

View File

@ -257,6 +257,33 @@ bool TMask_field::parse_item(TScanner& scanner)
return TRUE;
}
if (scanner.key() == "VA")
{
const char* n = scanner.pop();
_validate_func = isdigit(*n) ? atoi(n) : -1;
#ifdef DBG
if (_validate_func < 0)
return yesnofatal_box("Funzione di validazione '%s' errata nel campo %d", n, dlg());
#endif
const int _nparms = scanner.integer();
#ifdef DBG
if (_nparms < 0 || _nparms > 100)
return yesnofatal_box("Numero di parametri VALIDATE errato nel campo %d: %d", dlg(), _nparms);
#endif
for(int i = 0; i < _nparms; i++)
_validate_parms.add(scanner.operand());
return TRUE;
}
if (scanner.key() == "WA")
{
_warning = scanner.string();
return TRUE;
}
return FALSE;
}
@ -2008,32 +2035,6 @@ bool TEdit_field::parse_item(TScanner& scanner)
return TRUE;
}
if (scanner.key() == "VA")
{
const char* n = scanner.pop();
_validate_func = isdigit(*n) ? atoi(n) : -1;
#ifdef DBG
if (_validate_func < 0)
return yesnofatal_box("Funzione di validazione '%s' errata nel campo %d", n, dlg());
#endif
const int _nparms = scanner.integer();
#ifdef DBG
if (_nparms < 0 || _nparms > 100)
return yesnofatal_box("Numero di parametri VALIDATE errato nel campo %d: %d", dlg(), _nparms);
#endif
for(int i = 0; i < _nparms; i++)
_validate_parms.add(scanner.operand());
return TRUE;
}
if (scanner.key() == "WA")
{
_warning = scanner.string();
return TRUE;
}
if (scanner.key() == "ME")
{
TFixed_string l(scanner.line().strip_spaces());
@ -3298,10 +3299,14 @@ bool TList_field::on_key(KEY key)
dispacth_e_char(win(), K_F9);
#endif
if (key == K_TAB || key == K_ENTER)
if (_validate_func>=0 && (key == K_TAB || key == K_ENTER))
{
bool ok = ::validate(_validate_func, *this, key, _validate_parms);
if (!ok) return FALSE;
if (!ok)
{
if (_warning.not_empty())
return error_box(_warning);
}
}
if (key == K_SPACE) on_hit();

View File

@ -86,6 +86,8 @@ protected:
int _validate_func;
// @cmember Parametri da passara alla funzione di validazione
TArray _validate_parms;
// @cmember Warning da segnalare in caso di dato errato del campo
TString _warning;
// @cmember Massaggi da mandare in caso di modifica del controllo
TArray _message;
@ -294,9 +296,9 @@ public:
// @cmember Permette di dare la stessa formattazione del campo della maschera
virtual const char* picture_data(const char* data, bool video);
// @cmember Ritorna il warning del campo
virtual const char* warning()
{ return "";}
// @cmember Ritorna il contenuto del warning associato al campo
virtual const char * warning()
{ return _warning;}
// @cmember Legge dalla relazione il valore del campo
virtual bool autoload(const TRelation* r = NULL);
@ -379,8 +381,6 @@ protected:
TString _str;
// @cmember Formato che deve avere il campo
TString _picture;
// @cmember Warning da segnalare in caso di dato errato del campo
TString _warning;
// @cmember Accettabilita' di valori nulli
CheckType _check;
// @cmember Controllo da effettuare anche in <e TMaskmode.MODE_QUERY>
@ -437,9 +437,6 @@ public:
// @cmember Permette di dare la stessa formattazione del campo della maschera
// (vedi <mf TMask_field::picture_data>)
virtual const char* picture_data(const char* data, bool video);
// @cmember Ritorna il contenuto del warning associato al campo
virtual const char * warning()
{ return _warning;}
// @cmember Permette di rendere visibile/invisibile un campo (vedi <mf TMask_field::show>)
virtual void show(bool on = TRUE);
// @cmember Abilita/disabilita il campo (lo rende scrivibile) (vedi <mf TMask_field::enable>)