Files correlati : tc2.exe Ricompilazione Demo : [ ] Commento : Invio a IPSOA git-svn-id: svn://10.65.10.50/branches/R_10_00@21404 c028cbd2-c16b-5b4b-a496-9718f37d4682
		
			
				
	
	
		
			149 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			149 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
| #include "tc2.h"
 | ||
| #include "tctbico.h"
 | ||
| 
 | ||
| // gestione tabelle IPSOA
 | ||
| #include <modaut.h>
 | ||
| #include <modtbapp.h>
 | ||
| #include <tabutil.h>
 | ||
| 
 | ||
| ///////////////////////////////////////////////////////////
 | ||
| // TConti_mask
 | ||
| ///////////////////////////////////////////////////////////
 | ||
| 
 | ||
| class TConti_mask : public TMask
 | ||
| {
 | ||
| private:
 | ||
| 
 | ||
| protected:
 | ||
| 
 | ||
| public:
 | ||
|   TConti_mask(const char * maskname);
 | ||
|   ~TConti_mask();
 | ||
| };
 | ||
| 
 | ||
| TConti_mask::TConti_mask(const char * maskname) 
 | ||
|            : TMask(maskname)
 | ||
| {
 | ||
| 	TString disp;
 | ||
| 	int fpos = 0;
 | ||
| 	int pos = 2;
 | ||
| 	TFilename tmp; 
 | ||
|   tmp.tempdir(); 
 | ||
| 	tmp.add("tmp.msk");
 | ||
| 
 | ||
| 	for (int i = 1; i <= 6; i++)
 | ||
| 	{
 | ||
| 		const int len = ini_get_int(CONFIG_DITTA, "tc", "IPLIVPC", 0, i);
 | ||
| 		const short id = F_CODTAB + i;
 | ||
| 
 | ||
| 		if (len <= 0)
 | ||
| 		{
 | ||
| 			field(id).hide();
 | ||
| 			field(id).disable();
 | ||
| 		}
 | ||
| 		else
 | ||
| 		{
 | ||
| 		  ofstream out(tmp);
 | ||
| 			TString prompt = (i == 1) ? "Codice " : "";
 | ||
|       TEdit_field & kfld = efield(id);
 | ||
| 			
 | ||
| 			kfld.set_prompt(prompt);
 | ||
| 			pos += prompt.len() + 2;
 | ||
| 			kfld.set_rect(pos, 2, len, 1, len);
 | ||
| 			pos += len + 2;
 | ||
| 
 | ||
| 			TString80 fld("CODTAB[");
 | ||
| 			
 | ||
| 			fld <<  ++fpos << ',';
 | ||
| 			fpos += len -1;
 | ||
| 			fld <<  fpos << "]";
 | ||
| 			kfld.set_field(fld);
 | ||
| 		  out << "US &ICO\n";
 | ||
| 
 | ||
| 			if (len > 0)
 | ||
| 			{
 | ||
| 				if (i > 1)
 | ||
| 					out << "CO IN " << id - 1 << '\n';
 | ||
| 				out << "IN " << fld << ' ' << id << '\n';
 | ||
| 				disp << "DI \"" << prompt << "@" << max(len, prompt.len()) << "\" " << fld << '\n';
 | ||
| 				out << disp << "DI \"Descrizione@60\" S0\n";
 | ||
| 				if (i > 1)
 | ||
| 					out << "CO OU " << id - 1 << '\n';
 | ||
| 				out << "OU " << id << ' ' << fld << '\n';
 | ||
| 			}
 | ||
| 			out << "EN" << '\n';
 | ||
| 			out.close();
 | ||
| 			TScanner scan(tmp);
 | ||
| 			while (scan.pop() != "EN")
 | ||
| 				kfld.parse_item(scan);
 | ||
| 		}
 | ||
| 	}
 | ||
|   ofstream out(tmp);
 | ||
| 	TEdit_field & dfld = efield(F_DESC);
 | ||
| 
 | ||
|   out << "US &ICO KEY 2\n";
 | ||
| 	out << "IN S0 " << F_DESC << '\n';
 | ||
| 	out << "DI \"Descrizione@60\" S0\n" << disp;
 | ||
| 	out << "CO OU " << F_CODTAB1 << '\n';
 | ||
| 	out << "EN" << '\n';
 | ||
| 	out.close();
 | ||
| 	TScanner scan(tmp);
 | ||
| 	while (scan.pop() != "EN")
 | ||
| 		dfld.parse_item(scan);
 | ||
| }
 | ||
| 
 | ||
| TConti_mask::~TConti_mask()
 | ||
| {
 | ||
| }
 | ||
| 
 | ||
| // applicazione per la gestione delle tabelle di magazzino
 | ||
| class Tab_app_IPSOA : public TTable_module_application
 | ||
| {
 | ||
|   
 | ||
| protected:  // TRelation_application
 | ||
|   virtual bool user_create() ;
 | ||
|   
 | ||
| public:
 | ||
| 	Tab_app_IPSOA() {}
 | ||
|   virtual ~Tab_app_IPSOA() {}
 | ||
| };
 | ||
| 
 | ||
| HIDDEN inline Tab_app_IPSOA& app() { return (Tab_app_IPSOA&)main_app(); }
 | ||
| 
 | ||
| 
 | ||
| bool Tab_app_IPSOA::user_create()
 | ||
| {
 | ||
|   /*
 | ||
|     la Tab_application::user_create() apre la maschera TMask in modo automatico
 | ||
|     basandosi sul parametro passato sulla linea di comando e sulla convenzione
 | ||
|     nome = "BATB"+parametro;
 | ||
|     ORA:
 | ||
|       - questa convenzione cambier<65> per separare i programmi (e le maschere)
 | ||
|           dei vari pacchetti
 | ||
|           In tal caso ridefinire il metodo virtual mask_name()
 | ||
|       - secondo il nuovo stile, gli handler vanno posti in maschere derivate
 | ||
|         dalla TMask (TMask_tabzucc, TMask_tabcau, ecc), pertanto occorre che 
 | ||
|         la maschera aperta sia del tipo corretto 
 | ||
|         per questo motivo la maschera viene creata dalla user_create()
 | ||
|   */
 | ||
| 
 | ||
|   bool ok = TTable_module_application::user_create();
 | ||
|   
 | ||
|   if (ok) 
 | ||
|   {
 | ||
|     TMask& mask = *get_mask(MODE_QUERY);
 | ||
| 		TString name = mask.source_file(); name.lower();
 | ||
| 
 | ||
| 		if (name.find("ico") >= 0)
 | ||
| 			set_mask(new TConti_mask(name));
 | ||
| 	}
 | ||
|   return ok;
 | ||
| }
 | ||
| 
 | ||
| int tc2100(int argc, char **argv) 
 | ||
| {
 | ||
| 	Tab_app_IPSOA a;
 | ||
|   a.run(argc, argv, TR("Tabella"));
 | ||
|   return 0;
 | ||
| }
 |