Files correlati : ve6.exe Ricompilazione Demo : [ ] Commento : Riportata la versione 3.1 patch 979 git-svn-id: svn://10.65.10.50/trunk@15623 c028cbd2-c16b-5b4b-a496-9718f37d4682
		
			
				
	
	
		
			164 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			164 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
| #include <applicat.h>
 | |
| #include <printer.h>            
 | |
| 
 | |
| #include "dblib.h"
 | |
| #include "db1200a.h"
 | |
| 
 | |
| class TStampa_anagrafica : public TSkeleton_application
 | |
| {  
 | |
|   TForm * _form;
 | |
|   TMask * _msk;
 | |
|  protected:
 | |
|   virtual void main_loop();
 | |
|   virtual bool create();
 | |
|   virtual bool destroy();
 | |
|   void configura_profilo();
 | |
|  public:                            
 | |
|   TStampa_anagrafica ();
 | |
|   virtual ~TStampa_anagrafica() {}
 | |
| };                                                         
 | |
|                                           
 | |
| TStampa_anagrafica::TStampa_anagrafica()
 | |
| {}                                                        
 | |
|                                             
 | |
| bool TStampa_anagrafica::create()
 | |
| { 
 | |
|   _msk = new TMask("db1200a");
 | |
|   _form = new TForm("db1200a");  
 | |
|   return TSkeleton_application::create();
 | |
| }
 | |
|                                 
 | |
| bool TStampa_anagrafica::destroy()
 | |
| { 
 | |
|   if (_form) delete _form;
 | |
|   if (_msk) delete _msk;
 | |
|   return TSkeleton_application::destroy();
 | |
| }                              
 | |
| 
 | |
| void TStampa_anagrafica::configura_profilo()
 | |
| {   
 | |
|   int  ordinamento = _msk->get_int(F_SORT);
 | |
|            
 | |
|   TRectype da(LF_DIST);
 | |
|   TRectype  a(LF_DIST);  
 | |
|   TString sda = _msk->get(F_DISTDA);
 | |
|   TString sa = _msk->get(F_DISTA);
 | |
|   TString stemp;
 | |
|     
 | |
|   da.put("CODDIST", _msk->get(F_DISTDA));
 | |
|   a.put("CODDIST", _msk->get(F_DISTA));
 | |
|   TCursor * cur  = _form->cursor();
 | |
|   TString filtrorighe,filtrodist;
 | |
|   const bool r_lavorazioni = _msk->get_bool(F_RIGHE_LAVORAZIONI);
 | |
|   const bool r_articoli = _msk->get_bool(F_RIGHE_ARTICOLI);
 | |
|   const bool r_virtuali = _msk->get_bool(F_RIGHE_VIRTUALI);
 | |
|   const bool r_variabili = _msk->get_bool(F_RIGHE_VARIABILI);
 | |
|   const bool lavorazioni = _msk->get_bool(F_DIST_LAVORAZIONI);
 | |
|   const bool articoli = _msk->get_bool(F_DIST_ARTICOLI);
 | |
|   const bool virtuali = _msk->get_bool(F_DIST_VIRTUALI);
 | |
|   bool update=FALSE;
 | |
|   if (articoli)
 | |
|   {
 | |
|     filtrodist << "(CODDIST!=" << LF_ANAMAG << "->CODART)";
 | |
|     update=TRUE;
 | |
|   }                                 
 | |
|   if (lavorazioni)
 | |
|   {                                                        
 | |
|     if (filtrodist.not_empty())
 | |
|       filtrodist << "&&";
 | |
|     filtrodist << "(CODDIST!=" << LF_TAB << "->CODTAB)";
 | |
|     update=TRUE;
 | |
|   }                            
 | |
|   if (virtuali)
 | |
|   {                                                        
 | |
|     if (filtrodist.not_empty())
 | |
|       filtrodist << "&&";
 | |
|     filtrodist << "(VIRTUALE==\" \")";
 | |
|   }
 | |
|   cur->setregion (da,a);
 | |
|   cur->setfilter ("");
 | |
|   if (filtrodist.not_empty())
 | |
|     cur->setfilter (filtrodist,update);
 | |
| 
 | |
|   const bool righe = _msk->get_bool(F_DETT_RIGHE);
 | |
|   _form->find_field('S', odd_page, "RIGHE_SUB").enable(righe); 
 | |
|   if (righe)
 | |
|   	_form->find_field('B', odd_page, 1).section().set_height(2);
 | |
|   else
 | |
|   	_form->find_field('B', odd_page, 1).section().set_height(1);
 | |
|   if (r_articoli)
 | |
|   {
 | |
|     filtrorighe << "(" << LF_RDIST << "->TIPO!=\"A\")";
 | |
|   }                                 
 | |
|   if (r_lavorazioni)
 | |
|   {                                                        
 | |
|     if (filtrorighe.not_empty()) 
 | |
|       filtrorighe << "&&";
 | |
|     filtrorighe << "(" << LF_RDIST << "->TIPO!=\"L\")";
 | |
|   }                            
 | |
|   if (r_virtuali)
 | |
|   {               
 | |
|     if (filtrorighe.not_empty()) 
 | |
|       filtrorighe << "&&";
 | |
|     filtrorighe << "(" << LF_RDIST << "->TIPO!=\"D\")";
 | |
|   } 
 | |
|   if (r_variabili)
 | |
|   {               
 | |
|     if (filtrorighe.not_empty())
 | |
|       filtrorighe << "&&";
 | |
|     filtrorighe << "(" << LF_RDIST << "->TIPO!=\"V\")";
 | |
|   } 
 | |
| 
 | |
|   if (ordinamento)
 | |
|   {
 | |
|     if (filtrorighe.not_empty())
 | |
|      filtrorighe << "&&";
 | |
|            
 | |
|     filtrorighe.insert("(");
 | |
|     filtrorighe << "(" << LF_RDIST << "->SORT" << ordinamento << "!=0))";
 | |
|   }  
 | |
| 
 | |
|   // Sostituisce il file delle Righe distinte
 | |
|   if (righe)
 | |
|   {
 | |
|     TRelation* rel = _form->relation();
 | |
|     stemp= "CODDIST|NRIG";
 | |
|     if (ordinamento)
 | |
|       stemp << "|SORT" << ordinamento;
 | |
|       
 | |
|     TSortedfile *sf = new TSortedfile(LF_RDIST, NULL,stemp);
 | |
|     sf->cursor().setfilter(filtrorighe, TRUE);
 | |
|     rel->replace(sf, 3);
 | |
|   }
 | |
| }                                                    
 | |
| 
 | |
| void TStampa_anagrafica::main_loop()
 | |
| { 
 | |
|   while (_msk->run()!=K_QUIT)
 | |
|   {                            
 | |
|     configura_profilo();
 | |
|                
 | |
|     // Fincature & altro
 | |
|     const int hh = 6;
 | |
|     const int fl = printer().formlen();
 | |
|               
 | |
|     int rows[4];         // Righe orizzontali
 | |
|     rows[0] = hh-2;
 | |
|     rows[1] = hh;
 | |
|     rows[2] = fl-1;
 | |
|     rows[3] = 0;
 | |
|     _form->genera_intestazioni(odd_page, hh-1);
 | |
|     _form->genera_fincatura(odd_page, hh-2, fl-1, rows);
 | |
|     if (_form->cursor()->items() > 0)
 | |
|       _form->print();
 | |
|   } 
 | |
| }       
 | |
| 
 | |
| int db1200(int argc, char* argv[])
 | |
| {
 | |
|   TStampa_anagrafica app;
 | |
|   app.run(argc, argv, TR("Stampa anagrafica distinte"));
 | |
|   return 0;
 | |
| }
 | |
| 
 |