campo-sirio/include/tabapp.cpp

139 lines
2.7 KiB
C++
Raw Normal View History

#include <execp.h>
#include <tabapp.h>
#include <tabutil.h>
// @cmember Costruttore
TTable_application::TTable_application()
: _msk(NULL), _rel(NULL)
{ }
// @cmember Distruttore
TTable_application::~TTable_application()
{ }
// @cmember Indica se la futura <mf TTable_application::get_mask> ritornera' una maschera diversa
// dalla corrente.
bool TTable_application::changing_mask(int mode)
{ return FALSE; }
// @cmember Richiede la maschera da usare
TMask* TTable_application::get_mask(int mode)
{
CHECK(_msk, "Null mask");
return _msk;
}
// @cmember Ritorna la relazione da modificare
TRelation* TTable_application::get_relation() const
{
CHECK(_rel, "Null relation");
return _rel;
}
void TTable_application::print()
{
TString16 cmd;
cmd << "ba3 -1 " << get_tabname();
TExternal_app stampa(cmd);
stampa.run();
}
void TTable_application::init_query_mode(TMask& m)
{
m.enable(-GR_MODIFY_PROTECTED);
m.enable(-GR_RECORD_PROTECTED);
}
void TTable_application::init_modify_mode(TMask& m)
{
m.disable(-GR_MODIFY_PROTECTED);
const bool enable = !(_rel->curr().get_bool(FPC));
m.enable(-GR_RECORD_PROTECTED,enable);
}
bool TTable_application::protected_record(TRectype& rec)
{
return rec.get_bool(FPC);
}
TString& TTable_application::get_mask_name(TString& t) const
{
CHECK(_rel,"Can't use a NULL relation to retrieve table module");
TTable& tab = (TTable&) _rel->lfile();
TString16 m = _tabname;
if (m[0] == '%') m.ltrim(1);
t = tab.module();
t << "tb" << m;
t.upper();
TFilename n(t); n.ext("msk");
if (!n.exist())
t.overwrite("ba");
return t;
}
TMask* TTable_application::set_mask(TMask* m)
{
if (_msk != NULL)
delete _msk;
if (m != NULL)
{
// imposta la maschera come maschera della applicazione
_msk = m;
}
else
{
// alloca la maschera standard come maschera della applicazione
TFilename name;
get_mask_name(name);
_msk = new TMask(name);
}
return _msk;
}
bool TTable_application::user_create()
{
if (argc() < 3)
return FALSE;
_tabname = argv(2);
_tabname.upper();
_rel = new TRelation(_tabname);
set_mask();
const int campi = _msk->fields();
for (int i = 0; i < campi; i++)
{
const TMask_field& f = _msk->fld(i);
if (f.in_group(GR_SEARCH))
{
set_search_field(f.dlg());
break;
}
}
TFilename rpt;
get_mask_name(rpt);
rpt.ext("rpt");
if (rpt.exist())
enable_menu_item(M_FILE_PRINT);
TString title;
_msk->get_caption(title);
set_title(title);
return TRUE;
}
bool TTable_application::user_destroy()
{
if (_msk) delete _msk;
if (_rel) delete _rel;
return TRUE;
}