Corretta gestione riferimenti da rata a riga partita

git-svn-id: svn://10.65.10.50/trunk@1897 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 1995-09-26 15:07:16 +00:00
parent 6addcbeceb
commit a887382158
3 changed files with 26 additions and 7 deletions

View File

@ -1141,14 +1141,13 @@ else
oldiva = imposta; oldiva = imposta;
oldposiva = newposiva; oldposiva = newposiva;
if (r == 0) // Se cambio la prima riga ... TMask& m = app().curr_mask();
app().add_cgs_tot(app().curr_mask()); // ... ricalcola conti if (r == 0) // Se cambio la prima riga ...
app().add_cgs_tot(m); // ... ricalcola conti
TMask& m = app().curr_mask();
if (app().is_saldaconto() && m.page_enabled(2)) if (app().is_saldaconto() && m.page_enabled(2))
app().set_scadenze(m); app().set_scadenze(m);
} }
return TRUE; return TRUE;
} }

View File

@ -25,7 +25,6 @@ TTree_rectype::TTree_rectype(const TTree_rectype& t)
{ {
} }
TObject* TTree_rectype::dup() const TObject* TTree_rectype::dup() const
{ {
TTree_rectype* r = new TTree_rectype(*this); TTree_rectype* r = new TTree_rectype(*this);
@ -217,6 +216,12 @@ TRiga_scadenze::TRiga_scadenze(const TRiga_scadenze& s)
: TTree_rectype(s), _riga(s._riga) : TTree_rectype(s), _riga(s._riga)
{} {}
TObject* TRiga_scadenze::dup() const
{
TRiga_scadenze* r = new TRiga_scadenze(*this);
return r;
}
TPartita& TRiga_scadenze::partita() const TPartita& TRiga_scadenze::partita() const
{ {
return riga().partita(); return riga().partita();
@ -457,7 +462,18 @@ TRiga_partite::TRiga_partite(TPartita* game)
TRiga_partite::TRiga_partite(const TRiga_partite& r) TRiga_partite::TRiga_partite(const TRiga_partite& r)
: TTree_rectype(r), _partita(r._partita) : TTree_rectype(r), _partita(r._partita)
{} {
update_rigaptr();
}
void TRiga_partite::update_rigaptr()
{
for (int i = rate(); i >= 0; i--)
{
TRiga_scadenze& scad = i == 0 ? (TRiga_scadenze&)rows_array().key() : rata(i);
scad._riga = this;
}
}
TRiga_scadenze& TRiga_partite::new_row(int r) TRiga_scadenze& TRiga_partite::new_row(int r)
{ {
@ -491,6 +507,7 @@ int TRiga_partite::read(TBaseisamfile& f, word op)
{ {
TRiga_scadenze* s = new TRiga_scadenze(this); TRiga_scadenze* s = new TRiga_scadenze(this);
err = rows_array().read(s); // Deve esistere almento una scadenza err = rows_array().read(s); // Deve esistere almento una scadenza
update_rigaptr();
} }
else else
rows_array().destroy_rows(); rows_array().destroy_rows();

View File

@ -122,7 +122,7 @@ protected:
bool elimina_pagamento(int p); bool elimina_pagamento(int p);
protected: // TRecord_tree protected: // TRecord_tree
virtual TObject* dup() const { return new TRiga_scadenze(*this); } virtual TObject* dup() const;
public: public:
bool chiusa(bool update = FALSE) const; bool chiusa(bool update = FALSE) const;
@ -147,6 +147,9 @@ class TRiga_partite : public TTree_rectype
friend class TRiga_scadenze; friend class TRiga_scadenze;
TPartita* _partita; TPartita* _partita;
protected:
void update_rigaptr();
public: // TTree_rectype public: // TTree_rectype
virtual TObject* dup() const { return new TRiga_partite(*this); } virtual TObject* dup() const { return new TRiga_partite(*this); }
virtual int read(TBaseisamfile& f, word op); virtual int read(TBaseisamfile& f, word op);