// gestione tabelle Contabilita' Analitica #include #include #include #include "calib01.h" #include "calibmsk.h" #include "catbauc.h" //////////////////////////////////////////////////////////////////////// //MASCHERA GENERICA DI TABELLA NON GERARCHICA //////////////////////////////////////////////////////////////////////// // maschere delle tabelle di Contabilita' Analitica class TMask_tabca : public TAutomask { protected: bool on_field_event(TOperable_field& o, TField_event e, long jolly); public: TMask_tabca(const char * ,const TString16 &); virtual ~TMask_tabca(); }; TMask_tabca::TMask_tabca(const char * _maskname,const TString16 &tabname): TAutomask(_maskname) { } TMask_tabca::~TMask_tabca() { } bool TMask_tabca::on_field_event(TOperable_field& o, TField_event e, long jolly) { /* switch (o.dlg()) { default: break; }*/ return true; } //////////////////////////////////////////////////////////////////////// //MASCHERA GENERICA DI TABELLA GERARCHICA (attualmente usata per tutte le tabelle catbxxx) //////////////////////////////////////////////////////////////////////// class TMask_tabanal : public TSimple_anal_msk { const char* _codtab; const char* _keyvar; const char* _desvar; protected: virtual int get_logicnum() const { return LF_TAB; } virtual const char* get_tabname() const {return _codtab; } virtual const char* get_key_var() const { return _keyvar; } virtual const char* get_des_var() const { return _desvar; } virtual short get_field_id(int n, int k) const; public: TMask_tabanal(const char* c, const char* k, const char* d); }; short TMask_tabanal::get_field_id(int n, int k) const { const int tot = fieldrefs(1); short id = 0; if (n >= 0 && n < tot) { if (k == 2) id = F_DES1+n; else id = F_KEY1+n; } return id; } TMask_tabanal::TMask_tabanal(const char* c, const char* k, const char* d) : _codtab(c),_keyvar(k),_desvar(d) { TString16 maskname; maskname << "catb" << c; read(maskname); } //////////////////////////////////////////////////////////////////////// //APPLICAZIONE //////////////////////////////////////////////////////////////////////// // applicazione per la gestione delle tabelle di Contabilita' Analitica class TTab_app_ca : public Tab_application { protected: // TRelation_application virtual bool user_destroy() ; virtual bool user_create() ; virtual int rewrite(const TMask& m); virtual void common_mode(TMask& m, const bool mode_insert); virtual void init_insert_mode(TMask& m); virtual void init_modify_mode(TMask& m); virtual void init_query_mode(TMask& m); virtual void init_query_insert_mode(TMask& m); virtual TMask * set_mask(TMask * _m=NULL); public: TTab_app_ca(); virtual ~TTab_app_ca() {} }; HIDDEN inline TTab_app_ca& app() { return (TTab_app_ca&)main_app(); } // costruttore TTab_app_ca::TTab_app_ca() {} // alloca/cambia la maschera dell'applicazione TMask * TTab_app_ca::set_mask(TMask * _m) { if (_m != NULL) return Tab_application::set_mask(_m); else { const TFixed_string tabname(get_tabname()); TString maskname; TMask * m = NULL; if (tabname == "CDC") m = new TMask_tabanal("CDC", "CdC", "CdCDes"); else if (tabname == "CMS") m = new TMask_tabanal("CMS", "Cms", "CmsDes"); else if (tabname == "FSC") m = new TMask_tabanal("FSC", "Fsc", "FscDes"); else m = new TMask_tabca((const char *)get_mask_name(maskname),tabname); return Tab_application::set_mask(m); } } bool TTab_app_ca::user_create() { bool ok = Tab_application::user_create(); if (ok) { TMask& mask = *set_mask(); } return ok; } bool TTab_app_ca::user_destroy() { return Tab_application::user_destroy(); } int TTab_app_ca::rewrite(const TMask& m) { return Tab_application::rewrite(m); } void TTab_app_ca::init_insert_mode(TMask& m) { Tab_application::init_insert_mode(m); m.show_default(); } void TTab_app_ca::init_modify_mode(TMask& m) { Tab_application::init_modify_mode(m); m.show_default(); } void TTab_app_ca::common_mode(TMask& m, const bool mode_insert) { //Solo per tabella %AUC //in ricerca semplice la ricerca viene fatta sulla tabella %AUC (quindi usa il campo F_AUC_CODICE) //in inserimento la ricerca va fatta sul file USER (quindi usa il campo F_AUC_CODICE1) if (get_tabname() == "%AUC") { if (mode_insert) { m.hide(F_AUC_CODICE); m.show(F_AUC_CODICE1); } else { m.hide(F_AUC_CODICE1); m.show(F_AUC_CODICE); } } } void TTab_app_ca::init_query_mode(TMask& m) { Tab_application::init_query_mode(m); m.show_default(); common_mode(m, false); } void TTab_app_ca::init_query_insert_mode(TMask& m) { Tab_application::init_query_insert_mode(m); m.show_default(); common_mode(m, true); } int ca0100(int argc, char* argv[]) { TTab_app_ca a; a.run(argc, argv, TR("Tabella")); return 0; }