Patch level :4.0 nopatch

Files correlati     :
Ricompilazione Demo : [ ]
Commento            :aggiunte le tabelle multirel in tabapp, aggiunte 2 macro sulle maschere (riporto dalla 3.0)


git-svn-id: svn://10.65.10.50/trunk@14829 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
luca 2007-01-31 16:16:58 +00:00
parent 6cb38e5a76
commit 52b3f753ab
3 changed files with 151 additions and 0 deletions

View File

@ -486,4 +486,13 @@ public:
~TYesnoallnone_box();
};
#define FOR_EACH_MASK_FIELD(__m, __i, __f) \
TMask_field* __f = NULL; \
for (int __i = 0; __i < __m.fields() && (__f=&__m.fld(__i))!=NULL; __i++)
#define FOR_EACH_MASK_SHEET(__m, __i, __s) \
TSheet_field* __s = NULL; \
for (int __i = 0; __i < __m.fields() && (__s=(TSheet_field*)&__m.fld(__i))!= NULL; __i++) if (__m.fld(__i).is_sheet())
#endif // __MASK_H

View File

@ -136,3 +136,95 @@ bool TTable_application::user_destroy()
return TRUE;
}
///////////////////////////////////////////////////
// Tabelle Multirel
///////////////////////////////////////////////////
// @cmember Indica se la futura <mf TMultirel_application::get_mask> ritornera' una maschera diversa
// dalla corrente.
bool TMultirel_application::changing_mask(int mode)
{ return false; }
// @cmember Richiede la maschera da usare
TMask* TMultirel_application::get_mask(int mode)
{
CHECK(_msk, "Null mask");
return _msk;
}
// @cmember Ritorna la relazione da modificare
TRelation* TMultirel_application::get_relation() const
{
CHECK(_rel, "Null relation");
return _rel;
}
void TMultirel_application::print()
{
TString16 tabname;
get_mask_name(tabname);
TString cmd;
cmd << "ba8 -4 "<< tabname;
TExternal_app stampa(cmd);
stampa.run();
}
void TMultirel_application::get_mask_name(TString& tabname) const
{
tabname = name().left(4);
tabname << _tabname;
}
bool TMultirel_application::user_create()
{
if (argc() < 3)
return false;
_tabname = argv(2);
_tabname.upper();
_rel = new TRelation(LF_MULTIREL);
//costruisce il nome della maschera interessata
//nome modulo + 'ts' + nome tabella
TString16 tabname;
get_mask_name(tabname);
_msk = new TMask(tabname);
FOR_EACH_MASK_FIELD((*_msk), i, f)
{
if (f->in_key(1))
{
set_search_field(f->dlg());
break;
}
}
TFilename rep = tabname;
rep.ext("rep");
if (rep.custom_path())
enable_menu_item(M_FILE_PRINT);
TString title;
_msk->get_caption(title);
set_title(title);
return true;
}
bool TMultirel_application::user_destroy()
{
if (_msk) delete _msk;
if (_rel) delete _rel;
return true;
}
// @cmember Costruttore
TMultirel_application::TMultirel_application()
: _msk(NULL), _rel(NULL)
{ }
// @cmember Distruttore
TMultirel_application::~TMultirel_application()
{ }

View File

@ -68,5 +68,55 @@ public:
virtual ~TTable_application();
};
///////////////////////////////////////////////////////////////
// Tabelle multirel
///////////////////////////////////////////////////////////////
// @class TMultirel_application | Classe per la definizione della <c TRelation_application> per le tabelle
//
// @base public | TRelation_application
class TMultirel_application : public TRelation_application
// @author:(INTERNAL) Vari
// @access:(INTERNAL) Private Member
{
// @cmember:(INTERNAL) Maschera corrente dell'applicazione
TMask* _msk;
// @cmember:(INTERNAL) Relazione corrente dell'applicazione
TRelation* _rel;
// @cmember:(INTERNAL) Nome della tabella da utilizzare
TString _tabname;
// @access Protected Member
protected:
virtual void get_mask_name(TString& tabname) const;
// @cmember Richiede la maschera da usare
virtual TMask* get_mask(int mode = MODE_QUERY);
// @cmember Indica se la futura <mf Tab_application::get_mask> ritornera' una maschera diversa
// dalla corrente.
virtual bool changing_mask(int mode);
// @cmember Ritorna la relazione da modificare
virtual TRelation* get_relation() const;
// @cmember Inizializzazione dei dati dell'utente
virtual bool user_create() ;
// @cmember Distruzione dei dati dell'utente
virtual bool user_destroy() ;
// @cmember Chiama il programma di stampa
virtual void print();
// @access Public Member
public:
// @cmember Ritorna il nome della tabella
const TString& get_tabname() const
{ return _tabname; }
// @cmember Costruttore
TMultirel_application();
// @cmember Distruttore
virtual ~TMultirel_application();
};
#endif