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:
parent
7c8d0ff83c
commit
2cd31b0656
@ -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();
|
||||
|
@ -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>)
|
||||
|
Loading…
x
Reference in New Issue
Block a user