108 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			108 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
| #include <brwapp.h>
 | |
| #include <mailbox.h>
 | |
| 
 | |
| ///////////////////////////////////////////////////////////
 | |
| // TBrowse_application
 | |
| ///////////////////////////////////////////////////////////
 | |
| 
 | |
| void TBrowse_application::main_loop()
 | |
| {
 | |
|   long recins = -1;
 | |
| 
 | |
|   query_mode();
 | |
|   curr_mask().open_modal();
 | |
| 
 | |
|   KEY k;
 | |
|   
 | |
|   // Provoca l'autopremimento per il messaggio di LINK
 | |
|   if (lnflag()) curr_mask().send_key(K_AUTO_ENTER, 0);
 | |
|   
 | |
|   do
 | |
|   {
 | |
|     // Dis/abilita cambio ditta
 | |
|     enable_menu_item(M_FILE_NEW, (curr_mask().mode() == MODE_QUERY));
 | |
|     
 | |
|     k = curr_mask().run();
 | |
| 
 | |
|     // Seleziona il cursore a clessidra se necessario
 | |
|     if (k != K_QUIT && k != K_F9) 
 | |
|       begin_wait();
 | |
| 
 | |
|     switch (k)
 | |
|     {
 | |
|     case K_ESC:
 | |
|       if (curr_mask().edit_mode()) 
 | |
|         file().reread(_unlock); // Unlock main file
 | |
| 
 | |
|       if (curr_mask().query_mode()) 
 | |
|       {
 | |
|         curr_mask().reset();
 | |
|         set_fixed();
 | |
|       }  
 | |
|       else query_mode();
 | |
|       if (lnflag()) k = K_QUIT;
 | |
|       break;                             
 | |
|     case K_QUIT:      
 | |
|       if (curr_mask().mode() == MODE_MOD && 
 | |
|           (autoins_caller().not_empty() || lnflag()))
 | |
|         recins = file().recno();
 | |
|       break;
 | |
|     case K_ENTER:
 | |
|       if (find(0)) modify_mode();
 | |
|       else message_box("Registrazione assente"); // ocio
 | |
|       break;
 | |
|     case K_F9:
 | |
|       search_mode();
 | |
|       break;
 | |
|     default:
 | |
|       setkey();
 | |
|       int err = ~NOERR;
 | |
|       switch (k)
 | |
|       {
 | |
|       case K_HOME:
 | |
|         err = file().readat(first(), _testandlock);
 | |
|         break;
 | |
|       case K_NEXT:
 | |
|         err = file().reread();
 | |
|         err = file().next(_testandlock);
 | |
|         break;
 | |
|       case K_PREV:
 | |
|         err = file().reread();
 | |
|         err = file().prev(_testandlock);
 | |
|         break;
 | |
|       case K_END:
 | |
|         err = file().readat(last(), _testandlock);
 | |
|         break;
 | |
|       default:
 | |
|         break;
 | |
|       }
 | |
|       if (err == NOERR || err == _islocked) modify_mode();
 | |
|       else query_mode();
 | |
|       break;
 | |
|     }
 | |
|     
 | |
|     if (k != K_QUIT && k != K_F9) 
 | |
|       end_wait(); 
 | |
|   } while (k != K_QUIT);
 | |
| 
 | |
|   if (curr_mask().is_open())
 | |
|     curr_mask().close_modal();
 | |
| 
 | |
|   curr_mask().set_mode(NO_MODE);
 | |
|   
 | |
|   if (recins > 0)
 | |
|   { 
 | |
|     TString16 ri; ri << recins;
 | |
|     if (autoins_caller().not_empty())
 | |
|     {
 | |
|       TMessage msg(autoins_caller(), MSG_AI, ri);
 | |
|       msg.send();
 | |
|     }
 | |
|     if (lnflag())
 | |
|     {
 | |
|       TMessage msg(autoins_caller(), MSG_LN, ri);
 | |
|       msg.send();
 | |
|     }
 | |
|   }
 | |
| }
 |