// 776500.cpp - Parametri di generazione - Maschera di immissione #include #include #include #include #include "776.h" #include "776500.h" #include "77lib.h" // derivazione della classe Tmask per reimplementare // la funzione membro can_be_closed() in modo da poter // avvertire l'utente in caso di pressione del tasto ALT+F4 class TMaskDerived : public TMask { public: // @cmember Controlla se la maschera puo' essere chiusa (TRUE se puo' esserlo) virtual bool can_be_closed() const; // @cmember Costruttore (crea la maschera leggendo la descrizione dal file .msk) TMaskDerived(const char* title) : TMask(title) {}; // @cmember Distruttore virtual ~TMaskDerived(){}; }; class TParametri_genera : public TApplication { char _liv; // Se stampa a livello di studio int _anno_dic; // Anno dichiarazione nei paramentri utente o studio TRelation* _rel; TString16 _section; TConfig* _cnf; int _risposta; bool init_print(); protected: virtual void on_config_change(); virtual bool create() ; virtual bool destroy(); virtual bool menu(MENU_TAG m); public: KEY registra(TMask& m, bool check_dirty); bool main_loop(); static bool tipo_handler(TMask_field& f, KEY k); // D = stampa ditta, S = stampa a livello di studio TParametri_genera(char livello='D') : _liv(toupper(livello)) {} }; HIDDEN TParametri_genera& app() { return (TParametri_genera&) main_app(); } // implementazione della funzione TMaskDerived::can_be_closed() // per segnalare all'utente l'interruzione del processo di generazione bool TMaskDerived::can_be_closed() const { bool ok = TRUE; if (is_running()) ok = yesno_box("Annullare la generazione dei versamenti?"); return ok; } void TParametri_genera::on_config_change() { TConfig conf(CONFIG_STUDIO); _anno_dic = (int)conf.get_long(ANNO_SEL, _section); } KEY TParametri_genera::registra(TMask& m, bool check_dirty) { KEY k = K_YES; if (check_dirty && m.dirty()) k = yesnocancel_box("Registrare le modifiche?"); if (k == K_YES) { m.autosave(*_rel); _rel->rewrite(); } return k; } bool TParametri_genera::main_loop() { long codditta; int i = 0; KEY tasto; TMaskDerived msk("776500a"); msk.set_handler(F_TIPOVERS, tipo_handler); msk.set_handler(F_LUOVERS, tipo_handler); msk.open_modal(); codditta = get_firm_770(); _rel->lfile().put("CODDITTA", codditta); _rel->read(); msk.autoload(*_rel); tasto = K_TAB; _risposta = 0; // loop di gestione maschera while (tasto != K_ESC && tasto != K_QUIT) { tasto = msk.run(); switch (tasto) { case K_ESC: if (registra(msk,TRUE) == K_ESC) tasto = K_TAB; _risposta = 1; break; case K_QUIT: if (yesno_box("Annullare la generazione dei versamenti?")) _risposta = 0; else tasto = K_TAB; break; case K_SAVE: registra(msk,FALSE); _risposta = 1; default: break; } } // endloop di gestione maschera msk.close_modal(); return FALSE; } bool TParametri_genera::create() { TApplication::create(); // Parametri configurazione _section = name(); _section.cut(2); _cnf = new TConfig(CONFIG_USER, _section); _rel = new TRelation (LF_BASE); dispatch_e_menu (BAR_ITEM_ID(1)); return TRUE; } bool TParametri_genera::destroy() { delete _rel; delete _cnf; TString appname; TString body = ""; if (_liv == 'D') appname = "771mod -3"; else appname = "774 -0"; body << _risposta; TMessage msg (appname,"",(const char*) body); TMailbox mb; mb.send(msg); return TApplication::destroy(); } bool TParametri_genera::menu(MENU_TAG m) { if (m == BAR_ITEM_ID(1)) return main_loop(); return FALSE; } bool TParametri_genera::tipo_handler(TMask_field& f, KEY k) { if (k == K_SPACE) { TString16 luogo = f.mask().get(F_LUOVERS); TString16 tipo = f.mask().get(F_TIPOVERS); if (tipo == "D") f.mask().show(-G_DISTINTA); if (luogo == "T") f.mask().hide(-G_SERIE); } return TRUE; } int ParametriGenera(int argc, char* argv[]) { TParametri_genera a(*argv[2]); a.run(argc, argv, "Parametri di generazione"); return 0; }