Patch level : 12.0 966
Files correlati : f90.exe fpmenu.men d181.des f181.dir f181.trr all-masks f90104.sql build Commento : - Corretto sheet annessi se vuoto e premevi modifica o elimina crashava il programma. - Corretto controllo in add_annesso, in release il controllo era inverso e usciva sempre senza aggiungere nulla. - Sistemati tasto selezione inutile che modificava lo sheet, ora sia con edit che doppio click sulla riga annesso apre finestra per modifica; cambiato tasto annulla con esci. - Eliminata maschera inesistente dal progetto.
This commit is contained in:
		
							parent
							
								
									57441dcce9
								
							
						
					
					
						commit
						a55b860e8c
					
				| @ -218,7 +218,6 @@ | |||||||
|     <MskCompiler Include="..\src\f9\f90200a.uml" /> |     <MskCompiler Include="..\src\f9\f90200a.uml" /> | ||||||
|     <MskCompiler Include="..\src\f9\f90300a.uml" /> |     <MskCompiler Include="..\src\f9\f90300a.uml" /> | ||||||
|     <MskCompiler Include="..\src\f9\f90300b.uml" /> |     <MskCompiler Include="..\src\f9\f90300b.uml" /> | ||||||
|     <MskCompiler Include="..\src\f9\f90300c.uml" /> |  | ||||||
|   </ItemGroup> |   </ItemGroup> | ||||||
|   <ItemGroup> |   <ItemGroup> | ||||||
|     <SqlCompiler Include="..\src\f9\sql\f90100.sql"> |     <SqlCompiler Include="..\src\f9\sql\f90100.sql"> | ||||||
|  | |||||||
| @ -103,9 +103,6 @@ | |||||||
|     <MskCompiler Include="..\src\f9\f90300b.uml"> |     <MskCompiler Include="..\src\f9\f90300b.uml"> | ||||||
|       <Filter>Masks</Filter> |       <Filter>Masks</Filter> | ||||||
|     </MskCompiler> |     </MskCompiler> | ||||||
|     <MskCompiler Include="..\src\f9\f90300c.uml"> |  | ||||||
|       <Filter>Masks</Filter> |  | ||||||
|     </MskCompiler> |  | ||||||
|   </ItemGroup> |   </ItemGroup> | ||||||
|   <ItemGroup> |   <ItemGroup> | ||||||
|     <SqlCompiler Include="..\src\f9\sql\f90100.sql"> |     <SqlCompiler Include="..\src\f9\sql\f90100.sql"> | ||||||
|  | |||||||
| @ -1,6 +0,0 @@ | |||||||
| [FieldDescr] |  | ||||||
| FILENAME = Nome del file (senza indirizzo) |  | ||||||
| LOADDATE = Data caricamento |  | ||||||
| NUMREG = Numero di registrazione associato |  | ||||||
| USER = Utente che ha caricato il file |  | ||||||
| 
 |  | ||||||
| @ -1,8 +0,0 @@ | |||||||
| [FieldDescr] |  | ||||||
| CATDOCANN = Categoria documentale annesso |  | ||||||
| CATDOCPAD = Categoria documentale padre (appartenenza annesso) |  | ||||||
| FILENAME = Nome del file (senza indirizzo) |  | ||||||
| LOADDATE = Data caricamento |  | ||||||
| NUMREG = Numero di registrazione associato |  | ||||||
| USER = Utente che ha caricato il file |  | ||||||
| 
 |  | ||||||
| @ -50,8 +50,11 @@ class TF9_categorie_doc_msk : public TAutomask | |||||||
|   bool on_key(KEY key) override; |   bool on_key(KEY key) override; | ||||||
| 
 | 
 | ||||||
|   void check_spell() const; |   void check_spell() const; | ||||||
|  |   void delete_annesso(const TString& catdoc_padre); | ||||||
|  |   void edit_annesso(const TString& catdoc_padre); | ||||||
|   void fill_annessi(const TString& catdoc); |   void fill_annessi(const TString& catdoc); | ||||||
|   void load_table() const; |   void load_table() const; | ||||||
|  |   void new_annesso(const TString& catdoc_padre); | ||||||
|   void salva_tabella() const; |   void salva_tabella() const; | ||||||
| 
 | 
 | ||||||
| public: | public: | ||||||
| @ -93,66 +96,17 @@ bool TF9_categorie_doc_msk::on_field_event(TOperable_field& o, TField_event e, l | |||||||
|       int key; |       int key; | ||||||
|       while ((key = _annessi_sheet->run()) != K_ESC) |       while ((key = _annessi_sheet->run()) != K_ESC) | ||||||
|       { |       { | ||||||
|         if (key == K_INS)   // Voglio inserire un nuovo annesso
 |         switch (key) | ||||||
|         { |         { | ||||||
|           _categorie_doc.reload(); |         case K_INS: | ||||||
|           TString title; title << "Nuovo annesso per " << catdoc_padre; |           new_annesso(catdoc_padre); | ||||||
|           TNew_annesso_msk new_ann(title); |  | ||||||
|           while(new_ann.run() == K_ENTER) |  | ||||||
|           { |  | ||||||
|             TString catann = new_ann.get(101); |  | ||||||
|             if (catann.empty()) |  | ||||||
|             { |  | ||||||
|               warning_box("Inserire il nome tipo annesso"); |  | ||||||
|               continue; |  | ||||||
|             } |  | ||||||
|             TCategorie_doc::annesso ann; |  | ||||||
|             if (!_categorie_doc.get_ann(catann, ann)) |  | ||||||
|             { |  | ||||||
|               const TString&  descr   = new_ann.get(102); |  | ||||||
|               const TString&  tipo    = new_ann.get(103); |  | ||||||
|               const bool      obblig  = new_ann.get_bool(104); |  | ||||||
|               correct_spell_catdoc(catann); |  | ||||||
|               _categorie_doc.add_annesso(catdoc_padre, catann, descr, tipo, obblig); |  | ||||||
|               fill_annessi(catdoc_padre); |  | ||||||
|             } |  | ||||||
|             else |  | ||||||
|               warning_box("E' gia' presente un annesso con lo stesso nome per la categoria %s", (const char*)catdoc_padre); |  | ||||||
|           break; |           break; | ||||||
|           } |         case K_DEL: | ||||||
|         } |           delete_annesso(catdoc_padre); | ||||||
|         else if (key == K_DEL) |           break; | ||||||
|         { |         case K_ENTER: | ||||||
|           const int r = _annessi_sheet->selected(); |           edit_annesso(catdoc_padre); | ||||||
|           if (yesno_box("Eliminare l'annesso N. %d?", r + 1)) |         default: break; | ||||||
|           { |  | ||||||
|             _categorie_doc.del_annesso(catdoc_padre, _annessi_sheet->row(r).get(0)); |  | ||||||
|             fill_annessi(catdoc_padre); |  | ||||||
|           } |  | ||||||
|         } |  | ||||||
|         else if(key == K_CTRL+'F' || key == K_ENTER)  // EDIT
 |  | ||||||
|         { |  | ||||||
|           //_categorie_doc.reload();
 |  | ||||||
|           TString title; title << "Modifica annesso per " << catdoc_padre; |  | ||||||
|           TNew_annesso_msk new_ann(title); |  | ||||||
|           new_ann.edit_mode(); |  | ||||||
|           TToken_string& r = _annessi_sheet->row(_annessi_sheet->selected()); |  | ||||||
|           new_ann.fill_field(r.get(0), r.get(1), r.get(2), r.get_bool(3)); |  | ||||||
|           if (new_ann.run() == K_ENTER) |  | ||||||
|           { |  | ||||||
|             const TString catann = new_ann.get(101); |  | ||||||
|             //TCategorie_doc::annesso ann;
 |  | ||||||
|             /*if (!_categorie_doc.get_ann(catann, ann))
 |  | ||||||
|             {*/ |  | ||||||
|             const TString&  descr   = new_ann.get(102); |  | ||||||
|             const TString&  tipo    = new_ann.get(103); |  | ||||||
|             const bool      obblig  = new_ann.get_bool(104); |  | ||||||
|             //correct_spell_catdoc(catann);
 |  | ||||||
|             _categorie_doc.del_annesso(catdoc_padre, catann); |  | ||||||
|             _categorie_doc.add_annesso(catdoc_padre, catann, descr, tipo, obblig); |  | ||||||
|             fill_annessi(catdoc_padre); |  | ||||||
|             //}
 |  | ||||||
|           } |  | ||||||
|         } |         } | ||||||
|       } |       } | ||||||
|     } |     } | ||||||
| @ -189,12 +143,47 @@ void TF9_categorie_doc_msk::check_spell() const | |||||||
|   sf.show(); |   sf.show(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | void TF9_categorie_doc_msk::delete_annesso(const TString& catdoc_padre) | ||||||
|  | { | ||||||
|  |   if (_annessi_sheet->items() > 0) | ||||||
|  |   { | ||||||
|  |     const int r = _annessi_sheet->selected(); | ||||||
|  |     if (yesno_box("Eliminare l'annesso N. %d?", r + 1)) | ||||||
|  |     { | ||||||
|  |       _categorie_doc.del_annesso(catdoc_padre, _annessi_sheet->row(r).get(0)); | ||||||
|  |       fill_annessi(catdoc_padre); | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void TF9_categorie_doc_msk::edit_annesso(const TString& catdoc_padre) | ||||||
|  | { | ||||||
|  |   if (_annessi_sheet->items() > 0) | ||||||
|  |   { | ||||||
|  |     TString title; title << "Modifica annesso per " << catdoc_padre; | ||||||
|  |     TNew_annesso_msk new_ann(title); | ||||||
|  |     new_ann.edit_mode(); | ||||||
|  |     TToken_string& r = _annessi_sheet->row(_annessi_sheet->selected()); | ||||||
|  |     new_ann.fill_field(r.get(0), r.get(1), r.get(2), r.get_bool(3)); | ||||||
|  |     if (new_ann.run() == K_ENTER) | ||||||
|  |     { | ||||||
|  |       const TString&  catann  = new_ann.get(101); | ||||||
|  |       const TString&  descr   = new_ann.get(102); | ||||||
|  |       const TString&  tipo    = new_ann.get(103); | ||||||
|  |       const bool      obblig  = new_ann.get_bool(104); | ||||||
|  |       _categorie_doc.del_annesso(catdoc_padre, catann); | ||||||
|  |       _categorie_doc.add_annesso(catdoc_padre, catann, descr, tipo, obblig); | ||||||
|  |       fill_annessi(catdoc_padre); | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | 
 | ||||||
| void TF9_categorie_doc_msk::fill_annessi(const TString& catdoc) | void TF9_categorie_doc_msk::fill_annessi(const TString& catdoc) | ||||||
| { | { | ||||||
|   TCategorie_doc d; |   TCategorie_doc d; | ||||||
|   d.set_mode_sheet(6); |   d.set_mode_sheet(0x1E); | ||||||
|   _annessi_sheet = d.get_sheet_ann(catdoc); |   _annessi_sheet = d.get_sheet_ann(catdoc); | ||||||
|   _annessi_sheet->add_button(DLG_EDIT, TR("~Modifica"), K_CTRL + 'F', TOOL_EDIT); |   _annessi_sheet->add_button(DLG_EDIT, TR("~Modifica"), K_ENTER, TOOL_EDIT); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void TF9_categorie_doc_msk::load_table() const | void TF9_categorie_doc_msk::load_table() const | ||||||
| @ -216,6 +205,36 @@ void TF9_categorie_doc_msk::load_table() const | |||||||
|   sf.force_update(); |   sf.force_update(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | void TF9_categorie_doc_msk::new_annesso(const TString& catdoc_padre) | ||||||
|  | { | ||||||
|  |   _categorie_doc.reload(); | ||||||
|  |   TString title; | ||||||
|  |   title << "Nuovo annesso per " << catdoc_padre; | ||||||
|  |   TNew_annesso_msk new_ann(title); | ||||||
|  |   while (new_ann.run() == K_ENTER) | ||||||
|  |   { | ||||||
|  |     TString catann = new_ann.get(101); | ||||||
|  |     if (catann.empty()) | ||||||
|  |     { | ||||||
|  |       warning_box("Inserire il nome tipo annesso"); | ||||||
|  |       continue; | ||||||
|  |     } | ||||||
|  |     TCategorie_doc::annesso ann; | ||||||
|  |     if (!_categorie_doc.get_ann(catann, ann)) | ||||||
|  |     { | ||||||
|  |       const TString& descr = new_ann.get(102); | ||||||
|  |       const TString& tipo = new_ann.get(103); | ||||||
|  |       const bool obblig = new_ann.get_bool(104); | ||||||
|  |       correct_spell_catdoc(catann); | ||||||
|  |       _categorie_doc.add_annesso(catdoc_padre, catann, descr, tipo, obblig); | ||||||
|  |       fill_annessi(catdoc_padre); | ||||||
|  |     } | ||||||
|  |     else | ||||||
|  |       warning_box("E' gia' presente un annesso con lo stesso nome per la categoria %s", (const char*)catdoc_padre); | ||||||
|  |     break; | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | 
 | ||||||
| void TF9_categorie_doc_msk::salva_tabella() const | void TF9_categorie_doc_msk::salva_tabella() const | ||||||
| { | { | ||||||
|   check_spell(); |   check_spell(); | ||||||
|  | |||||||
| @ -1192,13 +1192,8 @@ std::map<TString, TCategorie_doc::annesso>::iterator TCategorie_doc::find_anness | |||||||
| void TCategorie_doc::add_annesso(const TString& catdoc_padre, const TString& catdoc_ann, const TString& descr, | void TCategorie_doc::add_annesso(const TString& catdoc_padre, const TString& catdoc_ann, const TString& descr, | ||||||
|                                  const TString& class_ann, const bool obblig) |                                  const TString& class_ann, const bool obblig) | ||||||
| { | { | ||||||
| #ifdef DBG |  | ||||||
|   CHECK(catdoc_padre && *catdoc_padre && catdoc_ann && *catdoc_ann && class_ann && *class_ann, |   CHECK(catdoc_padre && *catdoc_padre && catdoc_ann && *catdoc_ann && class_ann && *class_ann, | ||||||
|         "add_annesso failed: some parameters are NULL or keys are empty"); |         "add_annesso failed: some parameters are NULL or keys are empty"); | ||||||
| #else |  | ||||||
|   if (catdoc_padre && *catdoc_padre && catdoc_ann && *catdoc_ann && class_ann && *class_ann) |  | ||||||
|     return; |  | ||||||
| #endif |  | ||||||
|   annesso ann{ catdoc_padre, catdoc_ann, descr, class_ann, obblig }; |   annesso ann{ catdoc_padre, catdoc_ann, descr, class_ann, obblig }; | ||||||
|   _rows_annessi.insert({ catdoc_padre, ann }); |   _rows_annessi.insert({ catdoc_padre, ann }); | ||||||
| 
 | 
 | ||||||
| @ -1208,6 +1203,10 @@ void TCategorie_doc::add_annesso(const TString& catdoc_padre, const TString& cat | |||||||
| void TCategorie_doc::add_categoria(const TString& catdoc, const TString& descr, const TString& class_sost, const TString& caus_sost, | void TCategorie_doc::add_categoria(const TString& catdoc, const TString& descr, const TString& class_sost, const TString& caus_sost, | ||||||
|                                    const TString& causcont, const TString& tipocaus) |                                    const TString& causcont, const TString& tipocaus) | ||||||
| { | { | ||||||
|  | #ifdef DBG | ||||||
|  |   CHECK(catdoc && *catdoc && class_sost && *class_sost && caus_sost && *caus_sost, | ||||||
|  |     "add_categoria failed: some parameters are NULL or keys are empty"); | ||||||
|  | #endif | ||||||
|   classe_doc cd = { catdoc, descr, class_sost, caus_sost, causcont, tipocaus }; |   classe_doc cd = { catdoc, descr, class_sost, caus_sost, causcont, tipocaus }; | ||||||
|   _rows.emplace_back(std::make_shared<classe_doc>(cd)); |   _rows.emplace_back(std::make_shared<classe_doc>(cd)); | ||||||
|   save_cat(); |   save_cat(); | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user