Aggiunta la gestione automatica dell'autoload/autosave per i sheetfield
git-svn-id: svn://10.65.10.50/trunk@4386 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
5aa55da39e
commit
e9fc719dca
@ -1,6 +1,7 @@
|
||||
#include <mailbox.h>
|
||||
#include <progind.h>
|
||||
#include <sheet.h>
|
||||
#include <msksheet.h>
|
||||
#include <urldefid.h>
|
||||
#include <relapp.h>
|
||||
#include <utility.h>
|
||||
@ -703,6 +704,16 @@ bool TRelation_application::save(bool check_dirty)
|
||||
int TRelation_application::read(TMask& m)
|
||||
{
|
||||
const TRelation &r = *get_relation();
|
||||
const int max = m.fields();
|
||||
for (int i = 0; i < max; i++)
|
||||
{
|
||||
if (m.fld(i).is_sheet()) {
|
||||
TSheet_field& f = (TSheet_field& )m.fld(i);
|
||||
if (f.record() && !f.external_record()) {
|
||||
f.record()->read(*f.putkey(r));
|
||||
}
|
||||
}
|
||||
}
|
||||
m.autoload(r);
|
||||
return NOERR;
|
||||
}
|
||||
@ -710,19 +721,45 @@ int TRelation_application::read(TMask& m)
|
||||
|
||||
int TRelation_application::write(const TMask& m)
|
||||
{
|
||||
int err;
|
||||
|
||||
TRelation &r = *get_relation();
|
||||
m.autosave(r);
|
||||
// write relation and all independent sheets
|
||||
r.write();
|
||||
return r.status();
|
||||
err=r.status();
|
||||
const int max = m.fields();
|
||||
for (int i = 0; i < max; i++)
|
||||
{
|
||||
if (m.fld(i).is_sheet()) {
|
||||
TSheet_field& f = (TSheet_field& )m.fld(i);
|
||||
if (f.record() && !f.external_record())
|
||||
err|=f.record()->write(FALSE);
|
||||
}
|
||||
}
|
||||
return err;
|
||||
}
|
||||
|
||||
|
||||
int TRelation_application::rewrite(const TMask& m)
|
||||
{
|
||||
int err;
|
||||
|
||||
TRelation& r = *get_relation();
|
||||
m.autosave(r);
|
||||
// rewrite relation and all independent sheets
|
||||
r.rewrite();
|
||||
return r.status();
|
||||
err=r.status();
|
||||
const int max = m.fields();
|
||||
for (int i = 0; i < max; i++)
|
||||
{
|
||||
if (m.fld(i).is_sheet()) {
|
||||
TSheet_field& f = (TSheet_field& )m.fld(i);
|
||||
if (f.record()&& !f.external_record())
|
||||
err|=f.record()->write(TRUE);
|
||||
}
|
||||
}
|
||||
return err;
|
||||
}
|
||||
|
||||
// @doc INTERNAL
|
||||
@ -758,7 +795,17 @@ bool TRelation_application::relation_remove()
|
||||
|
||||
bool TRelation_application::remove()
|
||||
{
|
||||
const int err = get_relation()->remove();
|
||||
TMask &m=*_mask;
|
||||
int err = get_relation()->remove();
|
||||
const int max = m.fields();
|
||||
for (int i = 0; i < max; i++)
|
||||
{
|
||||
if (m.fld(i).is_sheet()) {
|
||||
TSheet_field& f = (TSheet_field& )m.fld(i);
|
||||
if (f.record()&& !f.external_record())
|
||||
err|=f.record()->remove();
|
||||
}
|
||||
}
|
||||
return err == NOERR;
|
||||
}
|
||||
|
||||
|
@ -197,14 +197,11 @@ protected:
|
||||
// @cmember Impone il campo da utilizzare col bottone Ricerca
|
||||
void set_search_field(short id)
|
||||
{ _search_id = id;}
|
||||
|
||||
bool autodeleting() const { return _autodelete; }
|
||||
|
||||
bool parse_command_line();
|
||||
void ini2query_mask();
|
||||
void ini2insert_mask();
|
||||
void edit_mask2ini();
|
||||
|
||||
virtual void ini2mask(TConfig& ini, TMask& m, bool query);
|
||||
virtual void mask2ini(TMask& m, TConfig& ini);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user