#include #include #include #include "mglib.h" #include "mg0200.h" class TStampa_tabmag : public TSkeleton_application { TCodice_livelli * _cod_liv; TMask * _mask; TForm * _form; private: void set_print(const TString& tabname); protected: virtual void main_loop(); 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(const 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); } void TStampa_tabmag::main_loop() { 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 delete _mask; delete _cod_liv; } int mg0200(int argc, char* argv[]) { TStampa_tabmag a;// derivata da Application e con uso di form a.run(argc,argv,TR("Stampa tabelle di magazzino")); return 0; }