Corrette descrizioni delle relazioni

Corretta gestion forms
Cambiato carattere matilde (~) delle picture in cappello di pinocchio (^)


git-svn-id: svn://10.65.10.50/trunk@1416 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 1995-05-30 16:01:38 +00:00
parent 065406728e
commit a88c72ee56
6 changed files with 85 additions and 66 deletions

View File

@ -203,16 +203,15 @@ void TDir::get (int nfile, TReclock lock, TDirtype dirtype, TDirop op)
} }
void TDir::put (int nfile, TDirtype dirtype, TDirop op) void TDir::put (int nfile, TDirtype dirtype, TDirop op)
{ {
int _whichdir = (dirtype == _nordir ? NORDIR : COMDIR); CHECKD(nfile > 0, "Bad file number ", nfile);
const int whichdir = (dirtype == _nordir ? NORDIR : COMDIR);
if (nfile <= 0)
fatal_box ("Bad file number %d", nfile);
if (op == _nordirop) if (op == _nordirop)
CCloseFile (nfile, _dir, _whichdir); CCloseFile (nfile, _dir, whichdir);
else else
CPutFile (nfile, _dir, _whichdir); CPutFile (nfile, _dir, whichdir);
} }
void TDir::zero () void TDir::zero ()
@ -235,7 +234,6 @@ TTrec::TTrec ()
{ {
_rec = new RecDes; _rec = new RecDes;
// if (_rec == NULL) fatal_box ("Can't allocate record description");
zero (); zero ();
_num = -1; _num = -1;
} }
@ -345,10 +343,8 @@ const char *TTrec ::keydef (int key) const
#ifndef FOXPRO #ifndef FOXPRO
bool TDir::is_active () const bool TDir::is_active () const
{ {
int module = (int) flags(); const int module = abs((int)flags());
if (module < 0) module = -module;
return main_app().has_module(module, CHK_DONGLE); return main_app().has_module(module, CHK_DONGLE);
} }

View File

@ -60,13 +60,14 @@ HIDDEN pagetype char2page(char c)
HIDDEN void put_fieldref(const TFieldref& fr, TMask_field& f) HIDDEN void put_fieldref(const TFieldref& fr, TMask_field& f)
{ {
TRelation_description& rd = form().rel_desc(); TRelation_description& rd = form().rel_desc();
rd.set_cur_file(fr.file());
TString80 desc; desc << fr; TString80 desc; desc << fr;
f.set(desc); f.set(desc);
TMask& m = f.mask(); TMask& m = f.mask();
const short id = f.dlg(); // Campo contenente il TFieldref const short id = f.dlg(); // Campo contenente il TFieldref
rd.set_cur_file(fr.file());
m.set(id+1, rd.file_desc()); m.set(id+1, rd.file_desc());
m.set(id+3, rd.get_field_description(fr.name())); m.set(id+3, rd.get_field_description(fr.name()));
m.set(id+5, (fr.from() > 0 || fr.to() > 0) ? fr.from()+1 : 0); m.set(id+5, (fr.from() > 0 || fr.to() > 0) ? fr.from()+1 : 0);
@ -246,12 +247,12 @@ class TForm_item : public TObject
TPrint_section* _section; TPrint_section* _section;
TForm_flags _flag; TForm_flags _flag;
TBit_array _group; TBit_array _group;
TString_array _message;
protected: protected:
short _id, _x, _y, _width, _height; short _id, _x, _y, _width, _height;
TString _prompt; TString _prompt;
TString _desc; TString _desc;
TString_array _message;
virtual void print_on(ostream& out) const; virtual void print_on(ostream& out) const;
virtual void print_body(ostream& out) const; virtual void print_body(ostream& out) const;
@ -390,7 +391,7 @@ bool TForm_item::parse_item(TScanner& scanner)
} }
if (scanner.key() == "KE") if (scanner.key() == "KE")
{ {
_desc = scanner.string(); _desc = scanner.string();
return TRUE; return TRUE;
} }
@ -673,7 +674,9 @@ bool TForm_item::edit(TMask& m)
if (!m.insert_mode()) if (!m.insert_mode())
print_on(m); print_on(m);
m.enable_page(1, form().edit_level() > 1); const bool godmode = form().edit_level() > 1;
m.enable_page(1, godmode);
m.enable(-7, godmode);
const bool dirty = m.run() == K_ENTER && m.dirty(); const bool dirty = m.run() == K_ENTER && m.dirty();
if (dirty) if (dirty)
@ -889,6 +892,15 @@ void TForm_string::print_on(TMask& m)
put_fieldref(field(i), m.field(i == 0 ? F_FIELDREF1 : F_FIELDREF2)); put_fieldref(field(i), m.field(i == 0 ? F_FIELDREF1 : F_FIELDREF2));
m.set(F_PICTURE, _picture); m.set(F_PICTURE, _picture);
TSheet_field& s = (TSheet_field&)m.field(F_ITEMS);
s.reset();
if (_message.items() > 0)
{
TToken_string& row = s.row(0);
row = " | ";
row.add(message(0));
}
} }
void TForm_string::read_from(const TMask& m) void TForm_string::read_from(const TMask& m)
@ -912,6 +924,13 @@ void TForm_string::read_from(const TMask& m)
else else
_field.destroy(i); _field.destroy(i);
} }
TSheet_field& f = (TSheet_field&)m.field(F_ITEMS);
TToken_string& msg = f.row(0);
if (msg.empty_items())
_message.destroy(0);
else
_message.add(msg.get(2), 0);
} }
bool TForm_string::set(const char* s) bool TForm_string::set(const char* s)
@ -1197,7 +1216,7 @@ void TForm_list::print_on(TMask& m)
{ {
TForm_string::print_on(m); TForm_string::print_on(m);
TSheet_field& s = (TSheet_field&)m.field(F_ITEMS); TSheet_field& s = (TSheet_field&)m.field(F_ITEMS);
s.reset();
_codes.restart(); _values.restart(); _codes.restart(); _values.restart();
for (int i = 0; i < _codes.items(); i++) for (int i = 0; i < _codes.items(); i++)
{ {
@ -1206,7 +1225,7 @@ void TForm_list::print_on(TMask& m)
row.add(_values.get()); row.add(_values.get());
row.add(message(i)); row.add(message(i));
} }
s.force_update(); // s.force_update();
} }
void TForm_list::read_from(const TMask& m) void TForm_list::read_from(const TMask& m)

View File

@ -409,12 +409,12 @@ char *real ::string (const char *picture)
for (int i = f.len () - 1; i >= 0 && j >= 0; i--) for (int i = f.len () - 1; i >= 0 && j >= 0; i--)
{ {
char &z = f[i]; char &z = f[i];
if (strchr ("#@~", z)) if (strchr ("#@^", z))
{ {
char c = v[j--]; char c = v[j--];
if (j >= 0 && v[j] == '.') if (j >= 0 && v[j] == '.')
j--; j--;
if (z == '~') if (z == '^')
c = ' '; c = ' ';
else else
{ {
@ -435,7 +435,7 @@ char *real ::string (const char *picture)
switch (f[i]) switch (f[i])
{ {
case '#': case '#':
case '~': case '^':
case '.': case '.':
f[i] = ' '; f[i] = ' ';
break; break;

View File

@ -1,4 +1,4 @@
// $Id: relation.cpp,v 1.42 1995-05-29 10:24:58 guy Exp $ // $Id: relation.cpp,v 1.43 1995-05-30 16:01:34 guy Exp $
// relation.cpp // relation.cpp
// fv 12/8/93 // fv 12/8/93
// relation class for isam files // relation class for isam files
@ -1557,45 +1557,42 @@ void TRelation_description::read_rel()
TToken_string& tt = (TToken_string&)_files[i]; TToken_string& tt = (TToken_string&)_files[i];
TFilename descfname; descfname << DESCDIR << "/d"; TFilename descfname; descfname << DESCDIR << "/d";
const char* tn = tt.get(0); const char* tn = tt.get(0); // Codice del file o tabella
int which_file = atoi(tn); // Non spostare questa riga (tn puo' cambiare!)
if (which_file == 0)
which_file = TTable::name2log(tn); // Numero logico del file
if (tn[0] == '%' || tn[0] == '$') if (tn[0] == '%' || tn[0] == '$')
descfname << (tn+1); descfname << (tn+1);
else else
descfname << tn; descfname << tn;
descfname << ".des"; descfname << ".des";
int which_file = atoi(tn); TConfig conf(descfname, DESCPAR);
if (which_file == 0) // new record descriptor for _fields array
which_file = TTable::name2log(tn); TString_array* rdesc = new TString_array;
if (fexist(descfname)) TTrec trec; trec.get(which_file);
{ TToken_string ttmp(64);
TConfig conf(descfname, DESCPAR);
// new record descriptor for _fields array for (int f = 0; f < trec.fields(); f++)
TString_array* rdesc = new TString_array; {
ttmp = trec.fielddef(f);
TTrec trec; trec.get(which_file); const TString16 name(ttmp.get(0));
TToken_string ttmp(64); if (!name.blank())
{
for (int f = 0; f < trec.fields(); f++) TString80 dfld(conf.get(name, NULL, -1, "Missing description"));
{ if (!dfld.blank() && dfld[0] != '#')
ttmp = trec.fielddef(f); {
TString16 name = ttmp.get(0); ttmp.add(dfld,4);
// contiene: nome campo, tipo, lunghezza, decimali, descrizione
if (!name.blank()) rdesc->add(ttmp);
{
TString80 dfld(conf.get(name));
if (!dfld.blank() && dfld[0] != '#')
{
ttmp.add(dfld,4);
// contiene: nome campo, tipo, lunghezza, decimali, descrizione
rdesc->add(ttmp);
}
} }
} }
if (rdesc->items() > 0) }
_fields.add(rdesc);
} _fields.add(rdesc, i);
} }
} }
@ -1612,7 +1609,12 @@ void TRelation_description::print_on(ostream& out) const
for (int i = 0; i < _files.items(); i++) for (int i = 0; i < _files.items(); i++)
{ {
TToken_string& r = ((TRelation_description*)this)->_files.row(i); TToken_string& r = ((TRelation_description*)this)->_files.row(i);
out << " " << r.get(0) << "->* "; TString16 cod(r.get(4));
if (atoi(cod) == 0)
cod = r.get(0);
else
cod << '@';
out << " " << cod << "->* ";
out << "\"" << r.get(1) << "\"\n"; out << "\"" << r.get(1) << "\"\n";
} }
} }
@ -1629,15 +1631,18 @@ bool TRelation_description::choose_file(int file)
{ {
TToken_string& tf = _files.row(i); TToken_string& tf = _files.row(i);
tt = tf.get(4); tt = tf.get(4);
if (tt.blank())
int num = atoi(tt);
if (num == 0)
{ {
tt = tf.get(0); tt = tf.get(0);
if (sel == 0 && file > 0 && atoi(tt) == file) num = atoi(tt);
if (sel == 0 && file > 0 && num == file)
sel = i; sel = i;
} }
else else
{ {
if (sel == 0 && file < 0 && atoi(tt) == -file) if (sel == 0 && file < 0 && num == -file)
sel = i; sel = i;
tt << '@'; tt << '@';
} }
@ -1788,22 +1793,21 @@ const char* TRelation_description::get_field_description(const char* field)
{ {
TToken_string& tt = fld.row(i); TToken_string& tt = fld.row(i);
if (strcmp(tt.get(0),field) == 0) if (strcmp(tt.get(0),field) == 0)
return tt.get(1); return tt.get(4);
} }
return ""; return "";
} }
TRelation_description::TRelation_description(TRelation& r) : TRelation_description::TRelation_description(TRelation& r)
_rel(&r), _menu(FALSE), _cur_file(0), _cur_field(0), : _rel(&r), _menu(FALSE), _cur_file(0), _cur_field(0),
_cfile(80), _cfield(80) _cfile(80), _cfield(80)
{ {
read_rel(); read_rel();
if (_files.items() > 0) if (_files.items() > 0)
{ {
_cfile = _files.row(0); _cfile = _files.row(0);
_cfield = ((TString_array&)_fields[0]).row(0); _cfield = "";
} }
} }

View File

@ -1,4 +1,4 @@
/* $Id: relation.h,v 1.18 1995-05-29 10:25:02 guy Exp $ */ /* $Id: relation.h,v 1.19 1995-05-30 16:01:36 guy Exp $ */
// join.h // join.h
// fv 12/8/93 // fv 12/8/93
// join class for isam files // join class for isam files
@ -273,7 +273,7 @@ public:
int file() const { return _fileid; } // ritorna il file int file() const { return _fileid; } // ritorna il file
void set_file(int f); void set_file(int f);
const char* name() const { return (const char*) _name; } // ritorna il nome del campo const TString& name() const { return _name; } // ritorna il nome del campo
void set_name(const char* n) { _name = n; } void set_name(const char* n) { _name = n; }
void set_from(int f) { if (f > 0) f--; else f = 0; _from = f; } void set_from(int f) { if (f > 0) f--; else f = 0; _from = f; }
void set_to(int t) { _to = t; } void set_to(int t) { _to = t; }

View File

@ -592,7 +592,7 @@ TString& TString::left_just(
// @mfunc Formatta una stringa usando il formato dato da <p pic> // @mfunc Formatta una stringa usando il formato dato da <p pic>
TString& TString::picture( TString& TString::picture(
const char* pic, // @parm Formato dell stringa const char* pic, // @parm Formato della stringa
const char* s) // @parm Stringa da formattare const char* s) // @parm Stringa da formattare
{ {
if (pic == NULL || *pic == '\0') if (pic == NULL || *pic == '\0')
@ -607,7 +607,7 @@ TString& TString::picture(
const char k = pic[i]; const char k = pic[i];
if (k == '#') _str[i] = (l >= 0) ? s[l--] : ' '; if (k == '#') _str[i] = (l >= 0) ? s[l--] : ' ';
else if (k == '@') _str[i] = (l >= 0) ? s[l--] : '0'; else if (k == '@') _str[i] = (l >= 0) ? s[l--] : '0';
else if (k == '~') { _str[i] = ' '; l--; } else if (k == '^') { _str[i] = ' '; l--; }
} }
return *this; return *this;