Corretta check (utilizzato il modo corrente della maschera)
git-svn-id: svn://10.65.10.50/trunk@4488 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
		
							parent
							
								
									e6ff4aa8c2
								
							
						
					
					
						commit
						797062113f
					
				| @ -1280,8 +1280,8 @@ bool TSpreadsheet::event_handler(XI_OBJ* itf, XI_EVENT *xiev) | ||||
|               if (rec < items()) | ||||
|                 str2mask(rec); | ||||
|               notify(rec, K_CTRL+K_DEL);        // Notifica l'avvenuta cancellazione
 | ||||
| 							set_dirty(); | ||||
| 							if (rec >= items()) | ||||
|               set_dirty(); | ||||
|               if (rec >= items()) | ||||
|                 rec = items() - 1; | ||||
|               if (rec >= 0) | ||||
|                 select(rec, FALSE); | ||||
| @ -2047,9 +2047,9 @@ KEY TSpreadsheet::edit(int n) | ||||
| 
 | ||||
| // Certified 100%
 | ||||
| TSheet_field::TSheet_field(TMask* m) | ||||
| 		: TLoadable_field(m), _append(TRUE), | ||||
| 		_enable_autoload(FALSE),_sheetfile(NULL),_linee_rec(NULL),_external_record(FALSE), | ||||
| 		_userput(NULL),_userget(NULL) | ||||
|     : TLoadable_field(m), _append(TRUE), | ||||
|     _enable_autoload(FALSE),_sheetfile(NULL),_linee_rec(NULL),_external_record(FALSE), | ||||
|     _userput(NULL),_userget(NULL) | ||||
| { | ||||
| } | ||||
| 
 | ||||
| @ -2065,10 +2065,10 @@ bool TSheet_field::is_kind_of(word cid) const | ||||
| // Certified 100%
 | ||||
| TSheet_field::~TSheet_field() | ||||
| { | ||||
| 	if (_sheetfile!=NULL) | ||||
| 		delete _sheetfile; | ||||
| 	if (_linee_rec!=NULL && !_external_record) | ||||
| 		delete _linee_rec; | ||||
|   if (_sheetfile!=NULL) | ||||
|     delete _sheetfile; | ||||
|   if (_linee_rec!=NULL && !_external_record) | ||||
|     delete _linee_rec; | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
| @ -2109,13 +2109,13 @@ void TSheet_field::parse_head(TScanner& scanner) | ||||
| // Certified: ...under debug...
 | ||||
| bool TSheet_field::parse_item(TScanner& scanner) | ||||
| { | ||||
|   if (scanner.key() == "IT")		// ITEM
 | ||||
|   if (scanner.key() == "IT")    // ITEM
 | ||||
|   { | ||||
|     _ctl_data._park.add(scanner.string()); | ||||
|     return TRUE; | ||||
|   } | ||||
| 
 | ||||
|   if (scanner.key() == "FL")		// FLAGS
 | ||||
|   if (scanner.key() == "FL")    // FLAGS
 | ||||
|   { | ||||
|     _enable_autoload=scanner.string()=="A"; | ||||
|     return TRUE; | ||||
| @ -2132,21 +2132,21 @@ bool TSheet_field::parse_item(TScanner& scanner) | ||||
|       if (fexist(d.filename()))        // Controlla l'esistenza del file
 | ||||
|       {   | ||||
|         _sheetfile = new TLocalisamfile(logicnum); | ||||
| 				TString s = scanner.pop(); | ||||
|         TString s = scanner.pop(); | ||||
| 
 | ||||
|   			// cerca l'indicazione del campo di numerazione
 | ||||
|   			if (s == "KE") | ||||
|   			{ | ||||
|   				s = scanner.pop(); | ||||
| 	       	_linee_rec= new TRecord_array(logicnum, s);// alloca i record 
 | ||||
|   			} | ||||
|   			else | ||||
|   			{ | ||||
|   			  NFCHECK("Manca la definizione del campo di autonumerazione nel campo %d",  | ||||
|         // cerca l'indicazione del campo di numerazione
 | ||||
|         if (s == "KE") | ||||
|         { | ||||
|           s = scanner.pop(); | ||||
|           _linee_rec= new TRecord_array(logicnum, s);// alloca i record 
 | ||||
|         } | ||||
|         else | ||||
|         { | ||||
|           NFCHECK("Manca la definizione del campo di autonumerazione nel campo %d",  | ||||
|           (int)dlg()); | ||||
| 				} | ||||
|         } | ||||
| 
 | ||||
| 			} | ||||
|       } | ||||
|     }   | ||||
|     return TRUE; | ||||
|   } | ||||
| @ -2636,7 +2636,7 @@ void TSheet_field::check_row(int n) | ||||
|   const int max  = m.fields(); | ||||
|   TMaskmode mask_mode = (TMaskmode) m.mode(); | ||||
| 
 | ||||
|   m.set_mode(MODE_INS);   | ||||
|   m.set_mode(mask().mode());   | ||||
|   for (int i = max - 1; i >= 0; i--) | ||||
|   { | ||||
|     TMask_field & f = m.fld(i); | ||||
| @ -2654,49 +2654,49 @@ void TSheet_field::check_row(int n) | ||||
| // Certified: ...under debug..
 | ||||
| void TSheet_field::set_lines_record(TRecord_array & r_a) | ||||
| { | ||||
| 	if (_linee_rec && !_external_record) | ||||
| 		delete _linee_rec; | ||||
| 	_linee_rec= & r_a; | ||||
| 	_external_record=TRUE; // il record attuale è esterno...
 | ||||
|   if (_linee_rec && !_external_record) | ||||
|     delete _linee_rec; | ||||
|   _linee_rec= & r_a; | ||||
|   _external_record=TRUE; // il record attuale è esterno...
 | ||||
| } | ||||
| 
 | ||||
| // Certified: ...under debug..
 | ||||
| TRectype * TSheet_field::putkey(const TRelation& r) | ||||
| { | ||||
|   if (_sheetfile) { | ||||
|   	// *******
 | ||||
| 		// costruisce la chiave per il record array 
 | ||||
| 		_sheetfile->zero(); | ||||
| 		_file_k_names.restart(); | ||||
| 		_file_k_ids.restart(); | ||||
| 		TString dbfieldname; | ||||
|   	while ((dbfieldname=_file_k_names.get())!="") { | ||||
| 			TMask_field & f= mask().field(atoi(_file_k_ids.get())); | ||||
| 			((TLoadable_field&)f).autoload(r); | ||||
|  			_sheetfile->put(dbfieldname, f.get());  | ||||
| 		}  | ||||
| 		return &_sheetfile->curr(); | ||||
| 	} | ||||
| 	return NULL; | ||||
|     // *******
 | ||||
|     // costruisce la chiave per il record array 
 | ||||
|     _sheetfile->zero(); | ||||
|     _file_k_names.restart(); | ||||
|     _file_k_ids.restart(); | ||||
|     TString dbfieldname; | ||||
|     while ((dbfieldname=_file_k_names.get())!="") { | ||||
|       TMask_field & f= mask().field(atoi(_file_k_ids.get())); | ||||
|       ((TLoadable_field&)f).autoload(r); | ||||
|       _sheetfile->put(dbfieldname, f.get());  | ||||
|     }  | ||||
|     return &_sheetfile->curr(); | ||||
|   } | ||||
|   return NULL; | ||||
| } | ||||
| 
 | ||||
| // Certified: ...under debug..
 | ||||
| bool TSheet_field::autoload_line(int i,TRectype & rec) | ||||
| { | ||||
| 			TToken_string &row= this->row(i-1); | ||||
|       TToken_string &row= this->row(i-1); | ||||
|        | ||||
|       row = ""; | ||||
|       // riempie le colonne dello sheet i cui campi hanno attributo "FIELD"
 | ||||
|       for (int f=FIRST_FIELD;  f<=_last_column_id; f++) { | ||||
| 				TFieldref const *dbfield=sheet_mask().field(f).field(); | ||||
| 				if (dbfield) { | ||||
|      			row.add(dbfield->read(rec),cid2index(f)); | ||||
|      		} | ||||
| 				// completa l'operazione con le funzioni definite dall'utente
 | ||||
|         TFieldref const *dbfield=sheet_mask().field(f).field(); | ||||
|         if (dbfield) { | ||||
|           row.add(dbfield->read(rec),cid2index(f)); | ||||
|         } | ||||
|         // completa l'operazione con le funzioni definite dall'utente
 | ||||
|       }  | ||||
| 			if (_userget) | ||||
|  				_userget(*this,i); | ||||
|     	check_row(i-1); | ||||
|       if (_userget) | ||||
|         _userget(*this,i); | ||||
|       check_row(i-1); | ||||
|   return TRUE; | ||||
| } | ||||
| 
 | ||||
| @ -2704,14 +2704,14 @@ bool TSheet_field::autoload_line(int i,TRectype & rec) | ||||
| bool TSheet_field::autosave_line(int i,TRectype & rec) | ||||
| { | ||||
|       for (int f=FIRST_FIELD;  f<=_last_column_id; f++) { | ||||
| 				TFieldref const *dbfield=sheet_mask().field(f).field(); | ||||
| 				if (dbfield) | ||||
|      			dbfield->write(cell(i-1,cid2index(f)),rec); | ||||
|         TFieldref const *dbfield=sheet_mask().field(f).field(); | ||||
|         if (dbfield) | ||||
|           dbfield->write(cell(i-1,cid2index(f)),rec); | ||||
|       }  | ||||
| 			// completa l'operazione con le funzioni definite dall'utente
 | ||||
| 			if (_userput) | ||||
|  				_userput(*this,i); | ||||
| 	return FALSE; 				 | ||||
|       // completa l'operazione con le funzioni definite dall'utente
 | ||||
|       if (_userput) | ||||
|         _userput(*this,i); | ||||
|   return FALSE;          | ||||
| }     | ||||
| 
 | ||||
| // Certified: ...under debug..
 | ||||
| @ -2719,18 +2719,18 @@ bool TSheet_field::autoload(const TRelation& rel) | ||||
| { | ||||
|   if (_enable_autoload) | ||||
|   { | ||||
|   	CHECK(_linee_rec !=NULL, "Iu ev forgotten tu declare de Record array for de scit"); | ||||
|     CHECK(_linee_rec !=NULL, "Iu ev forgotten tu declare de Record array for de scit"); | ||||
|     // *******
 | ||||
|     // trasferisce le linee dal record array allo sheet
 | ||||
|     destroy(); // cancella lo sheet
 | ||||
|     const int last_line = _linee_rec->last_row(); | ||||
|     for (int i= 1; i <= last_line; i++) | ||||
|     { | ||||
|     	autoload_line(i,_linee_rec->row(i, TRUE));  | ||||
|       autoload_line(i,_linee_rec->row(i, TRUE));  | ||||
|     } | ||||
| 
 | ||||
|     return(0); | ||||
| 	} | ||||
|   } | ||||
|   return _enable_autoload; | ||||
| } | ||||
| 
 | ||||
| @ -2739,30 +2739,30 @@ bool TSheet_field::autosave(TRelation& rel) | ||||
| { | ||||
|   if (_enable_autoload) | ||||
|   { | ||||
|   	CHECK(_linee_rec !=NULL, "Iu ev forgotten tu declare de Record array for de scit"); | ||||
|   	_linee_rec->destroy_rows(); | ||||
| 	  if (_sheetfile) | ||||
| 	  { | ||||
| 	  	// trasferisce dal file locale
 | ||||
| 			if (mask().insert_mode()) { | ||||
| 				// rinumera la chiave
 | ||||
| 				_file_k_names.restart(); | ||||
| 				_file_k_ids.restart(); | ||||
| 				TString dbfieldname; | ||||
| 		  	while ((dbfieldname=_file_k_names.get())!="") { | ||||
| 					TMask_field & f= mask().field(atoi(_file_k_ids.get())); | ||||
|    				_linee_rec->renum_key(dbfieldname, f.get()); | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
|     CHECK(_linee_rec !=NULL, "Iu ev forgotten tu declare de Record array for de scit"); | ||||
|     _linee_rec->destroy_rows(); | ||||
|     if (_sheetfile) | ||||
|     { | ||||
|       // trasferisce dal file locale
 | ||||
|       if (mask().insert_mode()) { | ||||
|         // rinumera la chiave
 | ||||
|         _file_k_names.restart(); | ||||
|         _file_k_ids.restart(); | ||||
|         TString dbfieldname; | ||||
|         while ((dbfieldname=_file_k_names.get())!="") { | ||||
|           TMask_field & f= mask().field(atoi(_file_k_ids.get())); | ||||
|           _linee_rec->renum_key(dbfieldname, f.get()); | ||||
|         } | ||||
|       } | ||||
|     } | ||||
|     // *******
 | ||||
|     // trasferisce le linee dallo sheet al record array 
 | ||||
|     for (int i= 1; i <= items(); i++) | ||||
| 	  { | ||||
|     { | ||||
|       autosave_line(i,_linee_rec->row(i, TRUE)); | ||||
| 		}     | ||||
| 	} | ||||
| 	return _enable_autoload; | ||||
|     }     | ||||
|   } | ||||
|   return _enable_autoload; | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user