Patch level : xx.7.054
Files correlati : Ricompilazione Demo : [ ] Commento : Riportata la versione 1.7 patch 054 sul main trunk (II) git-svn-id: svn://10.65.10.50/trunk@9665 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
12d9315082
commit
5bf4cfa86f
@ -250,7 +250,8 @@ long XVT_CALLCONV1 TApplication::task_eh(WINDOW win, EVENT *ep)
|
|||||||
|
|
||||||
// Setta la caption della task window
|
// Setta la caption della task window
|
||||||
TString cap;
|
TString cap;
|
||||||
cap << _application->get_module_name() << " - " << prassi_spa();
|
TString firm;
|
||||||
|
cap << _application->get_module_name() << " - " << prassi_spa(firm);
|
||||||
TTemp_window tw(win);
|
TTemp_window tw(win);
|
||||||
tw.set_caption(cap);
|
tw.set_caption(cap);
|
||||||
|
|
||||||
|
@ -171,7 +171,7 @@ int TArchive::build_restore_list(
|
|||||||
int& mode,
|
int& mode,
|
||||||
long firm, // @parm Ditta di cui effettuare il salvataggio
|
long firm, // @parm Ditta di cui effettuare il salvataggio
|
||||||
char floppy, // @parm Floppy su cui effettuare il backup
|
char floppy, // @parm Floppy su cui effettuare il backup
|
||||||
TString_array& fl) const // @parm Nomi dei cartella da ripristinare
|
TString_array& fl) const // @parm Nomi dell cartelle da ripristinare
|
||||||
{
|
{
|
||||||
fl.destroy();
|
fl.destroy();
|
||||||
|
|
||||||
@ -942,10 +942,10 @@ bool TArchive::zip(
|
|||||||
return ok;
|
return ok;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TArchive::zip(long firm, char floppy, const char* desc)
|
bool TArchive::zip(int mode, long firm, char floppy, const char* desc)
|
||||||
{
|
{
|
||||||
TString_array fl;
|
TString_array fl;
|
||||||
const int num_ditte = build_backup_list(firm, fl);
|
const int num_ditte = build_backup_list(mode, firm, fl);
|
||||||
|
|
||||||
bool ok = TRUE;
|
bool ok = TRUE;
|
||||||
for (int f = 0; f < num_ditte; f++)
|
for (int f = 0; f < num_ditte; f++)
|
||||||
@ -1050,10 +1050,10 @@ bool TArchive::unzip(
|
|||||||
return ok;
|
return ok;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TArchive::unzip(long firm, char floppy, bool temp)
|
bool TArchive::unzip(int mode, long firm, char floppy, bool temp)
|
||||||
{
|
{
|
||||||
TString_array fl;
|
TString_array fl;
|
||||||
const int num_ditte = build_restore_list(firm, floppy, fl);
|
const int num_ditte = build_restore_list(mode, firm, floppy, fl);
|
||||||
|
|
||||||
bool ok = TRUE;
|
bool ok = TRUE;
|
||||||
for (int f = 0; f < num_ditte; f++)
|
for (int f = 0; f < num_ditte; f++)
|
||||||
@ -1071,9 +1071,9 @@ bool TArchive::backup(const char* dir, char floppy, const char* desc, bool)
|
|||||||
return zip(dir, floppy, desc);
|
return zip(dir, floppy, desc);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TArchive::backup(long firm, char floppy, const char* desc, bool)
|
bool TArchive::backup(int mode, long firm, char floppy, const char* desc, bool)
|
||||||
{
|
{
|
||||||
return zip(firm, floppy, desc);
|
return zip(mode, firm, floppy, desc);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TArchive::restore(const char* dir, char floppy, bool tmp, bool)
|
bool TArchive::restore(const char* dir, char floppy, bool tmp, bool)
|
||||||
@ -1081,9 +1081,9 @@ bool TArchive::restore(const char* dir, char floppy, bool tmp, bool)
|
|||||||
return unzip(dir, floppy, tmp);
|
return unzip(dir, floppy, tmp);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TArchive::restore(long firm, char floppy, bool tmp, bool)
|
bool TArchive::restore(int mode, long firm, char floppy, bool tmp, bool)
|
||||||
{
|
{
|
||||||
return unzip(firm, floppy, tmp);
|
return unzip(mode, firm, floppy, tmp);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -87,12 +87,12 @@ public:
|
|||||||
// @cmember Effettua il backup della directory
|
// @cmember Effettua il backup della directory
|
||||||
bool zip(const char* dir, char floppy, const char* desc);
|
bool zip(const char* dir, char floppy, const char* desc);
|
||||||
// @cmember Effettua il backup della ditta
|
// @cmember Effettua il backup della ditta
|
||||||
bool zip(long firm, char floppy, const char* desc);
|
bool zip(int mode, long firm, char floppy, const char* desc);
|
||||||
|
|
||||||
// @cmember Effettua il restore della directory
|
// @cmember Effettua il restore della directory
|
||||||
bool unzip(const char* dir, char floppy, bool temp);
|
bool unzip(const char* dir, char floppy, bool temp);
|
||||||
// @cmember Effettua il restore della ditta
|
// @cmember Effettua il restore della ditta
|
||||||
bool unzip(long firm, char floppy, bool temp);
|
bool unzip(int mode, long firm, char floppy, bool temp);
|
||||||
|
|
||||||
TArchive() { }
|
TArchive() { }
|
||||||
virtual ~TArchive() { }
|
virtual ~TArchive() { }
|
||||||
|
@ -2267,7 +2267,8 @@ int DB_recinfo(const char * filename, FileDes *d, RecDes *r, char* keys)
|
|||||||
if (data_file != NULL)
|
if (data_file != NULL)
|
||||||
{
|
{
|
||||||
field_info = d4field_info(data_file);
|
field_info = d4field_info(data_file);
|
||||||
index_file = d4index(data_file,(char*)filename);
|
// index_file = d4index(data_file,(char*)filename);
|
||||||
|
index_file = d4index(data_file, "");
|
||||||
if (index_file == NULL)
|
if (index_file == NULL)
|
||||||
fatal_box("Il file %s e' senza indici.",filename);
|
fatal_box("Il file %s e' senza indici.",filename);
|
||||||
tag_info = i4tag_info(index_file);
|
tag_info = i4tag_info(index_file);
|
||||||
|
@ -185,8 +185,8 @@ XVT_FNTID xvt_default_font(bool bold)
|
|||||||
CHARY = ascent + descent + 1;
|
CHARY = ascent + descent + 1;
|
||||||
BASEY = ascent;
|
BASEY = ascent;
|
||||||
|
|
||||||
if (CHARX > MAX_CHARX)
|
if (CHARX > COLX)
|
||||||
CHARX = MAX_CHARX;
|
CHARX = COLX;
|
||||||
|
|
||||||
if (CHARY > ROWY-2)
|
if (CHARY > ROWY-2)
|
||||||
CHARY = ROWY-2;
|
CHARY = ROWY-2;
|
||||||
@ -395,7 +395,7 @@ HIDDEN void xi_event_handler(XI_OBJ *itf, XI_EVENT *xiev);
|
|||||||
HIDDEN void init_fu_multiple(XI_OBJ* itf)
|
HIDDEN void init_fu_multiple(XI_OBJ* itf)
|
||||||
{
|
{
|
||||||
RCT max_rct; xvt_vobj_get_client_rect(TASK_WIN, &max_rct);
|
RCT max_rct; xvt_vobj_get_client_rect(TASK_WIN, &max_rct);
|
||||||
xi_pu_to_fu(itf, (PNT*)&max_rct, 2);
|
xi_pu_to_fu(itf, (XinPoint *) &max_rct, 2);
|
||||||
X_FU_MULTIPLE = max_rct.right / 80;
|
X_FU_MULTIPLE = max_rct.right / 80;
|
||||||
Y_FU_MULTIPLE = max_rct.bottom / 25;
|
Y_FU_MULTIPLE = max_rct.bottom / 25;
|
||||||
}
|
}
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
#include <real.h>
|
#include <real.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef __RECTYPES_H
|
#ifndef TRectype
|
||||||
class TRectype;
|
class TRectype;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
290
include/isam.cpp
290
include/isam.cpp
@ -393,6 +393,11 @@ HIDDEN bool rec_has_memo(const RecDes* rd)
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
HIDDEN bool lf_has_memo(int lffile)
|
||||||
|
{
|
||||||
|
return rec_has_memo(&prefix().get_recdes(lffile));
|
||||||
|
}
|
||||||
|
|
||||||
HIDDEN void browse_null(char *start, int nc)
|
HIDDEN void browse_null(char *start, int nc)
|
||||||
{
|
{
|
||||||
for (int i = nc - 1; i >= 0 ; i--) // Anche il primo byte(deletion flag) deve essere cambiato. nc comprende il primo byte
|
for (int i = nc - 1; i >= 0 ; i--) // Anche il primo byte(deletion flag) deve essere cambiato. nc comprende il primo byte
|
||||||
@ -459,84 +464,6 @@ HIDDEN const char * translate_key(const char* key) // Traduce l'espressione chia
|
|||||||
return t;
|
return t;
|
||||||
}
|
}
|
||||||
|
|
||||||
HIDDEN void getisfd(isfdptr & isfd, int logicnum)
|
|
||||||
{
|
|
||||||
CHECK(logicnum < EXTERNAL_FILE, "Incorrect use of getisfd() with external file definition");
|
|
||||||
isfd = new isdef ;
|
|
||||||
isfd->r = new RecDes ;
|
|
||||||
isfd->d = new FileDes ;
|
|
||||||
CGetFile(logicnum, isfd->d, _nolock, _nordir);
|
|
||||||
const TFixed_string name(isfd->d->SysName);
|
|
||||||
if (name.not_empty() && name[0] != '$')
|
|
||||||
isfd->ft = _comdir;
|
|
||||||
else
|
|
||||||
isfd->ft = _nordir;
|
|
||||||
COpenFile(logicnum, isfd->d, _nolock, isfd->ft);
|
|
||||||
CGetRec(logicnum, isfd->r, isfd->ft);
|
|
||||||
isfd->ln = logicnum;
|
|
||||||
}
|
|
||||||
|
|
||||||
HIDDEN void getisfd(isfdptr & isfd, const char* name)
|
|
||||||
{
|
|
||||||
// For External file definition only
|
|
||||||
TTrec rec;
|
|
||||||
int err;
|
|
||||||
char* cb_keys = new char[256*MaxKeys];
|
|
||||||
|
|
||||||
isfd = new isdef ;
|
|
||||||
isfd->r = new RecDes ;
|
|
||||||
isfd->d = new FileDes ;
|
|
||||||
isfd->ln = -1;
|
|
||||||
|
|
||||||
if (!fexist(name))
|
|
||||||
fatal_box("Il file %s non esiste.",(const char*)name);
|
|
||||||
TFilename n(name);
|
|
||||||
n.ext(""); // Remove extension
|
|
||||||
err = DB_recinfo(n,isfd->d,rec.rec(),cb_keys);
|
|
||||||
if (err == NOERR)
|
|
||||||
{
|
|
||||||
strncpy(isfd->d->SysName, name,40);
|
|
||||||
isfd->d->SysName[41] = '\0';
|
|
||||||
isfd->fhnd = 0;
|
|
||||||
isfd->RecNo = -1;
|
|
||||||
isfd->ft = 0;
|
|
||||||
isfd->knum = 0;
|
|
||||||
rec.rehash();
|
|
||||||
const int num_keys = rec.keys();
|
|
||||||
TToken_string keys(cb_keys,'$');
|
|
||||||
|
|
||||||
for (int i=0; i< num_keys; i++)
|
|
||||||
rec.update_keydef(i,translate_key(keys.get(i))); // Traduce l'espressione chiave di CodeBase
|
|
||||||
memcpy(isfd->r,rec.rec(),sizeof(RecDes));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (err == -60) // This because existance of file is checked before
|
|
||||||
fatal_box("File %s aperto in modo esclusivo da un'altra applicazione.",name);
|
|
||||||
else
|
|
||||||
fatal_box("Apertura file %s : errore n. %d ",name,err);
|
|
||||||
}
|
|
||||||
delete cb_keys;
|
|
||||||
}
|
|
||||||
|
|
||||||
HIDDEN void relisfd(isfdptr & isfd)
|
|
||||||
{
|
|
||||||
if (isfd->ln > 0 && isfd->fhnd >= 0)
|
|
||||||
{
|
|
||||||
TDir d;
|
|
||||||
d.get(isfd->ln, _lock, (TDirtype) isfd->ft, _sysdirop);
|
|
||||||
d.eod() = isfd->d->EOD;
|
|
||||||
d.eox() = isfd->d->EOX;
|
|
||||||
d.put(isfd->ln, (TDirtype) isfd->ft, _sysdirop);
|
|
||||||
}
|
|
||||||
delete isfd->d;
|
|
||||||
delete isfd->r;
|
|
||||||
delete isfd;
|
|
||||||
|
|
||||||
isfd = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
HIDDEN int __build_key(const RecDes *recd, int numkey, RecType recin, char *key, bool build_x_cb)
|
HIDDEN int __build_key(const RecDes *recd, int numkey, RecType recin, char *key, bool build_x_cb)
|
||||||
/* *recd; descrittore record */
|
/* *recd; descrittore record */
|
||||||
/* numkey; numero chiave */
|
/* numkey; numero chiave */
|
||||||
@ -774,7 +701,7 @@ TBaseisamfile::TBaseisamfile(int logicnum)
|
|||||||
_isam_handle = 0;
|
_isam_handle = 0;
|
||||||
_curr_key = 0;
|
_curr_key = 0;
|
||||||
_lasterr = NOERR;
|
_lasterr = NOERR;
|
||||||
_current = new TRectype(this);
|
_current = new TRectype(logicnum);
|
||||||
}
|
}
|
||||||
|
|
||||||
// @doc EXTERNAL
|
// @doc EXTERNAL
|
||||||
@ -782,27 +709,24 @@ TBaseisamfile::TBaseisamfile(int logicnum)
|
|||||||
// @mfunc Reperisce il tracciato dal file stesso.
|
// @mfunc Reperisce il tracciato dal file stesso.
|
||||||
//
|
//
|
||||||
TBaseisamfile::TBaseisamfile(
|
TBaseisamfile::TBaseisamfile(
|
||||||
const char* name, int mode, bool index) // @parm Indica il nome del file
|
const char* name, // @parm Indica il nome del file
|
||||||
|
const char* descname) // @parm Indica la descrizione del file
|
||||||
// @comm Esiste la possibilita' di codificare i valori di pathpref e prefix in <p name>
|
// @comm Esiste la possibilita' di codificare i valori di pathpref e prefix in <p name>
|
||||||
// % si riferisce ai dati comuni
|
// % si riferisce ai dati comuni
|
||||||
// $ si riferisce ai dati di ditta corrente
|
// $ si riferisce ai dati di ditta corrente
|
||||||
// # si riferisce al direttorio indicato da PATHPREF.INI
|
// # si riferisce al direttorio indicato da PATHPREF.INI
|
||||||
{
|
{
|
||||||
_lasterr = NOERR;
|
if (descname && *descname)
|
||||||
TFilename filename(name);
|
|
||||||
|
|
||||||
// Espande il nome!
|
|
||||||
const char c = filename[0];
|
|
||||||
if (c == '%' || c == '$')
|
|
||||||
filename = CAddPref(filename.get_buffer());
|
|
||||||
else
|
|
||||||
if (c == '#')
|
|
||||||
{
|
{
|
||||||
filename.ltrim(1);
|
TTrec r;
|
||||||
filename.format("%s/%s",__ptprf,(const char*)filename);
|
ifstream f(descname);
|
||||||
|
f >> r;
|
||||||
|
const int err=DB_build(name, r.rec()) ;
|
||||||
|
if (err != NOERR)
|
||||||
|
fatal_box("Non posso creare il file %s : errore n.ro %d", name, err);
|
||||||
}
|
}
|
||||||
_logicnum = LF_EXTERNAL;
|
_lasterr = NOERR;
|
||||||
_isam_handle = prefix().open_isamfile(_logicnum, filename, mode == _excllock, index);
|
_logicnum = -1; // LF_EXTERNAL qui
|
||||||
_current = new TRectype(this);
|
_current = new TRectype(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -942,7 +866,7 @@ int TBaseisamfile::_read(TRectype& rec, word op, word lockop)
|
|||||||
|
|
||||||
_lasterr = cisread(fhnd, getkey(), rec, op + lockop, _recno);
|
_lasterr = cisread(fhnd, getkey(), rec, op + lockop, _recno);
|
||||||
|
|
||||||
_recno = DB_recno(fhnd);
|
_recno = DB_recno(fhnd); // qui
|
||||||
if(rec.has_memo())
|
if(rec.has_memo())
|
||||||
rec.init_memo(_recno, _isam_handle);
|
rec.init_memo(_recno, _isam_handle);
|
||||||
|
|
||||||
@ -1235,15 +1159,16 @@ int TBaseisamfile::_open(
|
|||||||
_isam_handle = prefix().open_isamfile(_logicnum, filename, mode==_excllock, index);
|
_isam_handle = prefix().open_isamfile(_logicnum, filename, mode==_excllock, index);
|
||||||
if (_isam_handle > 0)
|
if (_isam_handle > 0)
|
||||||
{
|
{
|
||||||
const int dbfreclen = DB_reclen(filehnd()->fhnd);
|
TCodeb_handle cb_handle = prefix().get_handle(_isam_handle);
|
||||||
const int trcreclen = int(_isamfile->d->LenR);
|
const int dbfreclen = DB_reclen(cb_handle);
|
||||||
const TRecnotype n = DB_reccount(filehnd()->fhnd);
|
const int trcreclen = prefix().get_reclen(_logicnum);
|
||||||
|
const TRecnotype n = DB_reccount(cb_handle);
|
||||||
|
|
||||||
if (dbfreclen != trcreclen)
|
if (dbfreclen != trcreclen)
|
||||||
{
|
{
|
||||||
TString msg;
|
TString msg;
|
||||||
msg.format("Lunghezza record incoerente sul file %d (%s): file=%d trc=%d",
|
msg.format("Lunghezza record incoerente sul file %d (%s): file=%d trc=%d",
|
||||||
num(), (const char*)filename(), dbfreclen, trcreclen);
|
num(), (const char*)filename, dbfreclen, trcreclen);
|
||||||
if (n == 0)
|
if (n == 0)
|
||||||
{
|
{
|
||||||
msg << "\nSi consiglia di eliminare il file ed i suoi indici.";
|
msg << "\nSi consiglia di eliminare il file ed i suoi indici.";
|
||||||
@ -1252,8 +1177,10 @@ int TBaseisamfile::_open(
|
|||||||
else
|
else
|
||||||
fatal_box(msg);
|
fatal_box(msg);
|
||||||
}
|
}
|
||||||
if (filehnd()->r->NKeys <= 0)
|
if (prefix().get_recdes(_logicnum).NKeys <= 0) // qui
|
||||||
fatal_box("Il file %d (%s) e' senza indici", num(), (const char*)filename());
|
fatal_box("Il file %d (%s) e' senza indici",
|
||||||
|
num(),
|
||||||
|
(const char*)filename);
|
||||||
_recno = RECORD_NON_FISICO;
|
_recno = RECORD_NON_FISICO;
|
||||||
setkey(1);
|
setkey(1);
|
||||||
_lasterr = NOERR;
|
_lasterr = NOERR;
|
||||||
@ -1432,9 +1359,8 @@ TLocalisamfile::TLocalisamfile(
|
|||||||
// @rdesc Ritorna l'oggetto <c TLocalisamfile>
|
// @rdesc Ritorna l'oggetto <c TLocalisamfile>
|
||||||
TLocalisamfile::TLocalisamfile(
|
TLocalisamfile::TLocalisamfile(
|
||||||
const char* name, // @parm Nome del file esterno da aprire
|
const char* name, // @parm Nome del file esterno da aprire
|
||||||
int mode,
|
const char* descname) // @parm Indica la descrizione del file
|
||||||
bool index)
|
: TBaseisamfile(name, descname)
|
||||||
: TBaseisamfile(name, mode, index)
|
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1703,20 +1629,80 @@ int TIsamtempfile::close()
|
|||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
// TExternisamfile
|
// TExternisamfile
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
TExternisamfile::TExternisamfile(const char* name, int mode, bool index)
|
TExternisamfile::TExternisamfile(const char* name, bool exclusive, bool index)
|
||||||
: TLocalisamfile(name, mode, index)
|
: TLocalisamfile(name)
|
||||||
{
|
{
|
||||||
|
init(name, exclusive, index);
|
||||||
|
}
|
||||||
|
|
||||||
|
TExternisamfile::TExternisamfile(const char* name, const char* descname, bool exclusive, bool index)
|
||||||
|
: TLocalisamfile(name, descname)
|
||||||
|
{
|
||||||
|
init(name, exclusive, index);
|
||||||
}
|
}
|
||||||
|
|
||||||
TExternisamfile::~TExternisamfile()
|
TExternisamfile::~TExternisamfile()
|
||||||
{
|
{
|
||||||
_close();
|
close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TExternisamfile::init(const char* name, bool exclusive, bool index)
|
||||||
|
{
|
||||||
|
_name = name; // qui
|
||||||
|
_name.ext("dbf");
|
||||||
|
|
||||||
|
// Espande il nome!
|
||||||
|
const char c = _name[0];
|
||||||
|
if (c == '%' || c == '$')
|
||||||
|
_name = CAddPref(_name.get_buffer());
|
||||||
|
else
|
||||||
|
if (c == '#')
|
||||||
|
{
|
||||||
|
_name.ltrim(1);
|
||||||
|
_name.format("%s/%s",__ptprf,(const char*)_name);
|
||||||
|
}
|
||||||
|
open(exclusive, index);
|
||||||
|
}
|
||||||
|
|
||||||
|
int TExternisamfile::open(bool exclusive, bool index)
|
||||||
|
{
|
||||||
|
_logicnum = -1; //qui
|
||||||
|
_isam_handle = prefix().open_isamfile(_logicnum, _name, exclusive, index);
|
||||||
|
if (_isam_handle > 0)
|
||||||
|
{
|
||||||
|
if (prefix().get_recdes(_logicnum).NKeys <= 0)
|
||||||
|
fatal_box("Il file %d (%s) e' senza indici", num(), (const char*)filename());
|
||||||
|
_recno = RECORD_NON_FISICO;
|
||||||
|
setkey(1);
|
||||||
|
_lasterr = NOERR;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
TString e_msg;
|
||||||
|
_lasterr = get_error(_isam_handle);
|
||||||
|
if (_lasterr == -60)
|
||||||
|
{
|
||||||
|
if (!_name.exist())
|
||||||
|
e_msg.format("Il file %d(%s) non esiste, errore %d",num(),(const char*)_name,_lasterr);
|
||||||
|
else
|
||||||
|
e_msg.format("Il file %d(%s) e' aperto in modo esclusivo da un'altra applicazione",
|
||||||
|
num(), (const char*)_name);
|
||||||
|
}
|
||||||
|
if (e_msg.empty())
|
||||||
|
e_msg.format("Il file %d(%s) non puo' essere aperto, errore %d",num(),(const char*)_name,_lasterr);
|
||||||
|
fatal_box((const char*) e_msg);
|
||||||
|
}
|
||||||
|
return _lasterr;
|
||||||
|
}
|
||||||
|
|
||||||
|
int TExternisamfile::close()
|
||||||
|
{
|
||||||
|
return _close();
|
||||||
|
}
|
||||||
|
|
||||||
int TExternisamfile::zap()
|
int TExternisamfile::zap()
|
||||||
{
|
{
|
||||||
int err = DB_close(filehnd()->fhnd);
|
int err = prefix().close_isamfile(_isam_handle);
|
||||||
if (err == NOERR)
|
if (err == NOERR)
|
||||||
{
|
{
|
||||||
err = DB_packfile(TRUE, _name, 0);
|
err = DB_packfile(TRUE, _name, 0);
|
||||||
@ -1725,7 +1711,7 @@ int TExternisamfile::zap()
|
|||||||
TRecnotype peod;
|
TRecnotype peod;
|
||||||
err = DB_packindex(TRUE, _name, curr().rec_des(), &peod, FALSE);
|
err = DB_packindex(TRUE, _name, curr().rec_des(), &peod, FALSE);
|
||||||
}
|
}
|
||||||
filehnd()->fhnd = DB_open(_name, FALSE, TRUE);
|
_isam_handle = prefix().open_isamfile(_logicnum, _name);
|
||||||
}
|
}
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
@ -2659,31 +2645,19 @@ void TMemo_data::copy(const TMemo_data& m)
|
|||||||
void TRectype::init(int logicnum)
|
void TRectype::init(int logicnum)
|
||||||
{
|
{
|
||||||
_logicnum = logicnum;
|
_logicnum = logicnum;
|
||||||
|
CHECK(_logicnum > 0,"Impossibile costruire un record di un file esterno"); // qui
|
||||||
|
|
||||||
CHECK(_logicnum < EXTERNAL_FILE,"Impossibile costruire un record di un file esterno");
|
_length = prefix().get_reclen(logicnum);
|
||||||
|
|
||||||
if (openf[_logicnum - 1] != NULL)
|
|
||||||
{
|
|
||||||
_length = DB_reclen(openf[logicnum - 1]->fhnd);
|
|
||||||
has_memo_fld = rec_has_memo(rec_des());
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
TDir wdir;
|
|
||||||
wdir.get(_logicnum, _nolock, _nordir, _sysdirop);
|
|
||||||
if (wdir.is_com())
|
|
||||||
wdir.get(_logicnum, _nolock, _comdir, _sysdirop);
|
|
||||||
_length = wdir.len();
|
|
||||||
has_memo_fld = _length > 0 && lf_has_memo(_logicnum);
|
|
||||||
}
|
|
||||||
_rec = new char [_length];
|
_rec = new char [_length];
|
||||||
*_tab = '\0';
|
*_tab = '\0';
|
||||||
if (_length > 0)
|
if (_length > 0)
|
||||||
{
|
|
||||||
zero();
|
zero();
|
||||||
}
|
|
||||||
else
|
else
|
||||||
setempty(TRUE);
|
setempty(TRUE);
|
||||||
|
|
||||||
|
const bool has_memo_fld = _length > 0 && lf_has_memo(_logicnum);
|
||||||
|
|
||||||
if(has_memo_fld)
|
if(has_memo_fld)
|
||||||
init_memo(RECORD_NON_FISICO);
|
init_memo(RECORD_NON_FISICO);
|
||||||
}
|
}
|
||||||
@ -2692,74 +2666,29 @@ TRectype::TRectype(int logicnum)
|
|||||||
: _memo_data(NULL)
|
: _memo_data(NULL)
|
||||||
|
|
||||||
{
|
{
|
||||||
bool has_memo_fld = FALSE;
|
init(logicnum); //qui
|
||||||
|
|
||||||
_logicnum = logicnum;
|
|
||||||
if (openf[_logicnum - 1] != NULL)
|
|
||||||
{
|
|
||||||
_length = DB_reclen(openf[logicnum - 1]->fhnd);
|
|
||||||
has_memo_fld = rec_has_memo(rec_des());
|
|
||||||
*_tab = '\0';
|
|
||||||
if (_length > 0)
|
|
||||||
{
|
|
||||||
zero();
|
|
||||||
if (rec_has_memo(rec_des()))
|
|
||||||
init_memo(RECORD_NON_FISICO);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
setempty(TRUE);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
TRectype::TRectype(int logicnum)
|
|
||||||
: _memo_data(NULL), _memo_dirty(NULL)
|
|
||||||
|
|
||||||
{
|
|
||||||
_logicnum = logicnum;
|
|
||||||
_length = prefix().get_reclen(logicnum);
|
|
||||||
_rec = new char [_length];
|
|
||||||
*_tab = '\0';
|
|
||||||
if (_length > 0)
|
|
||||||
{
|
|
||||||
zero();
|
|
||||||
if (rec_has_memo(rec_des()))
|
|
||||||
init_memo(RECORD_NON_FISICO);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
setempty(TRUE);
|
|
||||||
}
|
|
||||||
|
|
||||||
TRectype::TRectype(const TBaseisamfile* i)
|
TRectype::TRectype(const TBaseisamfile* i)
|
||||||
: _memo_data(NULL)
|
: _memo_data(NULL)
|
||||||
{
|
{
|
||||||
_logicnum = i->num();
|
init(i->num());
|
||||||
_length = prefix().get_reclen(_logicnum);
|
|
||||||
_rec = new char [_length];
|
|
||||||
*_tab = '\0';
|
|
||||||
if (_length > 0)
|
|
||||||
{
|
|
||||||
zero();
|
|
||||||
if (rec_has_memo(rec_des()))
|
|
||||||
init_memo(RECORD_NON_FISICO);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
setempty(TRUE);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
TRectype::TRectype(const TRectype& r)
|
TRectype::TRectype(const TRectype& r)
|
||||||
: _logicnum(r._logicnum),
|
:
|
||||||
_memo_data(NULL)
|
_memo_data(NULL)
|
||||||
|
|
||||||
{
|
{
|
||||||
|
init(r._logicnum); //qui
|
||||||
if (r._memo_data)
|
if (r._memo_data)
|
||||||
{
|
{
|
||||||
init_memo(r._memo_data->recno(), r._memo_data->file());
|
init_memo(r._memo_data->recno(), r._memo_data->file());
|
||||||
*_memo_data = *r._memo_data;
|
*_memo_data = *r._memo_data;
|
||||||
}
|
}
|
||||||
_length = r.len();
|
|
||||||
_rec = new char [ _length ];
|
|
||||||
memcpy(_rec, r._rec, _length);
|
memcpy(_rec, r._rec, _length);
|
||||||
|
|
||||||
strcpy(_tab, r._tab);
|
strcpy(_tab, r._tab);
|
||||||
setempty(r.empty());
|
setempty(r.empty());
|
||||||
}
|
}
|
||||||
@ -2782,11 +2711,11 @@ void TRectype::unknown_field(const char* name) const
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void TRectype::write_memo(TIsam_handle file, const TRecnotype recno)
|
void TRectype::write_memo(TIsam_handle file, const TRecnotype recno) //qui
|
||||||
{
|
{
|
||||||
const RecDes *r = rec_des( );
|
const RecDes *r = rec_des( );
|
||||||
TIsam_handle orig = _memo_data->file();
|
TIsam_handle orig = _memo_data->file();
|
||||||
if (orig && (fhnd != orig || recno != _memo_data->recno()))
|
if (orig && (file != orig || recno != _memo_data->recno()))
|
||||||
{
|
{
|
||||||
TCodeb_handle cb_orig = prefix().get_handle(orig);
|
TCodeb_handle cb_orig = prefix().get_handle(orig);
|
||||||
DB_go(cb_orig, _memo_data->recno());
|
DB_go(cb_orig, _memo_data->recno());
|
||||||
@ -2805,9 +2734,9 @@ void TRectype::write_memo(TIsam_handle file, const TRecnotype recno)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
CHECK( _memo_recno > 0, "Maiale! Non fare le GO con _recno < 0 " );
|
CHECK( _memo_data->recno() > 0, "Maiale! Non fare le GO con _recno < 0 " );
|
||||||
TCodeb_handle cb_handle = prefix().get_handle(file);
|
TCodeb_handle cb_handle = prefix().get_handle(file);
|
||||||
DB_go( cb_handle, _memo_recno );
|
DB_go( cb_handle, _memo_data->recno());
|
||||||
for( int i = _memo_data->last( ); i > 0; i = _memo_data->pred( i ) )
|
for( int i = _memo_data->last( ); i > 0; i = _memo_data->pred( i ) )
|
||||||
{
|
{
|
||||||
if (_memo_data->is_dirty(i))
|
if (_memo_data->is_dirty(i))
|
||||||
@ -3082,10 +3011,9 @@ const TString& TRectype::get(const char* fieldname) const
|
|||||||
if (orig)
|
if (orig)
|
||||||
{
|
{
|
||||||
TCodeb_handle cb_handle = prefix().get_handle(orig);
|
TCodeb_handle cb_handle = prefix().get_handle(orig);
|
||||||
DB_go(orig->fhnd, _memo_data->recno());
|
CHECKD(cb_handle >= 0, "Can't read memo from file ", orig); //qui
|
||||||
|
DB_go(cb_handle, _memo_data->recno()); //qui
|
||||||
_memo_data->add(DB_memoptr(orig, fieldname), index);
|
_memo_data->add(DB_memoptr(orig, fieldname), index);
|
||||||
CHECKD(cb_handle >= 0, "Can't read memo from file ", lnum);
|
|
||||||
DB_go(cb_handle, _memo_recno );
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
NFCHECK("Valid memo recno with null memo file");
|
NFCHECK("Valid memo recno with null memo file");
|
||||||
|
@ -25,6 +25,10 @@
|
|||||||
class TTextfile;
|
class TTextfile;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef __PREFIX_H
|
||||||
|
#include <prefix.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#define FIELDERR -1
|
#define FIELDERR -1
|
||||||
|
|
||||||
#define RECORD_NON_FISICO (-1L)
|
#define RECORD_NON_FISICO (-1L)
|
||||||
@ -43,7 +47,7 @@ class TMemo_data : public TString_array
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
void destroy();
|
void destroy();
|
||||||
void init(TRecnotype recno, isdef* file);
|
void init(TRecnotype recno, TIsam_handle file);
|
||||||
TRecnotype recno() const { return _recno; }
|
TRecnotype recno() const { return _recno; }
|
||||||
TIsam_handle file() const { return _isamfile; }
|
TIsam_handle file() const { return _isamfile; }
|
||||||
void copy(const TMemo_data& m);
|
void copy(const TMemo_data& m);
|
||||||
@ -331,7 +335,7 @@ protected:
|
|||||||
const char* filename() const;
|
const char* filename() const;
|
||||||
|
|
||||||
// @cmember Costruttore per derivare TExternisamfile. <p Name> indica il file esterno da aprire.
|
// @cmember Costruttore per derivare TExternisamfile. <p Name> indica il file esterno da aprire.
|
||||||
TBaseisamfile(const char* name, int mode, bool index);
|
TBaseisamfile(const char* name, const char* descname = NULL);
|
||||||
|
|
||||||
int handle(int key = 0) const;
|
int handle(int key = 0) const;
|
||||||
|
|
||||||
@ -649,7 +653,7 @@ protected:
|
|||||||
// @cmember Costruttore per derivare TTempIsamfile
|
// @cmember Costruttore per derivare TTempIsamfile
|
||||||
TLocalisamfile(int logicnum, bool tmp);
|
TLocalisamfile(int logicnum, bool tmp);
|
||||||
// @cmember Costruttore per derivare TExternisamfile. <p Name> indica il file esterno da aprire (vedi <c TBaseisamfile>).
|
// @cmember Costruttore per derivare TExternisamfile. <p Name> indica il file esterno da aprire (vedi <c TBaseisamfile>).
|
||||||
TLocalisamfile(const char* name, int mode, bool index);
|
TLocalisamfile(const char* name, const char* descname = NULL);
|
||||||
|
|
||||||
// @access Public Member
|
// @access Public Member
|
||||||
public:
|
public:
|
||||||
@ -715,6 +719,18 @@ class TExternisamfile : public TLocalisamfile
|
|||||||
|
|
||||||
// @author:(INTERNAL) Angelo
|
// @author:(INTERNAL) Angelo
|
||||||
{
|
{
|
||||||
|
//@cmember:(INTERNAL) Indica il nome del file col quale e' stata instanziata la classe
|
||||||
|
TFilename _name;
|
||||||
|
|
||||||
|
// @access Protected Member
|
||||||
|
protected:
|
||||||
|
// @cmember inizializza il file. <p exclusive> indica se aprire il file in modo esclusivo
|
||||||
|
void init(const char* name, bool exclusive, bool index);
|
||||||
|
// @cmember Apre il file. <p exclusive> indica se aprire il file in modo esclusivo
|
||||||
|
int open(bool exclusive, bool index = TRUE);
|
||||||
|
// @cmember Chiude il file
|
||||||
|
int close();
|
||||||
|
|
||||||
// @access Public Member
|
// @access Public Member
|
||||||
public:
|
public:
|
||||||
// @cmember Ritorna il nome del file sotto forma di stringa
|
// @cmember Ritorna il nome del file sotto forma di stringa
|
||||||
@ -725,7 +741,12 @@ public:
|
|||||||
|
|
||||||
// @cmember Costruttore. <p exclusive> indica se aprire il file in modo esclusivo.
|
// @cmember Costruttore. <p exclusive> indica se aprire il file in modo esclusivo.
|
||||||
// <p index> indica se aprire il file con indici o meno
|
// <p index> indica se aprire il file con indici o meno
|
||||||
TExternisamfile(const char* name, int mode = _nolock, bool index = TRUE);
|
TExternisamfile(const char* name, bool exclusive = FALSE, bool index = TRUE);
|
||||||
|
// @cmember Costruttore. <p descname> é il nome del file che contiene la descrizione del file (estensione trr).
|
||||||
|
// <p exclusive> indica se aprire il file in modo esclusivo.
|
||||||
|
// <p index> indica se aprire il file con indici o meno
|
||||||
|
TExternisamfile(const char* name, const char * descname, bool exclusive = FALSE,
|
||||||
|
bool index = TRUE);
|
||||||
// @cmember Distruttore
|
// @cmember Distruttore
|
||||||
virtual ~TExternisamfile();
|
virtual ~TExternisamfile();
|
||||||
};
|
};
|
||||||
|
@ -1,3 +1,6 @@
|
|||||||
|
#define XI_INTERNAL
|
||||||
|
#include <xinclude.h>
|
||||||
|
|
||||||
#include <colors.h>
|
#include <colors.h>
|
||||||
#include <controls.h>
|
#include <controls.h>
|
||||||
#include <execp.h>
|
#include <execp.h>
|
||||||
@ -4824,7 +4827,7 @@ void TField_window::update()
|
|||||||
const WINDOW pa = parent();
|
const WINDOW pa = parent();
|
||||||
RCT rct; xvt_vobj_get_outer_rect(me, &rct);
|
RCT rct; xvt_vobj_get_outer_rect(me, &rct);
|
||||||
rct.left -= 2; rct.top -= 2; rct.right += 2; rct.bottom += 2;
|
rct.left -= 2; rct.top -= 2; rct.right += 2; rct.bottom += 2;
|
||||||
xi_draw_3d_rect(pa, &rct, TRUE, 2,
|
xi_draw_3d_rect(pa, (XinRect *) &rct, TRUE, 2, // qui
|
||||||
MASK_LIGHT_COLOR, MASK_BACK_COLOR, MASK_DARK_COLOR);
|
MASK_LIGHT_COLOR, MASK_BACK_COLOR, MASK_DARK_COLOR);
|
||||||
}
|
}
|
||||||
xvt_dwin_clear(me, NORMAL_BACK_COLOR);
|
xvt_dwin_clear(me, NORMAL_BACK_COLOR);
|
||||||
|
@ -1543,9 +1543,9 @@ class TField_window : public TScroll_window
|
|||||||
protected:
|
protected:
|
||||||
virtual void update();
|
virtual void update();
|
||||||
virtual void handler(WINDOW win, EVENT* ep);
|
virtual void handler(WINDOW win, EVENT* ep);
|
||||||
virtual bool on_key(KEY k);
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
virtual bool on_key(KEY k);
|
||||||
TWindowed_field& owner() const { return *_owner; }
|
TWindowed_field& owner() const { return *_owner; }
|
||||||
|
|
||||||
TField_window(int x, int y, int dx, int dy,
|
TField_window(int x, int y, int dx, int dy,
|
||||||
|
@ -994,7 +994,7 @@ bool TSpreadsheet::event_handler(XI_OBJ* itf, XI_EVENT *xiev)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (e->class_id() == CLASS_BOOLEAN_FIELD_
|
if (e->class_id() == CLASS_BOOLEAN_FIELD) //qui
|
||||||
xiev->v.cell_request.icon_rid = ICO_CHECK_OFF;
|
xiev->v.cell_request.icon_rid = ICO_CHECK_OFF;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -245,12 +245,12 @@ void TMultiple_rectype::synchronize_bodies()
|
|||||||
TRecord_array * b = (TRecord_array *) _files.objptr(i);
|
TRecord_array * b = (TRecord_array *) _files.objptr(i);
|
||||||
if (b == NULL)
|
if (b == NULL)
|
||||||
{
|
{
|
||||||
b = new TRecord_array(_logicnums[i], (TString &) _numfields[i]);
|
b = new TRecord_array(lognum(i), (TString &) _numfields[i]);
|
||||||
_files.add(b, i);
|
_files.add(b, i);
|
||||||
}
|
}
|
||||||
_changed[i] = FALSE;
|
_changed.reset(i);
|
||||||
b->destroy_rows();
|
b->destroy_rows();
|
||||||
TRectype * r = new_body_record(_logicnums[i]);
|
TRectype * r = new_body_record(lognum(i));
|
||||||
set_body_key(*r);
|
set_body_key(*r);
|
||||||
b->set_key(r);
|
b->set_key(r);
|
||||||
}
|
}
|
||||||
@ -323,9 +323,10 @@ int TMultiple_rectype::compare(const TSortable& s) const
|
|||||||
bool TMultiple_rectype::is_equal(const TMultiple_rectype& m) const
|
bool TMultiple_rectype::is_equal(const TMultiple_rectype& m) const
|
||||||
{
|
{
|
||||||
bool yes = TRectype::is_equal(m);
|
bool yes = TRectype::is_equal(m);
|
||||||
for (int i = 0; yes && i < _nfiles; i++)
|
const int last = _logicnums.last(); // qui
|
||||||
|
for (int i = 0; yes && i < last; i++)
|
||||||
{
|
{
|
||||||
const int logicnum = _logicnums[i];
|
const int logicnum = lognum(i);
|
||||||
TRecord_array & r = body(logicnum);
|
TRecord_array & r = body(logicnum);
|
||||||
TRecord_array & r1 = m.body(logicnum);
|
TRecord_array & r1 = m.body(logicnum);
|
||||||
yes = r.rows() == r1.rows();
|
yes = r.rows() == r1.rows();
|
||||||
@ -357,9 +358,10 @@ void TMultiple_rectype::fill_transaction(TConfig& cfg, int row) const
|
|||||||
{
|
{
|
||||||
CHECK(row == 0, "You can't specify a row for multiple rectypes");
|
CHECK(row == 0, "You can't specify a row for multiple rectypes");
|
||||||
TRectype::fill_transaction(cfg);
|
TRectype::fill_transaction(cfg);
|
||||||
for (int i = 0; i < _nfiles; i++)
|
const int last = _logicnums.last(); // qui
|
||||||
|
for (int i = 0; i < last; i++)
|
||||||
{
|
{
|
||||||
TRecord_array& b = body(_logicnums[i]);
|
TRecord_array& b = body(lognum(i));
|
||||||
for (int r = 1; b.exist(r); r++)
|
for (int r = 1; b.exist(r); r++)
|
||||||
b[r].fill_transaction(cfg, r);
|
b[r].fill_transaction(cfg, r);
|
||||||
}
|
}
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
#include <strings.h>
|
#include <strings.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
enum os_type { os_Unknown, os_Windows, os_Windows95, os_Windows98,
|
enum os_type { os_Unknown, os_Win32s, os_Windows, os_Windows95, os_Windows98,
|
||||||
os_WindowsME, os_WindowsNT, os_Windows2000 };
|
os_WindowsME, os_WindowsNT, os_Windows2000 };
|
||||||
os_type os_get_type();
|
os_type os_get_type();
|
||||||
|
|
||||||
|
@ -423,9 +423,19 @@ os_type os_get_type()
|
|||||||
switch (ovi.dwPlatformId)
|
switch (ovi.dwPlatformId)
|
||||||
{
|
{
|
||||||
case VER_PLATFORM_WIN32s : t = os_Win32s; break;
|
case VER_PLATFORM_WIN32s : t = os_Win32s; break;
|
||||||
case VER_PLATFORM_WIN32_NT : t = os_WindowsNT; break;
|
case VER_PLATFORM_WIN32_NT :
|
||||||
case VER_PLATFORM_WIN32_WINDOWS: t = os_Windows95; break;
|
{
|
||||||
default : t = os_Unknown; break;
|
t = os_WindowsNT;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case VER_PLATFORM_WIN32_WINDOWS:
|
||||||
|
{
|
||||||
|
t = os_Windows95;
|
||||||
|
if (ovi.dwMajorVersion == 4 || (ovi.dwMajorVersion > 4 && ovi.dwMinorVersion > 0))
|
||||||
|
t = os_Windows98;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default : t = os_Unknown; break; //Windows ME / 98 qui
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return t;
|
return t;
|
||||||
@ -657,3 +667,8 @@ unsigned long os_execute_in_window(const TFilename& path, WINDOW win)
|
|||||||
|
|
||||||
return (unsigned long) w._hwnd;
|
return (unsigned long) w._hwnd;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void os_sleep(long m)
|
||||||
|
{
|
||||||
|
::Sleep(m);
|
||||||
|
}
|
||||||
|
@ -12,72 +12,6 @@
|
|||||||
// Definita in isam.cpp
|
// Definita in isam.cpp
|
||||||
extern int get_error(int);
|
extern int get_error(int);
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////
|
|
||||||
// TFirm
|
|
||||||
///////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
#include <nditte.h>
|
|
||||||
|
|
||||||
bool TFirm::read(long cod)
|
|
||||||
{
|
|
||||||
int err = NOERR;
|
|
||||||
if (cod < 0L)
|
|
||||||
cod = prefix().get_codditta();
|
|
||||||
_rec.destroy();
|
|
||||||
|
|
||||||
TLocalisamfile ditte(LF_NDITTE);
|
|
||||||
if (cod > 0L)
|
|
||||||
{
|
|
||||||
ditte.put("CODDITTA", cod);
|
|
||||||
err = ditte.read();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
err = ditte.first();
|
|
||||||
|
|
||||||
if (err == NOERR)
|
|
||||||
{
|
|
||||||
const TRectype& ditta = ditte.curr();
|
|
||||||
for (int f = ditta.items()-1; f >= 0; f--)
|
|
||||||
{
|
|
||||||
const char* name = ditta.fieldname(f);
|
|
||||||
_rec.add(name, ditta.get(name));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
NFCHECK("Can't read firm %ld: error %d", cod, err);
|
|
||||||
|
|
||||||
return _rec.items() > 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
const TString& TFirm::get(const char* attr) const
|
|
||||||
{
|
|
||||||
const TString* str = (const TString*)_rec.objptr(attr);
|
|
||||||
if (str == NULL)
|
|
||||||
str = &EMPTY_STRING;
|
|
||||||
return *str;
|
|
||||||
}
|
|
||||||
|
|
||||||
long TFirm::get_long(const char* attr) const
|
|
||||||
{ return atol(get(attr)); }
|
|
||||||
|
|
||||||
long TFirm::codice() const
|
|
||||||
{
|
|
||||||
return get_long(NDT_CODDITTA);
|
|
||||||
}
|
|
||||||
|
|
||||||
const TString& TFirm::codice_valuta() const
|
|
||||||
{
|
|
||||||
const TString& codval = get(NDT_VALUTA);
|
|
||||||
if (codval.empty())
|
|
||||||
return TCurrency::get_base_val();
|
|
||||||
return codval;
|
|
||||||
}
|
|
||||||
|
|
||||||
TFirm::TFirm(long code)
|
|
||||||
{
|
|
||||||
read(code);
|
|
||||||
}
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
// extern variables are NO-NO!
|
// extern variables are NO-NO!
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
@ -847,11 +781,14 @@ bool TFirm::read(long cod)
|
|||||||
if (cod < 0L)
|
if (cod < 0L)
|
||||||
cod = prefix().get_codditta();
|
cod = prefix().get_codditta();
|
||||||
_rec.destroy();
|
_rec.destroy();
|
||||||
|
TLocalisamfile ditte(LF_NDITTE);
|
||||||
if (cod > 0L)
|
if (cod > 0L)
|
||||||
{
|
{
|
||||||
TLocalisamfile ditte(LF_NDITTE);
|
|
||||||
ditte.put("CODDITTA", cod);
|
ditte.put("CODDITTA", cod);
|
||||||
err = ditte.read();
|
err = ditte.read();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
err = ditte.first();
|
||||||
if (err == NOERR)
|
if (err == NOERR)
|
||||||
{
|
{
|
||||||
const TRectype& ditta = ditte.curr();
|
const TRectype& ditta = ditte.curr();
|
||||||
@ -863,7 +800,7 @@ bool TFirm::read(long cod)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
NFCHECK("Can't read firm %ld: error %d", cod, err);
|
NFCHECK("Can't read firm %ld: error %d", cod, err);
|
||||||
}
|
|
||||||
return _rec.items() > 0;
|
return _rec.items() > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -156,8 +156,6 @@ class TFile_cache : public TObject
|
|||||||
long _last_read, _limit;
|
long _last_read, _limit;
|
||||||
bool _test_changes;
|
bool _test_changes;
|
||||||
|
|
||||||
static unsigned long _hits, _miss;
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
TAssoc_array _cache;
|
TAssoc_array _cache;
|
||||||
|
|
||||||
|
@ -246,7 +246,7 @@ public:
|
|||||||
void set_link(TMask & m, const char * keyexpr);
|
void set_link(TMask & m, const char * keyexpr);
|
||||||
// @cmember Ritorna TRUE se e' stato chiamato col messaggio di link
|
// @cmember Ritorna TRUE se e' stato chiamato col messaggio di link
|
||||||
bool lnflag() const
|
bool lnflag() const
|
||||||
{ return _lnflag;}
|
{ return _lnflag != 0;} // qui
|
||||||
// @cmember Ritorna TRUE se e' una transazione
|
// @cmember Ritorna TRUE se e' una transazione
|
||||||
bool is_transaction() const { return _curr_transaction.not_empty(); }
|
bool is_transaction() const { return _curr_transaction.not_empty(); }
|
||||||
|
|
||||||
|
@ -6,6 +6,7 @@
|
|||||||
#include <sheet.h>
|
#include <sheet.h>
|
||||||
#include <sort.h>
|
#include <sort.h>
|
||||||
#include <tabutil.h>
|
#include <tabutil.h>
|
||||||
|
#include <utility.h>
|
||||||
|
|
||||||
#include <codeb.h>
|
#include <codeb.h>
|
||||||
// *** check if not already defined
|
// *** check if not already defined
|
||||||
@ -1293,9 +1294,9 @@ void TCursor::filter(
|
|||||||
kf = kto = f.name();
|
kf = kto = f.name();
|
||||||
}
|
}
|
||||||
if (from != NULL)
|
if (from != NULL)
|
||||||
matildator(*from, _nkey, tilde & 0x1, kf);
|
matildator(*from, _nkey, (bool)(tilde & 0x1), kf);
|
||||||
if (to != NULL)
|
if (to != NULL)
|
||||||
matildator(*to, _nkey, tilde & 0x2, kto);
|
matildator(*to, _nkey, (tilde & 0x2) != 0, kto);
|
||||||
|
|
||||||
if (filterchanged || (_keyfrom != kf) || (_keyto != kto))
|
if (filterchanged || (_keyfrom != kf) || (_keyto != kto))
|
||||||
{
|
{
|
||||||
|
@ -2597,7 +2597,21 @@ TViswin::TViswin(const char *fname,
|
|||||||
else
|
else
|
||||||
PRINT_HEIGHT = 10;
|
PRINT_HEIGHT = 10;
|
||||||
|
|
||||||
height = rows();
|
// height = rows(); qui
|
||||||
|
|
||||||
|
const int larg = 76;
|
||||||
|
const int alt = 20;
|
||||||
|
|
||||||
|
RCT r;
|
||||||
|
|
||||||
|
xvt_vobj_get_client_rect (parent, &r);
|
||||||
|
int maxlarg = width == 0 ? (r.right / CHARX - 6) : width;
|
||||||
|
int maxalt = height == 0 ? (r.bottom / CHARY - 6) : height;
|
||||||
|
|
||||||
|
if (_toplevel && larg > maxlarg)
|
||||||
|
maxlarg = larg;
|
||||||
|
if (_toplevel && alt > maxalt)
|
||||||
|
maxalt = alt;
|
||||||
|
|
||||||
for (int i = 0; i < 4; i++)
|
for (int i = 0; i < 4; i++)
|
||||||
_modules.add(new TImage(BMP_MODULE1 + i), i);
|
_modules.add(new TImage(BMP_MODULE1 + i), i);
|
||||||
|
@ -189,6 +189,7 @@ HIDDEN void xvt_menu_enable(MENU_ITEM* m, bool on)
|
|||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
xvt_menu_set_item_enabled(TASK_WIN, m->tag, on);
|
xvt_menu_set_item_enabled(TASK_WIN, m->tag, on);
|
||||||
|
}
|
||||||
m++;
|
m++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -704,7 +705,12 @@ KEY TWindow::run()
|
|||||||
else open();
|
else open();
|
||||||
|
|
||||||
while (_running)
|
while (_running)
|
||||||
|
{
|
||||||
do_events();
|
do_events();
|
||||||
|
#if XVT_OS == XVT_OS_WIN32
|
||||||
|
os_sleep(100);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
if (!was_open) close_modal();
|
if (!was_open) close_modal();
|
||||||
do_events();
|
do_events();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user