Corretta check (utilizzato il modo corrente della maschera)

git-svn-id: svn://10.65.10.50/trunk@4488 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
alex 1997-06-02 10:12:05 +00:00
parent e6ff4aa8c2
commit 797062113f

View File

@ -1280,8 +1280,8 @@ bool TSpreadsheet::event_handler(XI_OBJ* itf, XI_EVENT *xiev)
if (rec < items())
str2mask(rec);
notify(rec, K_CTRL+K_DEL); // Notifica l'avvenuta cancellazione
set_dirty();
if (rec >= items())
set_dirty();
if (rec >= items())
rec = items() - 1;
if (rec >= 0)
select(rec, FALSE);
@ -2047,9 +2047,9 @@ KEY TSpreadsheet::edit(int n)
// Certified 100%
TSheet_field::TSheet_field(TMask* m)
: TLoadable_field(m), _append(TRUE),
_enable_autoload(FALSE),_sheetfile(NULL),_linee_rec(NULL),_external_record(FALSE),
_userput(NULL),_userget(NULL)
: TLoadable_field(m), _append(TRUE),
_enable_autoload(FALSE),_sheetfile(NULL),_linee_rec(NULL),_external_record(FALSE),
_userput(NULL),_userget(NULL)
{
}
@ -2065,10 +2065,10 @@ bool TSheet_field::is_kind_of(word cid) const
// Certified 100%
TSheet_field::~TSheet_field()
{
if (_sheetfile!=NULL)
delete _sheetfile;
if (_linee_rec!=NULL && !_external_record)
delete _linee_rec;
if (_sheetfile!=NULL)
delete _sheetfile;
if (_linee_rec!=NULL && !_external_record)
delete _linee_rec;
}
@ -2109,13 +2109,13 @@ void TSheet_field::parse_head(TScanner& scanner)
// Certified: ...under debug...
bool TSheet_field::parse_item(TScanner& scanner)
{
if (scanner.key() == "IT") // ITEM
if (scanner.key() == "IT") // ITEM
{
_ctl_data._park.add(scanner.string());
return TRUE;
}
if (scanner.key() == "FL") // FLAGS
if (scanner.key() == "FL") // FLAGS
{
_enable_autoload=scanner.string()=="A";
return TRUE;
@ -2132,21 +2132,21 @@ bool TSheet_field::parse_item(TScanner& scanner)
if (fexist(d.filename())) // Controlla l'esistenza del file
{
_sheetfile = new TLocalisamfile(logicnum);
TString s = scanner.pop();
TString s = scanner.pop();
// cerca l'indicazione del campo di numerazione
if (s == "KE")
{
s = scanner.pop();
_linee_rec= new TRecord_array(logicnum, s);// alloca i record
}
else
{
NFCHECK("Manca la definizione del campo di autonumerazione nel campo %d",
// cerca l'indicazione del campo di numerazione
if (s == "KE")
{
s = scanner.pop();
_linee_rec= new TRecord_array(logicnum, s);// alloca i record
}
else
{
NFCHECK("Manca la definizione del campo di autonumerazione nel campo %d",
(int)dlg());
}
}
}
}
}
return TRUE;
}
@ -2636,7 +2636,7 @@ void TSheet_field::check_row(int n)
const int max = m.fields();
TMaskmode mask_mode = (TMaskmode) m.mode();
m.set_mode(MODE_INS);
m.set_mode(mask().mode());
for (int i = max - 1; i >= 0; i--)
{
TMask_field & f = m.fld(i);
@ -2654,49 +2654,49 @@ void TSheet_field::check_row(int n)
// Certified: ...under debug..
void TSheet_field::set_lines_record(TRecord_array & r_a)
{
if (_linee_rec && !_external_record)
delete _linee_rec;
_linee_rec= & r_a;
_external_record=TRUE; // il record attuale è esterno...
if (_linee_rec && !_external_record)
delete _linee_rec;
_linee_rec= & r_a;
_external_record=TRUE; // il record attuale è esterno...
}
// Certified: ...under debug..
TRectype * TSheet_field::putkey(const TRelation& r)
{
if (_sheetfile) {
// *******
// costruisce la chiave per il record array
_sheetfile->zero();
_file_k_names.restart();
_file_k_ids.restart();
TString dbfieldname;
while ((dbfieldname=_file_k_names.get())!="") {
TMask_field & f= mask().field(atoi(_file_k_ids.get()));
((TLoadable_field&)f).autoload(r);
_sheetfile->put(dbfieldname, f.get());
}
return &_sheetfile->curr();
}
return NULL;
// *******
// costruisce la chiave per il record array
_sheetfile->zero();
_file_k_names.restart();
_file_k_ids.restart();
TString dbfieldname;
while ((dbfieldname=_file_k_names.get())!="") {
TMask_field & f= mask().field(atoi(_file_k_ids.get()));
((TLoadable_field&)f).autoload(r);
_sheetfile->put(dbfieldname, f.get());
}
return &_sheetfile->curr();
}
return NULL;
}
// Certified: ...under debug..
bool TSheet_field::autoload_line(int i,TRectype & rec)
{
TToken_string &row= this->row(i-1);
TToken_string &row= this->row(i-1);
row = "";
// riempie le colonne dello sheet i cui campi hanno attributo "FIELD"
for (int f=FIRST_FIELD; f<=_last_column_id; f++) {
TFieldref const *dbfield=sheet_mask().field(f).field();
if (dbfield) {
row.add(dbfield->read(rec),cid2index(f));
}
// completa l'operazione con le funzioni definite dall'utente
TFieldref const *dbfield=sheet_mask().field(f).field();
if (dbfield) {
row.add(dbfield->read(rec),cid2index(f));
}
// completa l'operazione con le funzioni definite dall'utente
}
if (_userget)
_userget(*this,i);
check_row(i-1);
if (_userget)
_userget(*this,i);
check_row(i-1);
return TRUE;
}
@ -2704,14 +2704,14 @@ bool TSheet_field::autoload_line(int i,TRectype & rec)
bool TSheet_field::autosave_line(int i,TRectype & rec)
{
for (int f=FIRST_FIELD; f<=_last_column_id; f++) {
TFieldref const *dbfield=sheet_mask().field(f).field();
if (dbfield)
dbfield->write(cell(i-1,cid2index(f)),rec);
TFieldref const *dbfield=sheet_mask().field(f).field();
if (dbfield)
dbfield->write(cell(i-1,cid2index(f)),rec);
}
// completa l'operazione con le funzioni definite dall'utente
if (_userput)
_userput(*this,i);
return FALSE;
// completa l'operazione con le funzioni definite dall'utente
if (_userput)
_userput(*this,i);
return FALSE;
}
// Certified: ...under debug..
@ -2719,18 +2719,18 @@ bool TSheet_field::autoload(const TRelation& rel)
{
if (_enable_autoload)
{
CHECK(_linee_rec !=NULL, "Iu ev forgotten tu declare de Record array for de scit");
CHECK(_linee_rec !=NULL, "Iu ev forgotten tu declare de Record array for de scit");
// *******
// trasferisce le linee dal record array allo sheet
destroy(); // cancella lo sheet
const int last_line = _linee_rec->last_row();
for (int i= 1; i <= last_line; i++)
{
autoload_line(i,_linee_rec->row(i, TRUE));
autoload_line(i,_linee_rec->row(i, TRUE));
}
return(0);
}
}
return _enable_autoload;
}
@ -2739,30 +2739,30 @@ bool TSheet_field::autosave(TRelation& rel)
{
if (_enable_autoload)
{
CHECK(_linee_rec !=NULL, "Iu ev forgotten tu declare de Record array for de scit");
_linee_rec->destroy_rows();
if (_sheetfile)
{
// trasferisce dal file locale
if (mask().insert_mode()) {
// rinumera la chiave
_file_k_names.restart();
_file_k_ids.restart();
TString dbfieldname;
while ((dbfieldname=_file_k_names.get())!="") {
TMask_field & f= mask().field(atoi(_file_k_ids.get()));
_linee_rec->renum_key(dbfieldname, f.get());
}
}
}
CHECK(_linee_rec !=NULL, "Iu ev forgotten tu declare de Record array for de scit");
_linee_rec->destroy_rows();
if (_sheetfile)
{
// trasferisce dal file locale
if (mask().insert_mode()) {
// rinumera la chiave
_file_k_names.restart();
_file_k_ids.restart();
TString dbfieldname;
while ((dbfieldname=_file_k_names.get())!="") {
TMask_field & f= mask().field(atoi(_file_k_ids.get()));
_linee_rec->renum_key(dbfieldname, f.get());
}
}
}
// *******
// trasferisce le linee dallo sheet al record array
for (int i= 1; i <= items(); i++)
{
{
autosave_line(i,_linee_rec->row(i, TRUE));
}
}
return _enable_autoload;
}
}
return _enable_autoload;
}