Patch level : 2.0 nopatch
Files correlati : Ricompilazione Demo : [ ] Commento : Migliorata gestione sfondi. Migliorata gestione campi memo git-svn-id: svn://10.65.10.50/trunk@11281 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
574c68d911
commit
2bc717c739
@ -52,6 +52,19 @@
|
|||||||
#define CLASS_CURRENCY_FIELD 249
|
#define CLASS_CURRENCY_FIELD 249
|
||||||
#define CLASS_GOLEM_CLIENT_FIELD 250
|
#define CLASS_GOLEM_CLIENT_FIELD 250
|
||||||
|
|
||||||
|
#define CLASS_BASEISAMFILE 300
|
||||||
|
#define CLASS_ISAMFILE 301
|
||||||
|
#define CLASS_SYSTEMISAMFILE 302
|
||||||
|
#define CLASS_LOCALISAMFILE 303
|
||||||
|
#define CLASS_ISAMTEMPFILE 304
|
||||||
|
#define CLASS_EXTERNISAMFILE 304
|
||||||
|
#define CLASS_SORTEDFILE 310
|
||||||
|
|
||||||
|
#define CLASS_RECTYPE 350
|
||||||
|
#define CLASS_VARIABLE_RECTYPE 351
|
||||||
|
#define CLASS_AUTO_VARIABLE_RECTYPE 352
|
||||||
|
#define CLASS_EXT_RECTYPE 353
|
||||||
|
|
||||||
#define CLASS_GOLEM 900
|
#define CLASS_GOLEM 900
|
||||||
|
|
||||||
// @END
|
// @END
|
||||||
|
@ -55,17 +55,6 @@ short low_get_focus_id(WINDOW win)
|
|||||||
return obj->cid;
|
return obj->cid;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Doesn't work: DON'T USE!
|
|
||||||
void low_set_focus_id(WINDOW win, short cid)
|
|
||||||
{
|
|
||||||
XI_OBJ * itf = xi_get_itf((XinWindow)win);
|
|
||||||
if (cid > 0)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
else
|
|
||||||
itf->v.itf->focus_obj = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
HIDDEN int X_FU_MULTIPLE = 0;
|
HIDDEN int X_FU_MULTIPLE = 0;
|
||||||
HIDDEN int Y_FU_MULTIPLE = 0;
|
HIDDEN int Y_FU_MULTIPLE = 0;
|
||||||
HIDDEN const int ITF_CID = 30000;
|
HIDDEN const int ITF_CID = 30000;
|
||||||
@ -377,6 +366,32 @@ HIDDEN void init_fu_multiple(XI_OBJ* itf)
|
|||||||
|
|
||||||
#define MASK_RECT_ID -883
|
#define MASK_RECT_ID -883
|
||||||
|
|
||||||
|
HIDDEN XI_BITMAP* get_background_bitmap()
|
||||||
|
{
|
||||||
|
static bool checked = FALSE;
|
||||||
|
static XI_BITMAP* bmp = NULL;
|
||||||
|
|
||||||
|
if (ADVANCED_GRAPHICS)
|
||||||
|
{
|
||||||
|
if (bmp == NULL && !checked)
|
||||||
|
{
|
||||||
|
const char* ext[] = { "jpg", "gif", "bmp", NULL };
|
||||||
|
bool ok = false;
|
||||||
|
TFilename back("back");
|
||||||
|
for (int i = 0; !ok && ext[i]; i++)
|
||||||
|
{
|
||||||
|
back.ext(ext[i]);
|
||||||
|
ok = back.custom_path();
|
||||||
|
}
|
||||||
|
if (ok)
|
||||||
|
bmp = xi_bitmap_create(back.get_buffer(), XI_BITMAP_TILE);
|
||||||
|
checked = TRUE;
|
||||||
|
}
|
||||||
|
return bmp;
|
||||||
|
}
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
WINDOW create_interface(WINDOW parent, short x, short y, short dx, short dy,
|
WINDOW create_interface(WINDOW parent, short x, short y, short dx, short dy,
|
||||||
const char* caption, TWindow* msk, bool tag)
|
const char* caption, TWindow* msk, bool tag)
|
||||||
{
|
{
|
||||||
@ -431,11 +446,15 @@ WINDOW create_interface(WINDOW parent, short x, short y, short dx, short dy,
|
|||||||
def->v.itf->font_id = xvt_default_font(FALSE);
|
def->v.itf->font_id = xvt_default_font(FALSE);
|
||||||
def->v.itf->tab_on_enter = TRUE;
|
def->v.itf->tab_on_enter = TRUE;
|
||||||
def->v.itf->win = (XinWindow)win;
|
def->v.itf->win = (XinWindow)win;
|
||||||
|
def->v.itf->edit_menu = TRUE; // Update edit menu items
|
||||||
#ifdef XI_R4
|
|
||||||
def->v.itf->edit_menu = TRUE; // Update edit menu items
|
|
||||||
def->v.itf->menu_win = (XinWindow)TASK_WIN; // Window that owns the menu
|
def->v.itf->menu_win = (XinWindow)TASK_WIN; // Window that owns the menu
|
||||||
#endif
|
|
||||||
|
XI_BITMAP* bmpback = get_background_bitmap();
|
||||||
|
if (bmpback != NULL)
|
||||||
|
{
|
||||||
|
def->v.itf->back_color = 0;
|
||||||
|
def->v.itf->bitmap = bmpback;
|
||||||
|
}
|
||||||
|
|
||||||
XI_OBJ* itf = xi_create(NULL, def);
|
XI_OBJ* itf = xi_create(NULL, def);
|
||||||
CHECK(itf, "Can't create an interface");
|
CHECK(itf, "Can't create an interface");
|
||||||
@ -462,7 +481,13 @@ WINDOW create_interface(WINDOW parent, short x, short y, short dx, short dy,
|
|||||||
rct.top += Y_FU_MULTIPLE; // Lascia lo spazio per i Bottoni di cambio pagina
|
rct.top += Y_FU_MULTIPLE; // Lascia lo spazio per i Bottoni di cambio pagina
|
||||||
|
|
||||||
def = xi_add_rect_def(NULL, MASK_RECT_ID, &rct, XI_ATR_VISIBLE, 0, 0);
|
def = xi_add_rect_def(NULL, MASK_RECT_ID, &rct, XI_ATR_VISIBLE, 0, 0);
|
||||||
XI_OBJ* obj = xi_create(itf, def);
|
if (bmpback != NULL)
|
||||||
|
{
|
||||||
|
def->v.rect->back_color = 0;
|
||||||
|
def->v.rect->bitmap = bmpback;
|
||||||
|
}
|
||||||
|
|
||||||
|
XI_OBJ* obj = xi_create(itf, def);
|
||||||
CHECK(obj, "Can't create page rectangle");
|
CHECK(obj, "Can't create page rectangle");
|
||||||
|
|
||||||
// Fa coincidere esattamente il rettangolo con la finestra che lo contiene
|
// Fa coincidere esattamente il rettangolo con la finestra che lo contiene
|
||||||
|
@ -408,14 +408,14 @@ void TExpression::eval()
|
|||||||
{
|
{
|
||||||
const real & r2 = evalstack.pop_real();
|
const real & r2 = evalstack.pop_real();
|
||||||
real & r1 = evalstack.peek_real();
|
real & r1 = evalstack.peek_real();
|
||||||
r1 = (!r1.is_zero() && !r2.is_zero()) ? 1.0 : 0.0;
|
r1 = (!r1.is_zero() && !r2.is_zero()) ? UNO : ZERO;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case _or:
|
case _or:
|
||||||
{
|
{
|
||||||
const real & r2 = evalstack.pop_real();
|
const real & r2 = evalstack.pop_real();
|
||||||
real & r1 = evalstack.peek_real();
|
real & r1 = evalstack.peek_real();
|
||||||
r1 = (r1 != ZERO || r2 != ZERO) ? 1.0 : 0.0;
|
r1 = (r1 != ZERO || r2 != ZERO) ? UNO : ZERO;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case _not:
|
case _not:
|
||||||
|
@ -262,7 +262,7 @@ void __putfieldbuff(byte l, byte d, byte t, const char* s, char* recout)
|
|||||||
}
|
}
|
||||||
if (!__field_changed)
|
if (!__field_changed)
|
||||||
{
|
{
|
||||||
__field_changed = memcmp(s, &recout, l) != 0;
|
__field_changed = memcmp(s, recout, l) != 0;
|
||||||
if (!__field_changed)
|
if (!__field_changed)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -272,7 +272,7 @@ void __putfieldbuff(byte l, byte d, byte t, const char* s, char* recout)
|
|||||||
{
|
{
|
||||||
if (exceeded)
|
if (exceeded)
|
||||||
len = l;
|
len = l;
|
||||||
__field_changed = memcmp(s, &recout, l) != 0;
|
__field_changed = memcmp(s, recout, len) != 0;
|
||||||
if (!__field_changed)
|
if (!__field_changed)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@ -1262,7 +1262,7 @@ 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)
|
||||||
{
|
{
|
||||||
TCodeb_handle cb_handle = prefix().get_handle(_isam_handle);
|
TCodeb_handle cb_handle = prefix().get_handle(_isam_handle, _curr_key);
|
||||||
const int dbfreclen = DB_reclen(cb_handle);
|
const int dbfreclen = DB_reclen(cb_handle);
|
||||||
const int trcreclen = prefix().get_reclen(_logicnum);
|
const int trcreclen = prefix().get_reclen(_logicnum);
|
||||||
const TRecnotype n = DB_reccount(cb_handle);
|
const TRecnotype n = DB_reccount(cb_handle);
|
||||||
@ -3069,20 +3069,18 @@ const char* TRectype::fieldname(int i) const
|
|||||||
|
|
||||||
const TString& TRectype::get_str(const char* fieldname) const
|
const TString& TRectype::get_str(const char* fieldname) const
|
||||||
{
|
{
|
||||||
TString& tmp = get_tmp_string(256);
|
const RecDes* recd = rec_des();
|
||||||
const RecDes * recd = rec_des();
|
|
||||||
const int nf = findfld(recd, fieldname);
|
const int nf = findfld(recd, fieldname);
|
||||||
const RecFieldDes& fd = recd->Fd[nf];
|
const RecFieldDes& fd = recd->Fd[nf];
|
||||||
if (nf == FIELDERR)
|
if (nf != FIELDERR)
|
||||||
{
|
{
|
||||||
unknown_field(fieldname);
|
TString& tmp = get_tmp_string(fd.Len + (fd.TypeF == _datefld ? 2 : 0));
|
||||||
tmp.cut(0);
|
__getfieldbuff(fd.Len, fd.TypeF, _rec + fd.RecOff, tmp.get_buffer());
|
||||||
|
return tmp;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
unknown_field(fieldname);
|
||||||
__getfieldbuff(fd.Len, fd.TypeF, _rec + fd.RecOff, tmp.get_buffer());
|
return EMPTY_STRING;
|
||||||
}
|
|
||||||
return tmp;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const TString& TRectype::get(const char* fieldname) const
|
const TString& TRectype::get(const char* fieldname) const
|
||||||
@ -3095,12 +3093,13 @@ const TString& TRectype::get(const char* fieldname) const
|
|||||||
return _memo_data->row( index );
|
return _memo_data->row( index );
|
||||||
if(_memo_data->recno() >= 0L)
|
if(_memo_data->recno() >= 0L)
|
||||||
{
|
{
|
||||||
int orig = _memo_data->file();
|
const int orig = _memo_data->file();
|
||||||
if (orig)
|
if (orig)
|
||||||
{
|
{
|
||||||
TCodeb_handle cb_handle = prefix().get_handle(orig);
|
TCodeb_handle cb_handle = prefix().get_handle(orig, -1);
|
||||||
CHECKD(cb_handle >= 0, "Can't read memo from file ", orig);
|
CHECKD(cb_handle >= 0, "Can't read memo from file ", orig);
|
||||||
DB_go(cb_handle, _memo_data->recno());
|
if (DB_recno(cb_handle) != _memo_data->recno())
|
||||||
|
DB_go(cb_handle, _memo_data->recno());
|
||||||
_memo_data->add(DB_memoptr(cb_handle, fieldname), index);
|
_memo_data->add(DB_memoptr(cb_handle, fieldname), index);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -256,6 +256,10 @@ public:
|
|||||||
|
|
||||||
// @cmember Inizializza un record staccato da un file.
|
// @cmember Inizializza un record staccato da un file.
|
||||||
void init(int logicnum);
|
void init(int logicnum);
|
||||||
|
|
||||||
|
virtual word class_id() const { return CLASS_RECTYPE; }
|
||||||
|
virtual bool is_kind_of(word id) const { return id == class_id() || TSortable::is_kind_of(id); }
|
||||||
|
|
||||||
// @cmember Costruttore Costruisce un record staccato da un file.
|
// @cmember Costruttore Costruisce un record staccato da un file.
|
||||||
// Sarebbe meglio utilizzare una delle altre due
|
// Sarebbe meglio utilizzare una delle altre due
|
||||||
TRectype(int logicnum);
|
TRectype(int logicnum);
|
||||||
@ -510,6 +514,9 @@ public:
|
|||||||
|
|
||||||
// @cmember Testa se il file e' cambiato dal momento <p stat>
|
// @cmember Testa se il file e' cambiato dal momento <p stat>
|
||||||
bool is_changed_since(long& stat) const;
|
bool is_changed_since(long& stat) const;
|
||||||
|
|
||||||
|
virtual word class_id() const { return CLASS_BASEISAMFILE; }
|
||||||
|
virtual bool is_kind_of(word id) const { return id == class_id() || TObject::is_kind_of(id); }
|
||||||
|
|
||||||
// @cmember Costruttore
|
// @cmember Costruttore
|
||||||
TBaseisamfile(int logicnum);
|
TBaseisamfile(int logicnum);
|
||||||
@ -542,6 +549,10 @@ public:
|
|||||||
// @cmember Chiude il file di isam
|
// @cmember Chiude il file di isam
|
||||||
int close()
|
int close()
|
||||||
{ return _close();}
|
{ return _close();}
|
||||||
|
|
||||||
|
virtual word class_id() const { return CLASS_ISAMFILE; }
|
||||||
|
virtual bool is_kind_of(word id) const { return id == class_id() || TBaseisamfile::is_kind_of(id); }
|
||||||
|
|
||||||
// @cmember Costruttore
|
// @cmember Costruttore
|
||||||
TIsamfile(int logicnum);
|
TIsamfile(int logicnum);
|
||||||
// @cmember Distruttore
|
// @cmember Distruttore
|
||||||
@ -600,6 +611,9 @@ public:
|
|||||||
// @cmember Esporta VERSO un file ascii.
|
// @cmember Esporta VERSO un file ascii.
|
||||||
int dump(const char* to, int nkey = 1, char fs = '|', char fd = '\0', char rs = '\n', bool vis = TRUE, bool withdeleted = FALSE, const char * filter =NULL);
|
int dump(const char* to, int nkey = 1, char fs = '|', char fd = '\0', char rs = '\n', bool vis = TRUE, bool withdeleted = FALSE, const char * filter =NULL);
|
||||||
|
|
||||||
|
virtual word class_id() const { return CLASS_SYSTEMISAMFILE; }
|
||||||
|
virtual bool is_kind_of(word id) const { return id == class_id() || TIsamfile::is_kind_of(id); }
|
||||||
|
|
||||||
// @cmember Costruttore
|
// @cmember Costruttore
|
||||||
TSystemisamfile(int logicnum): TIsamfile(logicnum)
|
TSystemisamfile(int logicnum): TIsamfile(logicnum)
|
||||||
{}
|
{}
|
||||||
@ -643,6 +657,9 @@ public:
|
|||||||
virtual bool tab() const
|
virtual bool tab() const
|
||||||
{ return FALSE;}
|
{ return FALSE;}
|
||||||
|
|
||||||
|
virtual word class_id() const { return CLASS_LOCALISAMFILE; }
|
||||||
|
virtual bool is_kind_of(word id) const { return id == class_id() || TBaseisamfile::is_kind_of(id); }
|
||||||
|
|
||||||
// @cmember Costruttore.
|
// @cmember Costruttore.
|
||||||
TLocalisamfile(int logicnum);
|
TLocalisamfile(int logicnum);
|
||||||
// @cmember Distruttore
|
// @cmember Distruttore
|
||||||
@ -677,6 +694,10 @@ public:
|
|||||||
// @cmember Setta il valore di <p _autodel> a <p val>
|
// @cmember Setta il valore di <p _autodel> a <p val>
|
||||||
void set_autodel(bool val=TRUE)
|
void set_autodel(bool val=TRUE)
|
||||||
{_autodel = val;}
|
{_autodel = val;}
|
||||||
|
|
||||||
|
virtual word class_id() const { return CLASS_ISAMTEMPFILE; }
|
||||||
|
virtual bool is_kind_of(word id) const { return id == class_id() || TLocalisamfile::is_kind_of(id); }
|
||||||
|
|
||||||
// @cmember Costruttore
|
// @cmember Costruttore
|
||||||
TIsamtempfile(int logicnum, const char* radix, bool create=TRUE, bool autodel=FALSE);
|
TIsamtempfile(int logicnum, const char* radix, bool create=TRUE, bool autodel=FALSE);
|
||||||
// @cmember Distruttore
|
// @cmember Distruttore
|
||||||
@ -713,6 +734,9 @@ public:
|
|||||||
// @cmember Cancella tutti i record del file
|
// @cmember Cancella tutti i record del file
|
||||||
int zap();
|
int zap();
|
||||||
|
|
||||||
|
virtual word class_id() const { return CLASS_EXTERNISAMFILE; }
|
||||||
|
virtual bool is_kind_of(word id) const { return id == class_id() || TLocalisamfile::is_kind_of(id); }
|
||||||
|
|
||||||
// @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, bool exclusive = FALSE, bool index = TRUE);
|
TExternisamfile(const char* name, bool exclusive = FALSE, bool index = TRUE);
|
||||||
|
@ -392,9 +392,7 @@ void TFile_info::auto_close()
|
|||||||
int TFile_info::auto_open(int key)
|
int TFile_info::auto_open(int key)
|
||||||
{
|
{
|
||||||
if (_handle < 0)
|
if (_handle < 0)
|
||||||
{
|
|
||||||
open_low(FALSE, TRUE);
|
open_low(FALSE, TRUE);
|
||||||
}
|
|
||||||
|
|
||||||
if (_handle >= 0)
|
if (_handle >= 0)
|
||||||
{
|
{
|
||||||
@ -660,13 +658,18 @@ TCodeb_handle TFile_manager::get_handle(TIsam_handle name, int key)
|
|||||||
if (_open_files >= _max_open_files)
|
if (_open_files >= _max_open_files)
|
||||||
close_oldest();
|
close_oldest();
|
||||||
|
|
||||||
|
// Se ho passato key = -1 mi va bene la chiave principale
|
||||||
|
if (key < 0)
|
||||||
|
key = 1;
|
||||||
|
|
||||||
handle = i.auto_open(key);
|
handle = i.auto_open(key);
|
||||||
if (handle >= 0)
|
if (handle >= 0)
|
||||||
_open_files++;
|
_open_files++;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (i.last_key() != key)
|
// Se ho passato key = -1 mi va bene la chiave corrente
|
||||||
|
if (key >= 0 && i.last_key() != key)
|
||||||
handle = i.auto_open(key);
|
handle = i.auto_open(key);
|
||||||
}
|
}
|
||||||
// i.touch(); // Memorizza troppo spesso l'accesso
|
// i.touch(); // Memorizza troppo spesso l'accesso
|
||||||
|
@ -782,6 +782,9 @@ public:
|
|||||||
// @cmember Resetta la regione del file (chiama <p TCursor::setregion>
|
// @cmember Resetta la regione del file (chiama <p TCursor::setregion>
|
||||||
void setregion(const TRectype &f, const TRectype &t, int tilde = 0x0);
|
void setregion(const TRectype &f, const TRectype &t, int tilde = 0x0);
|
||||||
|
|
||||||
|
virtual word class_id() const { return CLASS_SORTEDFILE; }
|
||||||
|
virtual bool is_kind_of(word id) const { return id == class_id() || TLocalisamfile::is_kind_of(id); }
|
||||||
|
|
||||||
// TO REMOVE
|
// TO REMOVE
|
||||||
TRelation& relation()
|
TRelation& relation()
|
||||||
{ return *_rel; }
|
{ return *_rel; }
|
||||||
|
@ -161,6 +161,9 @@ public:
|
|||||||
// @cmember Costruttore. Costruisce il record a partire da <p r>
|
// @cmember Costruttore. Costruisce il record a partire da <p r>
|
||||||
TVariable_rectype(const TVariable_rectype & r);
|
TVariable_rectype(const TVariable_rectype & r);
|
||||||
|
|
||||||
|
virtual word class_id() const { return CLASS_VARIABLE_RECTYPE; }
|
||||||
|
virtual bool is_kind_of(word id) const { return id == class_id() || TRectype::is_kind_of(id); }
|
||||||
|
|
||||||
// @cmember Distruttore
|
// @cmember Distruttore
|
||||||
virtual ~TVariable_rectype() {}
|
virtual ~TVariable_rectype() {}
|
||||||
};
|
};
|
||||||
@ -199,6 +202,9 @@ public:
|
|||||||
// @cmember Costruttore. Costruisce il record a partire da <p r>
|
// @cmember Costruttore. Costruisce il record a partire da <p r>
|
||||||
TAuto_variable_rectype(const TVariable_rectype & r) : TVariable_rectype(r) {}
|
TAuto_variable_rectype(const TVariable_rectype & r) : TVariable_rectype(r) {}
|
||||||
|
|
||||||
|
virtual word class_id() const { return CLASS_AUTO_VARIABLE_RECTYPE; }
|
||||||
|
virtual bool is_kind_of(word id) const { return id == class_id() || TVariable_rectype::is_kind_of(id); }
|
||||||
|
|
||||||
// @cmember Distruttore
|
// @cmember Distruttore
|
||||||
virtual ~TAuto_variable_rectype() {}
|
virtual ~TAuto_variable_rectype() {}
|
||||||
};
|
};
|
||||||
@ -217,6 +223,10 @@ protected: // TRectype
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
virtual word class_id() const { return CLASS_EXT_RECTYPE; }
|
||||||
|
virtual bool is_kind_of(word id) const { return id == class_id() || TVariable_rectype::is_kind_of(id); }
|
||||||
|
|
||||||
|
|
||||||
TExtrectype(const TTrec& r); // Costruisce il record a partire da r
|
TExtrectype(const TTrec& r); // Costruisce il record a partire da r
|
||||||
virtual ~TExtrectype() ;
|
virtual ~TExtrectype() ;
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user