campo-sirio/ba/ba4500.cpp
alex 132452fd50 Patch level : Aga 2.0.349
Files correlati     :
Ricompilazione Demo : [ ]
Commento            :
Riportata la versione P@rtners 2.0 patch 349


git-svn-id: svn://10.65.10.50/trunk@10573 c028cbd2-c16b-5b4b-a496-9718f37d4682
2002-10-24 10:47:49 +00:00

163 lines
4.1 KiB
C++
Executable File

#include <recarray.h>
#include <relapp.h>
#include "ba4.h"
#include "ba4500.h"
class TAttivita_application : public TRelation_application
{
TMask* _msk;
TRelation* _rel;
bool user_create() ;
bool user_destroy() ;
virtual TMask* get_mask(int mode) { return _msk;}
virtual bool changing_mask(int mode) { return FALSE;}
virtual TRelation* get_relation() const { return _rel;}
virtual int read(TMask& m);
virtual void init_query_mode(TMask& m) ;
virtual void init_query_insert_mode(TMask& m) ;
static bool gest_res(TMask_field& f, KEY key);
public:
TAttivita_application() {}
virtual ~TAttivita_application() {}
};
HIDDEN inline TAttivita_application & app() { return (TAttivita_application &) main_app();}
bool TAttivita_application::gest_res(TMask_field& f, KEY key)
{
TMask & msk = f.mask();
if (key == K_TAB && f.dirty() == 3)
{
msk.set( FLD_AT2_CODANGRDS_ANAGR_RAGSOC , "" ) ;
msk.set( FLD_AT2_ANAGR_DEP_IND , "" ) ;
msk.set( FLD_AT2_ANAGR_DEP_CIV , "" ) ;
msk.set( FLD_AT2_ANAGR_DEP_CAP , "" ) ;
msk.set( FLD_AT2_DEP_ANAGR_COMUNI_DESCR , "" ) ;
msk.set( FLD_AT2_DEP_ANAGR_COMUNI_PROV , "" ) ;
}
if (f.to_check(key))
{
TString16 cod(msk.get(LST_AT2_TIPOADS));
cod << "|" << msk.get(FLD_AT2_CODANGRDS);
const TRectype & anag = cache().get(LF_ANAG, cod);
if (anag.empty())
return FALSE;
TString cod_com = anag.get(N_CODCOMRF);
TArray comarr(2), f1(2), f2(2), f3(2);
msk.set( FLD_AT2_CODANGRDS_ANAGR_RAGSOC , anag.get(N_RAGSOC) ) ;
comarr.add(cod_com);
cod_com = anag.get(N_CODCOMRES);
comarr.add(cod_com);
cod_com = N_INDRF;
f1.add(cod_com);
cod_com = N_CIVRF;
f2.add(cod_com);
cod_com = N_CAPRF;
f3.add(cod_com);
cod_com = N_INDRES;
f1.add(cod_com);
cod_com = N_CIVRES;
f2.add(cod_com);
cod_com = N_CAPRES;
f3.add(cod_com);
for (int i = 0; i < comarr.items(); i++)
{
cod_com = (TString&) comarr[i];
if ( cod_com.not_empty() )
{
cod = "|"; cod << cod_com;
const TRectype & comune = cache().get(LF_COMUNI, cod);
if (!comune.empty())
{
msk.set( FLD_AT2_ANAGR_DEP_IND , (const char*) anag.get((TString&) f1[i]) ) ;
msk.set( FLD_AT2_ANAGR_DEP_CIV , (const char*) anag.get((TString&) f2[i]) ) ;
msk.set( FLD_AT2_ANAGR_DEP_CAP , (const char*) anag.get((TString&) f3[i]) ) ;
msk.set( FLD_AT2_DEP_ANAGR_COMUNI_DESCR , (const char*) comune.get(N_DENCOM) ) ;
msk.set( FLD_AT2_DEP_ANAGR_COMUNI_PROV , (const char*) comune.get(N_PROV) ) ;
break;
}
}
}
}
return TRUE;
}
HIDDEN bool clear_cap(TMask_field& f, KEY key)
{
if (!f.mask().query_mode() && key == K_TAB)
{
TMask& msk = f.mask() ;
const TString16 val(f.get());
if (val.empty())
msk.set(FLD_AT2_CAPCS, "");
}
return TRUE;
}
bool TAttivita_application::user_create()
{
open_files(LF_ATTIV, LF_ANAG, LF_NDITTE, LF_COMUNI, 0) ;
_rel = new TRelation(LF_ATTIV) ;
_msk = new TMask("ba4500a") ;
_msk->set_handler(FLD_AT2_CODANGRDS, gest_res);
_msk->set_handler(FLD_AT2_COMCS, clear_cap);
set_search_field(FLD_AT1_CODATTH);
return TRUE;
}
void TAttivita_application::init_query_mode(TMask& m)
{
m.show(FLD_AT1_CODATTH);
m.hide(FLD_AT1_CODATT);
set_search_field(FLD_AT1_CODATTH);
}
void TAttivita_application::init_query_insert_mode(TMask& m)
{
m.show(FLD_AT1_CODATT);
m.hide(FLD_AT1_CODATTH);
set_search_field(FLD_AT1_CODATT);
}
bool TAttivita_application::user_destroy()
{
delete _msk;
delete _rel;
return TRUE;
}
int TAttivita_application::read(TMask& m)
{
const int err = TRelation_application::read(m);
if (err == NOERR)
{
m.field(FLD_AT2_CODANGRDS).set_focusdirty();
gest_res(m.field(FLD_AT2_CODANGRDS), K_TAB);
}
return err;
}
int ba4500(int argc, char* argv[])
{
TAttivita_application a;
a.run(argc, argv, TR("Anagrafica Attivita'"));
return 0;
}