#include #include #include #include #include #include #include #include #include "mglib.h" #include "mg0200.h" class TStampa_tabmag : public TApplication { TCodice_livelli * _cod_liv; TMask * _mask; TForm * _form; void set_print(TString & tabname); protected: virtual bool create(); virtual bool destroy(); virtual bool menu(MENU_TAG); static bool hnd_livinizio(TMask_field &, KEY); // handler static bool hnd_livfine(TMask_field &, KEY); // handler public: // @cmember Disabilita la verifica del modulo in chiave virtual bool check_autorization() const {return FALSE;} const TCodice_livelli & liv_cod() {return *_cod_liv;} }; bool TStampa_tabmag::hnd_livinizio(TMask_field &f, KEY k) { if (f.empty()) { f.set("1"); } return TRUE; } bool TStampa_tabmag::hnd_livfine(TMask_field &f, KEY k) { const TCodice_livelli &codliv = ((TStampa_tabmag &)main_app()).liv_cod(); if (f.empty()) { f.set(codliv.last_level()); } if (f.focusdirty()) { TMask & m=f.mask(); const bool enab=(m.get(F_INIZIO1)==f.get() && m.get_bool(F_DETTAGLIO)); m.enable(F_INIZIO2,enab ); m.enable(F_FINE2,enab ); } return TRUE; } void TStampa_tabmag::set_print(TString & tabname) { const short begin=_cod_liv->code_start(_mask->get_int(F_INIZIO1)), end= begin+_cod_liv->code_length(_mask->get_int(F_INIZIO1))-1; TString filter; TRectype from_rec(LF_TAB),to_rec(LF_TAB); from_rec.put("COD",tabname); from_rec.put("CODTAB",_mask->get(F_INIZIO1)); to_rec.put("COD",tabname); to_rec.put("CODTAB",_mask->get(F_FINE1)); if (tabname=="FCA" || tabname=="FCG") { if (*_mask->get(F_INIZIO2)) filter << "500@->CODTAB[" << begin << "," << end << "]>=" << '"' <<_mask->get(F_INIZIO2) << '"' ; if (*_mask->get(F_FINE2)) { if (filter.not_empty()) filter << "&&"; filter << "500@->CODTAB[" << begin << "," << end << "]<=" << '"' << _mask->get(F_FINE2) << '"' ; } _form->find_field('B',odd_page,"GRUPPI").show(_mask->get_bool(F_DETTAGLIO)); } _form->cursor()->setregion(from_rec,to_rec); if (filter.not_empty()) _form->cursor()->setfilter(filter); } bool TStampa_tabmag::create() { dispatch_e_menu(BAR_ITEM(1)); return TRUE; } bool TStampa_tabmag::menu(MENU_TAG) { TString16 maskname("bast"); TString16 formname("tab_"); TString16 tabname(argv(2)); tabname.upper(); maskname << tabname; formname << tabname; _mask = new TMask(maskname); _mask->set_handler(F_INIZIO1,hnd_livinizio); _mask->set_handler(F_FINE1,hnd_livfine); if (tabname=="FCA") _cod_liv = new TCodart_livelli(); else _cod_liv = new TCodgiac_livelli(); while ((_mask->run() == K_ENTER)) { _form = new TForm(formname); set_print(tabname); _form->print(); delete _form; } // while return FALSE; } bool TStampa_tabmag::destroy() { delete _mask; delete _cod_liv; return TRUE; } int mg0200(int argc, char* argv[]) { TStampa_tabmag a;// derivata da Application e con uso di form a.run(argc,argv,"Stampa tabelle di magazzino"); return 0; }