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 <mailbox.h>
|
||||||
#include <progind.h>
|
#include <progind.h>
|
||||||
#include <sheet.h>
|
#include <sheet.h>
|
||||||
|
#include <msksheet.h>
|
||||||
#include <urldefid.h>
|
#include <urldefid.h>
|
||||||
#include <relapp.h>
|
#include <relapp.h>
|
||||||
#include <utility.h>
|
#include <utility.h>
|
||||||
@ -703,6 +704,16 @@ bool TRelation_application::save(bool check_dirty)
|
|||||||
int TRelation_application::read(TMask& m)
|
int TRelation_application::read(TMask& m)
|
||||||
{
|
{
|
||||||
const TRelation &r = *get_relation();
|
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);
|
m.autoload(r);
|
||||||
return NOERR;
|
return NOERR;
|
||||||
}
|
}
|
||||||
@ -710,19 +721,45 @@ int TRelation_application::read(TMask& m)
|
|||||||
|
|
||||||
int TRelation_application::write(const TMask& m)
|
int TRelation_application::write(const TMask& m)
|
||||||
{
|
{
|
||||||
|
int err;
|
||||||
|
|
||||||
TRelation &r = *get_relation();
|
TRelation &r = *get_relation();
|
||||||
m.autosave(r);
|
m.autosave(r);
|
||||||
|
// write relation and all independent sheets
|
||||||
r.write();
|
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 TRelation_application::rewrite(const TMask& m)
|
||||||
{
|
{
|
||||||
|
int err;
|
||||||
|
|
||||||
TRelation& r = *get_relation();
|
TRelation& r = *get_relation();
|
||||||
m.autosave(r);
|
m.autosave(r);
|
||||||
|
// rewrite relation and all independent sheets
|
||||||
r.rewrite();
|
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
|
// @doc INTERNAL
|
||||||
@ -758,7 +795,17 @@ bool TRelation_application::relation_remove()
|
|||||||
|
|
||||||
bool TRelation_application::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;
|
return err == NOERR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -197,14 +197,11 @@ protected:
|
|||||||
// @cmember Impone il campo da utilizzare col bottone Ricerca
|
// @cmember Impone il campo da utilizzare col bottone Ricerca
|
||||||
void set_search_field(short id)
|
void set_search_field(short id)
|
||||||
{ _search_id = id;}
|
{ _search_id = id;}
|
||||||
|
|
||||||
bool autodeleting() const { return _autodelete; }
|
bool autodeleting() const { return _autodelete; }
|
||||||
|
|
||||||
bool parse_command_line();
|
bool parse_command_line();
|
||||||
void ini2query_mask();
|
void ini2query_mask();
|
||||||
void ini2insert_mask();
|
void ini2insert_mask();
|
||||||
void edit_mask2ini();
|
void edit_mask2ini();
|
||||||
|
|
||||||
virtual void ini2mask(TConfig& ini, TMask& m, bool query);
|
virtual void ini2mask(TConfig& ini, TMask& m, bool query);
|
||||||
virtual void mask2ini(TMask& m, TConfig& ini);
|
virtual void mask2ini(TMask& m, TConfig& ini);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user