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();
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 |