campo-sirio/mg/mg0200.cpp
alex 3005fcd67a Patch level : 2.1 048
Files correlati     : mg0.exe mg1.exe mg3.exe mg4.exe
Ricompilazione Demo : [ ]
Commento            :
Bug  0000134

Implementare la gestione multilingua


git-svn-id: svn://10.65.10.50/trunk@12084 c028cbd2-c16b-5b4b-a496-9718f37d4682
2004-05-18 10:44:57 +00:00

116 lines
2.8 KiB
C++
Executable File

#include <applicat.h>
#include <form.h>
#include <mask.h>
#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;
}