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
 | 
			
		||||
  // @cmember Ritorna il contenuto del warning associato al campo
 | 
			
		||||
  virtual const char * warning()
 | 
			
		||||
  { return "";}
 | 
			
		||||
  { 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