// 776500.cpp - Parametri di generazione - Maschera di immissione #include #include #include #include #include #include #include #include #include #include #include "776.h" #include "776500.h" #include "77lib.h" 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(); // 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(); } void TParametri_genera::on_config_change() { TConfig conf(_liv == 'S' ? CONFIG_USER : 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, codditta_prec; int i = 0; KEY tasto; TMask msk("776500a"); msk.open_modal(); // da dichiarazioni selezionate if (_liv == 'S') { codditta_prec = get_firm_770(); tasto = K_TAB; // loop di scansione dichiarazioni selezionate while ((codditta = _cnf->get_long(DITTE_SEL, _section, i++)) != 0L && tasto != K_QUIT) { set_firm_770(codditta); _rel->lfile().put("CODDITTA", codditta); _rel->read(); msk.autoload(*_rel); tasto = K_TAB; // 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; break; case K_QUIT: if (registra(msk,TRUE) == K_ESC) tasto = K_TAB; break; case K_SAVE: registra(msk,FALSE); default: break; } } // endloop di gestione maschera } // endloop di scansione dichiarazioni selezionate set_firm_770(codditta_prec); } // dalla manutenzione dichiarazione else { codditta = get_firm_770(); _rel->lfile().put("CODDITTA", codditta); _rel->read(); msk.autoload(*_rel); tasto = K_TAB; // 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 (registra(msk,TRUE) == K_ESC) tasto = K_TAB; _risposta = 0; 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(1)); return TRUE; } bool TParametri_genera::destroy() { delete _rel; delete _cnf; if (_liv == 'D') { TString appname = "771mod -3"; TString body = ""; 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(1)) return main_loop(); return FALSE; } int ParametriGenera(int argc, char* argv[]) { TParametri_genera a(*argv[2]); a.run(argc, argv, "Parametri di generazione"); return 0; }