Correzione errori:
MI3346: aggiunta la set_compulsory_specials() alla fine della TForm::reread() MI3347: implementati i metodi TForm_item::dup(), TForm_item::make_new_item() TForm_item::copy_to_form_item(). Implementate anche le dup() per le classi derivate da TForm_item. Corretto il metodo TPrint_section::copy() git-svn-id: svn://10.65.10.50/trunk@2747 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
cfb72fba44
commit
fb2df3ca73
120
include/form.cpp
120
include/form.cpp
@ -328,6 +328,47 @@ TForm_item::TForm_item(TPrint_section* section)
|
||||
{}
|
||||
|
||||
|
||||
TForm_item* TForm_item::make_new_item() const
|
||||
{
|
||||
return new TForm_item(_section);
|
||||
}
|
||||
|
||||
TForm_item* TForm_item::copy_to_form_item() const
|
||||
{
|
||||
TForm_item* fi = make_new_item();
|
||||
|
||||
fi->_flag = _flag; fi->_group = _group;
|
||||
// come copiarlo facendo una cosa orrenda...
|
||||
fi->_special.destroy();
|
||||
specials().restart();
|
||||
int items = special_items();
|
||||
for (int k = 0; k < items; k++)
|
||||
{
|
||||
THash_object* ho = specials().get_hashobj();
|
||||
fi->_special.add(ho->key(),ho->obj());
|
||||
}
|
||||
// fi->_special = _special; sarebbe utile avere un "operator =" per i TAssoc_array
|
||||
|
||||
fi->_temp = _temp; fi->_id = _id;
|
||||
fi->_x = _x; fi->_y = _y;
|
||||
fi->_width = _width; fi->_height = _height;
|
||||
fi->_effective_height = _effective_height;
|
||||
fi->_ofs = _ofs; fi->_prompt = _prompt;
|
||||
fi->_desc = _desc; fi->_col_head = _col_head;
|
||||
// Anche qui... copia uno alla volta
|
||||
items = _message.items();
|
||||
for (k = 0; k < items; k++)
|
||||
fi->_message.add(_message.row(k),k);
|
||||
// fi->_message = _message; sarebbe utile avere un "operator =" per i TString_array
|
||||
return fi;
|
||||
}
|
||||
|
||||
TObject* TForm_item::dup() const
|
||||
{
|
||||
TForm_item * fi = copy_to_form_item();
|
||||
return fi;
|
||||
}
|
||||
|
||||
bool TForm_item::parse_head(TScanner& scanner)
|
||||
{
|
||||
_id = scanner.integer();
|
||||
@ -954,9 +995,9 @@ class TForm_subsection : public TForm_item
|
||||
|
||||
protected:
|
||||
virtual void print_on(ostream& out) const;
|
||||
|
||||
virtual TForm_item* make_new_item() const;
|
||||
public:
|
||||
|
||||
virtual TObject* dup() const;
|
||||
virtual bool parse(TScanner& s);
|
||||
virtual bool update();
|
||||
virtual bool edit(TMask& m);
|
||||
@ -982,6 +1023,19 @@ TForm_subsection::TForm_subsection(TPrint_section* s, const char* nm) :
|
||||
TForm_item(s), _ssec(&(s->form()), s->section_type(), s->page_type(), TRUE), _file_id(-1), _name(nm)
|
||||
{}
|
||||
|
||||
TForm_item* TForm_subsection::make_new_item() const
|
||||
{
|
||||
return (TForm_item*) new TForm_subsection(_section);
|
||||
}
|
||||
|
||||
TObject * TForm_subsection::dup() const
|
||||
{
|
||||
TForm_subsection* fs = (TForm_subsection*) copy_to_form_item();
|
||||
fs->_ssec = _ssec;
|
||||
fs->_name = _name;
|
||||
fs->_file_id = _file_id;
|
||||
return fs;
|
||||
}
|
||||
|
||||
bool TForm_subsection::parse(TScanner& s)
|
||||
{
|
||||
@ -1126,6 +1180,7 @@ class TForm_string : public TForm_item
|
||||
TToken_string _memo;
|
||||
|
||||
protected:
|
||||
virtual TForm_item* make_new_item() const;
|
||||
virtual const char* class_name() const { return "STRINGA"; }
|
||||
virtual void print_body(ostream& out);
|
||||
|
||||
@ -1152,6 +1207,7 @@ protected:
|
||||
virtual void put_paragraph(const char* s);
|
||||
|
||||
public:
|
||||
virtual TObject* dup() const;
|
||||
virtual const int fields() { return _field.items();}
|
||||
virtual const TString& picture() const { return _picture; }
|
||||
virtual void set_picture(const char* p) { _picture = p; }
|
||||
@ -1165,6 +1221,21 @@ TForm_string::TForm_string(TPrint_section* section)
|
||||
: TForm_item(section), _memo("",'\n')
|
||||
{}
|
||||
|
||||
TForm_item* TForm_string::make_new_item() const
|
||||
{
|
||||
return (TForm_item*) new TForm_string(_section);
|
||||
}
|
||||
|
||||
TObject * TForm_string::dup() const
|
||||
{
|
||||
TForm_string* fs = (TForm_string*) copy_to_form_item();
|
||||
fs->_str = _str;
|
||||
fs->_picture = _picture;
|
||||
fs->_field = _field;
|
||||
fs->_memo = _memo;
|
||||
return fs;
|
||||
}
|
||||
|
||||
bool TForm_string::edit(TMask& m)
|
||||
{
|
||||
const bool godmode = form().edit_level() > 1;
|
||||
@ -1422,7 +1493,7 @@ class TForm_number : public TForm_string
|
||||
{
|
||||
void apply_format(real& r, TString& s) const;
|
||||
|
||||
protected: // TForm_string
|
||||
protected: // TForm_string
|
||||
virtual const char* class_name() const { return "NUMERO"; }
|
||||
virtual bool parse_head(TScanner& scanner);
|
||||
virtual bool update();
|
||||
@ -1442,7 +1513,6 @@ public:
|
||||
virtual ~TForm_number() {}
|
||||
};
|
||||
|
||||
|
||||
bool TForm_number::parse_head(TScanner& scanner)
|
||||
{
|
||||
return TForm_item::parse_head(scanner);
|
||||
@ -1569,6 +1639,7 @@ class TForm_date : public TForm_string
|
||||
TString16 _format;
|
||||
|
||||
protected:
|
||||
virtual TForm_item* make_new_item() const;
|
||||
virtual const char* class_name() const { return "DATA"; }
|
||||
virtual bool read();
|
||||
virtual bool set(const char*);
|
||||
@ -1584,6 +1655,7 @@ protected:
|
||||
|
||||
public:
|
||||
|
||||
virtual TObject* dup() const;
|
||||
void set_format(const char* f) { _format = f; }
|
||||
virtual bool edit(TMask& m);
|
||||
virtual const char* example() const;
|
||||
@ -1596,6 +1668,18 @@ TForm_date::TForm_date(TPrint_section* section)
|
||||
: TForm_string(section), _format("1444-")
|
||||
{}
|
||||
|
||||
TForm_item* TForm_date::make_new_item() const
|
||||
{
|
||||
return (TForm_item*) new TForm_date(_section);
|
||||
}
|
||||
|
||||
TObject * TForm_date::dup() const
|
||||
{
|
||||
TForm_date* fd = (TForm_date*) copy_to_form_item();
|
||||
fd->_format = _format;
|
||||
return fd;
|
||||
}
|
||||
|
||||
bool TForm_date::read()
|
||||
{
|
||||
bool ok = TForm_string::read();
|
||||
@ -1708,6 +1792,7 @@ class TForm_list : public TForm_string
|
||||
TToken_string _values;
|
||||
|
||||
protected:
|
||||
virtual TForm_item* make_new_item() const;
|
||||
virtual const char* class_name() const { return "LISTA"; }
|
||||
virtual bool parse_item(TScanner& scanner);
|
||||
virtual void print_on(TMask& m);
|
||||
@ -1716,6 +1801,7 @@ protected:
|
||||
virtual bool update();
|
||||
|
||||
public:
|
||||
virtual TObject* dup() const;
|
||||
TForm_list(TPrint_section* section);
|
||||
virtual ~TForm_list() {}
|
||||
};
|
||||
@ -1724,6 +1810,19 @@ TForm_list::TForm_list(TPrint_section* section)
|
||||
: TForm_string(section)
|
||||
{}
|
||||
|
||||
TForm_item* TForm_list::make_new_item() const
|
||||
{
|
||||
return (TForm_item*) new TForm_list(_section);
|
||||
}
|
||||
|
||||
TObject * TForm_list::dup() const
|
||||
{
|
||||
TForm_list* fl = (TForm_list*) copy_to_form_item();
|
||||
fl->_codes = _codes;
|
||||
fl->_values = _values;
|
||||
return fl;
|
||||
}
|
||||
|
||||
bool TForm_list::parse_item(TScanner& scanner)
|
||||
{
|
||||
if (scanner.key() == "IT")
|
||||
@ -2060,8 +2159,12 @@ void TPrint_section::add_field(TForm_item* f)
|
||||
|
||||
const TPrint_section& TPrint_section::copy(const TPrint_section& ps)
|
||||
{
|
||||
_item = ps._item;
|
||||
_height = ps._height;
|
||||
_msk = ps._msk; _height = ps._height; _ofspc = ps._ofspc;
|
||||
_ofsvr = ps._ofsvr; _nfld = ps._nfld; _dirty = ps._dirty;
|
||||
_columnwise = ps._columnwise; _temp = ps._temp; _form = ps._form;
|
||||
_sec_type = ps._sec_type; _page_type = ps._page_type; _subsection = ps._subsection;
|
||||
_item = ps._item; _repeat_count = ps._repeat_count;
|
||||
for (int i = 0; i < MAXCOLUMNS; i++) _tab[i] = ps._tab[i];
|
||||
return ps;
|
||||
}
|
||||
|
||||
@ -2567,7 +2670,7 @@ bool TPrint_section::detail_field_notify (TSheet_field& s, int r, KEY k)
|
||||
// @rdesc Ritorna TRUE se e' stata modificata effettivamente
|
||||
bool TPrint_section::edit(
|
||||
const char* title) // @parm Titolo della maschera di edit
|
||||
{
|
||||
{
|
||||
const bool is_ba_editor = TString(_form->section_mask()).left(2) == "ba";
|
||||
bool nstd_dirty = FALSE;
|
||||
bool font_found = FALSE;
|
||||
@ -3157,7 +3260,8 @@ bool TForm::reread(
|
||||
TForm_item& item = find_field(sec, p, id);
|
||||
item.read_from(rprof.curr());
|
||||
}
|
||||
}
|
||||
}
|
||||
set_compulsory_specials();
|
||||
}
|
||||
}
|
||||
return ok;
|
||||
|
Loading…
x
Reference in New Issue
Block a user