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:
augusto 1997-05-23 14:08:53 +00:00
parent 5aa55da39e
commit e9fc719dca
2 changed files with 50 additions and 6 deletions

View File

@ -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;
}

View File

@ -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);