#include #include #include "ba4.h" #include "ba4500.h" class TAttivita_application : public TRelation_application { TMask* _msk; TRelation* _rel; bool user_create() ; bool user_destroy() ; virtual TMask* get_mask(int mode) { return _msk;} virtual bool changing_mask(int mode) { return FALSE;} virtual TRelation* get_relation() const { return _rel;} virtual int read(TMask& m); virtual void init_query_mode(TMask& m) ; virtual void init_query_insert_mode(TMask& m) ; static bool gest_res(TMask_field& f, KEY key); public: TAttivita_application() {} virtual ~TAttivita_application() {} }; HIDDEN inline TAttivita_application & app() { return (TAttivita_application &) main_app();} bool TAttivita_application::gest_res(TMask_field& f, KEY key) { TMask & msk = f.mask(); if (key == K_TAB && f.dirty() == 3) { msk.set( FLD_AT2_CODANGRDS_ANAGR_RAGSOC , "" ) ; msk.set( FLD_AT2_ANAGR_DEP_IND , "" ) ; msk.set( FLD_AT2_ANAGR_DEP_CIV , "" ) ; msk.set( FLD_AT2_ANAGR_DEP_CAP , "" ) ; msk.set( FLD_AT2_DEP_ANAGR_COMUNI_DESCR , "" ) ; msk.set( FLD_AT2_DEP_ANAGR_COMUNI_PROV , "" ) ; } if (f.to_check(key)) { TString16 cod(msk.get(LST_AT2_TIPOADS)); cod << "|" << msk.get(FLD_AT2_CODANGRDS); const TRectype & anag = cache().get(LF_ANAG, cod); if (anag.empty()) return FALSE; TString cod_com = anag.get(N_CODCOMRF); TArray comarr(2), f1(2), f2(2), f3(2); msk.set( FLD_AT2_CODANGRDS_ANAGR_RAGSOC , anag.get(N_RAGSOC) ) ; comarr.add(cod_com); cod_com = anag.get(N_CODCOMRES); comarr.add(cod_com); cod_com = N_INDRF; f1.add(cod_com); cod_com = N_CIVRF; f2.add(cod_com); cod_com = N_CAPRF; f3.add(cod_com); cod_com = N_INDRES; f1.add(cod_com); cod_com = N_CIVRES; f2.add(cod_com); cod_com = N_CAPRES; f3.add(cod_com); for (int i = 0; i < comarr.items(); i++) { cod_com = (TString&) comarr[i]; if ( cod_com.not_empty() ) { cod = "|"; cod << cod_com; const TRectype & comune = cache().get(LF_COMUNI, cod); if (!comune.empty()) { msk.set( FLD_AT2_ANAGR_DEP_IND , (const char*) anag.get((TString&) f1[i]) ) ; msk.set( FLD_AT2_ANAGR_DEP_CIV , (const char*) anag.get((TString&) f2[i]) ) ; msk.set( FLD_AT2_ANAGR_DEP_CAP , (const char*) anag.get((TString&) f3[i]) ) ; msk.set( FLD_AT2_DEP_ANAGR_COMUNI_DESCR , (const char*) comune.get(N_DENCOM) ) ; msk.set( FLD_AT2_DEP_ANAGR_COMUNI_PROV , (const char*) comune.get(N_PROV) ) ; break; } } } } return TRUE; } HIDDEN bool clear_cap(TMask_field& f, KEY key) { if (!f.mask().query_mode() && key == K_TAB) { TMask& msk = f.mask() ; const TString16 val(f.get()); if (val.empty()) msk.set(FLD_AT2_CAPCS, ""); } return TRUE; } bool TAttivita_application::user_create() { open_files(LF_ATTIV, LF_ANAG, LF_NDITTE, LF_COMUNI, 0) ; _rel = new TRelation(LF_ATTIV) ; _msk = new TMask("ba4500a") ; _msk->set_handler(FLD_AT2_CODANGRDS, gest_res); _msk->set_handler(FLD_AT2_COMCS, clear_cap); set_search_field(FLD_AT1_CODATTH); return TRUE; } void TAttivita_application::init_query_mode(TMask& m) { m.show(FLD_AT1_CODATTH); m.hide(FLD_AT1_CODATT); set_search_field(FLD_AT1_CODATTH); } void TAttivita_application::init_query_insert_mode(TMask& m) { m.show(FLD_AT1_CODATT); m.hide(FLD_AT1_CODATTH); set_search_field(FLD_AT1_CODATT); } bool TAttivita_application::user_destroy() { delete _msk; delete _rel; return TRUE; } int TAttivita_application::read(TMask& m) { const int err = TRelation_application::read(m); if (err == NOERR) { m.field(FLD_AT2_CODANGRDS).set_focusdirty(); gest_res(m.field(FLD_AT2_CODANGRDS), K_TAB); } return err; } int ba4500(int argc, char* argv[]) { TAttivita_application a; a.run(argc, argv, TR("Anagrafica Attivita'")); return 0; }