#include #include #include #include #include "abtbpdb.h" #include "abtbarb.h" class Tabanabil_application : public Tab_application { private: TMask* _msk; TString _tabname; public: bool user_create(); const char * extra_modules() const { return format("%d",CGAUT); } static bool giorno_handler(TMask_field& f, KEY k); static bool mese_handler (TMask_field& f, KEY k); static bool anni_handler (TMask_field& f, KEY k); Tabanabil_application() {} virtual ~Tabanabil_application() {} }; HIDDEN inline Tabanabil_application& app() {return (Tabanabil_application&) main_app();} bool Tabanabil_application::giorno_handler(TMask_field& f, KEY k) { if (k == K_TAB && f.mask().is_running()) { const int giorno = atoi(f.get()); if (giorno > 31) return f.warning_box(TR("Valore non valido per il giorno")); const int mese = (f.dlg() == F_GIORNO_INI ? f.mask().get_int(F_MESE_INI) : f.mask().get_int(F_MESE_FINE)); if (mese == 2) if (giorno > 29) return f.warning_box(TR("Valore non valido per il giorno")); if (mese == 11 || mese == 4 || mese == 6 || mese == 9) if (giorno > 30) return f.warning_box(TR("Valore non valido per il giorno")); } return TRUE; } bool Tabanabil_application::mese_handler(TMask_field& f, KEY k) { if (k == K_TAB && f.mask().is_running()) { const int mese = atoi(f.get()); if (mese < 1 || mese > 12) return f.warning_box(TR("Valore non valido per il mese")); const int giorno = (f.dlg() == F_MESE_INI ? f.mask().get_int(F_GIORNO_INI) : f.mask().get_int(F_GIORNO_FINE)); if (mese == 2) if (giorno > 28) return f.warning_box(TR("Valore non valido per il giorno")); if (mese == 11 || mese == 4 || mese == 6 || mese == 9) if (giorno > 30) return f.warning_box(TR("Valore non valido per il giorno")); } return TRUE; } bool Tabanabil_application::anni_handler(TMask_field& f, KEY k) { if (k == K_ENTER) { TMask & m=f.mask(); const TDate inizio(m.get_int(F_GIORNO_INI),m.get_int(F_MESE_INI),1993); if (inizio.empty()) return TRUE; const TDate fine(m.get_int(F_GIORNO_FINE),m.get_int(F_MESE_FINE),1993+m.get_int(F_NUM_ANNI)); if (fine.empty()) return TRUE; if (fine==inizio) return f.error_box(TR("Date uguali: specificare il numero di anni")); if (fineset_handler(F_GIORNO_INI, giorno_handler); _msk->set_handler(F_MESE_INI, mese_handler); _msk->set_handler(F_GIORNO_FINE, giorno_handler); _msk->set_handler(F_MESE_FINE, mese_handler); _msk->set_handler(F_NUM_ANNI, anni_handler); } if (_tabname == "%ARB") set_search_field(F_CODTAB_ESE); return TRUE; } int ab0100(int argc, char* argv[]) { Tabanabil_application a; a.run(argc,argv, TR("Tabelle")); return 0; }