Patch level : 4.0

Files correlati     :
Ricompilazione Demo : [ ]
Commento            :
Eliminata caterva di roba deprecated:
praticamente sono state decimate le stringhe C a favore delle TString C++
Corretta gestione bottone "pagina precedente" in anteprima report


git-svn-id: svn://10.65.10.50/trunk@14922 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2007-02-16 13:48:27 +00:00
parent 52bf679ad7
commit a44ba2f2a7
19 changed files with 179 additions and 176 deletions

View File

@ -141,52 +141,52 @@ TApplication& main_app()
HIDDEN void paint_background(WINDOW win)
{
xvt_dwin_clear(win, MASK_DARK_COLOR);
RCT r; xvt_vobj_get_client_rect(win, &r);
const XVT_DISPLAY_TYPE type = (XVT_DISPLAY_TYPE)xvt_vobj_get_attr(win, ATTR_DISPLAY_TYPE);
if (ADVANCED_GRAPHICS && type == XVT_DISPLAY_DIRECT_COLOR)
if (ADVANCED_GRAPHICS)
{
CPEN pen; memset(&pen, 0, sizeof(pen));
pen.width = 7;
const int R = r.bottom;
for (int x = R; x >= 0; x-=pen.width)
{
const COLOR c = blend_colors(MASK_DARK_COLOR, MASK_LIGHT_COLOR, double(x) / double(R));
if (c != pen.color)
{
pen.color = c;
xvt_dwin_set_cpen(win, &pen);
}
const PNT p = { x, 0 };
const PNT t = { 0, x };
xvt_dwin_draw_set_pos(win, p);
xvt_dwin_draw_line(win, t);
}
const int cy = r.bottom / 4;
RCT g = r; g.bottom = cy;
xvt_dwin_draw_gradient_linear(win, &g, MASK_LIGHT_COLOR, MASK_BACK_COLOR, 90);
g = r; g.top = cy;
xvt_dwin_draw_gradient_linear(win, &g, MASK_DARK_COLOR, MASK_LIGHT_COLOR, 90);
}
else
xvt_dwin_clear(win, MASK_DARK_COLOR);
const int BIGY = 3*CHARY/2;
const int BIGY = 3*ROWY/2;
xvtil_set_font(win, XVT_FFN_TIMES, XVT_FS_BOLD | XVT_FS_ITALIC, BIGY);
const char* t = main_app().title();
int w = xvt_dwin_get_text_width(win, t, -1);
int a; xvt_dwin_get_font_metrics(win, NULL, &a, NULL);
int x = (r.right-w)>>1, y = r.top+a;
xvt_dwin_set_fore_color(win, MASK_LIGHT_COLOR);
xvt_dwin_draw_text(win, x+1, y+1, t, -1);
xvt_dwin_set_fore_color(win, NORMAL_COLOR);
xvt_dwin_draw_text(win, x, y, t, -1);
int x = (r.right-w)/2, y = r.top+BIGY;
if (ADVANCED_GRAPHICS)
{
const int k = max(BIGY/24, 1);
xvt_dwin_set_fore_color(win, MASK_LIGHT_COLOR);
xvt_dwin_draw_text(win, x+k, y+k, t, -1);
xvt_dwin_set_fore_color(win, MASK_DARK_COLOR);
xvt_dwin_draw_text(win, x, y, t, -1);
}
else
{
xvt_dwin_set_fore_color(win, NORMAL_COLOR);
xvt_dwin_draw_text(win, x, y, t, -1);
}
xvtil_set_font(win, NULL, XVT_FS_NONE);
xvt_dwin_set_fore_color(win, NORMAL_COLOR);
const TString spa(dongle().reseller());
w = xvt_dwin_get_text_width(win, (const char *) spa, -1);
x = (r.right-r.left-w)>>1; y = r.bottom-CHARY;
xvt_dwin_draw_text(win, x, y, (const char *) spa, -1);
w = xvt_dwin_get_text_width(win, spa, -1);
x = (r.right-r.left-w)/2; y = r.bottom-CHARY;
xvt_dwin_draw_text(win, x, y, spa, -1);
if (ADVANCED_GRAPHICS)
{
xvt_dwin_draw_icon(win, r.right-40, r.bottom-40, ICON_RSRC);
xvt_dwin_draw_icon(win, 8, r.bottom-40, ICON_RSRC);
const int ix = xvt_vobj_get_attr(NULL_WIN, ATTR_ICON_WIDTH);
const int iy = xvt_vobj_get_attr(NULL_WIN, ATTR_ICON_HEIGHT);
xvt_dwin_draw_icon(win, r.right-ix-CHARY, r.bottom-iy-CHARY, ICON_RSRC);
xvt_dwin_draw_icon(win, CHARY, r.bottom-iy-CHARY, ICON_RSRC);
}
}
@ -635,8 +635,8 @@ void TApplication::run(
XVT_CONFIG cfg;
cfg.menu_bar_ID = TASK_MENUBAR;
cfg.about_box_ID = 0;
cfg.base_appl_name = (char*)base.name();
cfg.appl_name = (char*)title;
cfg.base_appl_name = base.name();
cfg.appl_name = title;
cfg.taskwin_title = "CAMPO";
set_xvt_hooks();
@ -845,7 +845,7 @@ bool TApplication::get_next_pdf(int anno, long ditta, const char* codnum,
{
TConfig ini("servers/servers.ini", "Spotlight");
pdf = ini.get("Data");
ok = pdf.full() && pdf.exist();
ok = pdf.exist();
}
if (ok)
{
@ -862,10 +862,10 @@ bool TApplication::get_next_pdf(int anno, long ditta, const char* codnum,
{
if (ditta < 0)
ditta = get_firm();
pdf.add(format("%05ld", ditta));
if (codnum == NULL || *codnum <= ' ')
codnum = "report";
pdf.add(format("%05ld", ditta));
pdf << '_' << _name << '_' << codnum << '_';
if (numdoc <= 0)

View File

@ -275,8 +275,13 @@ void customize_colors()
CAMPI_SCAVATI = colors.get_bool("Campi3D", NULL, -1, CAMPI_SCAVATI);
AUTOSELECT = colors.get_bool("AutoSelect", NULL, -1, AUTOSELECT);
AUTOZOOM = colors.get_bool("AutoZoom", NULL, -1, AUTOZOOM);
ADVANCED_GRAPHICS = colors.get_bool("AdvancedGraphics", NULL, -1, ADVANCED_GRAPHICS);
SMALL_ICONS = colors.get_bool("SmallIcons", NULL, -1, SMALL_ICONS);
ADVANCED_GRAPHICS = colors.get_bool("AdvancedGraphics", NULL, -1, ADVANCED_GRAPHICS);
if (ADVANCED_GRAPHICS)
{
const long dt = xvt_vobj_get_attr(NULL_WIN, ATTR_DISPLAY_TYPE);
ADVANCED_GRAPHICS = dt == XVT_DISPLAY_DIRECT_COLOR;
}
const int SPEECH_MODE = colors.get_int("SpeechMode", NULL, -1, 0);
xvt_vobj_set_attr(NULL_WIN, ATTR_SPEECH_MODE, SPEECH_MODE);

View File

@ -1,6 +1,10 @@
#ifndef __IMAGE_H
#define __IMAGE_H
#ifndef XVT_INCL_XVT
#include <xvt.h>
#endif
#ifndef __OBJECT_H
#include <object.h>
#endif

View File

@ -140,7 +140,7 @@ bool __file_is_crypted(int logicnum)
return logicnum == LF_TURNI;
}
void __getfieldbuff(byte l, byte t, const char * recin, char *s, bool is_crypted)
void __getfieldbuff(byte l, byte t, const char * recin, TString& s, bool is_crypted)
{
CHECK(recin, "Can't read from a Null record");
@ -176,38 +176,27 @@ void __getfieldbuff(byte l, byte t, const char * recin, char *s, bool is_crypted
{
while(l > 0 && recin[l - 1] == ' ') l--;
if (l)
strncpy(s, recin, l);
s.strncpy(recin, l);
}
s[l] = '\0';
s.cut(l);
if (l)
{
if (t == _datefld)
{
TDate dt(s);
#ifdef _DEMO_
int y = dt.year();
if (y & 0x0001) y--;
y >>= 3;
y++;
y /= 10;
if (y >= 25)
{
int m = dt.month();
if (m > 3)
dt.set_month(rand() % 3 + 1);
}
#endif
strcpy(s, dt.string(full));
const TDate dt(s);
s = dt.string(full);
}
else
{
if (t == _boolfld)
{
const char ok = toupper(*s);
if (ok == 'T' || ok == 'Y' || ok == 'S' || ok == 'X')
strcpy(s,"X");
s = "X";
else
strcpy(s," ");
s.spaces(1);
}
}
}
}
@ -215,28 +204,28 @@ void __putfieldbuff(byte l, byte d, byte t, const char* s, char* recout, bool i
{
CHECK(recout, "Can't write null record" );
char s2[40];
TString80 s2;
if (t == _datefld)
{
if (s && *s && strlen(s) != 8)
{
const TDate dt(s);
sprintf(s2, "%ld", dt.date2ansi());
s = s2;
s2 << dt.date2ansi();
s = s2.get_buffer();
}
}
else
if (t == _boolfld)
{
strcpy(s2, (*s && strchr("1STXY", toupper(*s)) != NULL) ? "T" : "F");
s = s2;
s2 = (*s && strchr("1STXY", toupper(*s)) != NULL) ? "T" : "F";
s = s2.get_buffer();
}
else
if (t == _realfld)
{
real r(s);
strcpy(s2, r.string(l, d));
s = s2;
s2 = r.string(l, d);
s = s2.get_buffer();
}
int len = strlen(s);
@ -252,8 +241,8 @@ void __putfieldbuff(byte l, byte d, byte t, const char* s, char* recout, bool i
{
if (len == 0 || exceeded)
{
strcpy(s2, "0");
s = s2;
s2 = "0";
s = s2.get_buffer();
len = 1;
}
@ -2138,7 +2127,7 @@ int TSystemisamfile::update(
TRecnotype ni = 0L;
TFilename tmpfname; tmpfname.temp("tf");
err=DB_build((const char*) tmpfname, wrec.rec());
err=DB_build(tmpfname, wrec.rec());
if (err != NOERR)
{
@ -2165,7 +2154,7 @@ int TSystemisamfile::update(
TString s; s << TR("Aggiornamento") << ' ' << fname;
const TRecnotype nitems = items();
TProgind p(nitems > 0 ? nitems : 1, s, FALSE, TRUE, 70);
TProgind p(nitems > 0 ? nitems : 1, s, true, true);
TExtrectype nrec(wrec);
@ -2180,9 +2169,12 @@ int TSystemisamfile::update(
outfld.add(new TRecfield(nrec, fld_name), j);
}
for (first(); good(); next())
for (int errore = first(); errore == NOERR; errore = next())
{
p.addstatus(1);
if (!p.addstatus(1))
{
break;
}
ni++;
if (curr().isdeleted())
@ -2226,7 +2218,10 @@ int TSystemisamfile::update(
close();
prefix().close_isamfile(ishandle);
if (err!=NOERR) err=get_error(err);
if (err != NOERR)
err = get_error(err);
if (p.iscancelled())
err = _iseof;
p.setstatus(nitems);
}
@ -3625,7 +3620,7 @@ const TString& TRectype::get_str(const char* fieldname) const
if (nf != FIELDERR)
{
TString& tmp = get_tmp_string(fd.Len + (fd.TypeF == _datefld ? 2 : 0));
__getfieldbuff(fd.Len, fd.TypeF, _rec + fd.RecOff, tmp.get_buffer(), __file_is_crypted(num()));
__getfieldbuff(fd.Len, fd.TypeF, _rec + fd.RecOff, tmp, __file_is_crypted(num()));
return tmp;
}
else
@ -4081,7 +4076,7 @@ void TRecfield::set(int from, int to)
{
const RecDes* rd = _rec->rec_des();
_subfield = strchr(_name, ':');
_subfield = strchr(_name.get_buffer(), ':');
if (_subfield != NULL)
{
*_subfield = '\0';
@ -4135,7 +4130,7 @@ void TRecfield::set(int from, int to)
TRecfield::TRecfield(TRectype& rec, const char* name, int from, int to)
{
strcpy(_name, name);
_name = name;
_rec = &rec;
set(from, to);
}
@ -4172,8 +4167,7 @@ void TRecfield::put_subfield(const char* s)
int TRecfield::operator =(int i)
{
char buff[32];
sprintf(buff, "%d", i);
TString16 buff; buff << i;
if (_subfield == NULL)
__putfieldbuff( _len, _dec, _type, buff, _p, __file_is_crypted(_rec->num()));
else
@ -4185,20 +4179,18 @@ int TRecfield::operator =(int i)
long TRecfield::operator =(long l)
{
char buff[32];
sprintf(buff, "%ld", l);
TString16 buff; buff << l;
if (_subfield == NULL)
__putfieldbuff( _len, _dec, _type, buff, _p, __file_is_crypted(_rec->num()));
else
put_subfield(buff);
_rec->setempty(FALSE);
_rec->setempty(false);
return l;
}
const real& TRecfield::operator =(const real& r)
{
char buff[80];
strcpy(buff, r.string());
const char* buff = r.string();
if (_subfield == NULL)
__putfieldbuff( _len, _dec, _type, buff, _p, __file_is_crypted(_rec->num()));
else
@ -4208,9 +4200,8 @@ const real& TRecfield::operator =(const real& r)
}
const TDate& TRecfield::operator =(const TDate& d)
{
char buff[16];
strcpy(buff, (const char*)d);
{
const TString16 buff = d.stringa();
if (_subfield == NULL)
__putfieldbuff( _len, _dec, _type, buff, _p, __file_is_crypted(_rec->num()));
else
@ -4251,7 +4242,7 @@ void TRecfield::setptr(TRecnotype r)
if (n) *wp += 128;
}
void TRecfield::get_subfield(char* s) const
void TRecfield::get_subfield(TString& s) const
{
const TString& str = _rec->get(_name);
int p = str.find(_subfield);
@ -4266,21 +4257,23 @@ void TRecfield::get_subfield(char* s) const
e = p + _to;
p += _from;
if (p < e)
strcpy(s, str.sub(p, e));
else *s = '\0';
s = str.sub(p, e);
else
s.cut(0);
}
else *s = '\0';
else
s.cut(0);
}
TRecfield::operator int() const
{
char tmp[32];
TString16 tmp;
if (_subfield == NULL)
{
if (_type == _intfld || _type == _intzerofld || _type == _longfld || _type == _longzerofld)
{
strncpy(tmp, _p, _len);
tmp[_len] = '\0';
tmp.strncpy(_p, _len);
tmp.cut(_len);
}
else
__getfieldbuff( _len, _type, _p, tmp, __file_is_crypted(_rec->num()));
@ -4293,14 +4286,14 @@ TRecfield::operator int() const
TRecfield::operator long() const
{
char tmp[32];
TString16 tmp;
if (_subfield == NULL)
{
if (_type == _longfld || _type == _longzerofld || _type == _intfld || _type == _intzerofld)
{
strncpy(tmp, _p, _len);
tmp[_len] = '\0';
tmp.strncpy(_p, _len);
tmp.cut(_len);
}
else
__getfieldbuff( _len, _type, _p, tmp, __file_is_crypted(_rec->num()));
@ -4314,14 +4307,14 @@ TRecfield::operator long() const
TRecfield::operator const real() const
{
char tmp[32];
TString80 tmp;
if (_subfield == NULL)
{
if (_type == _realfld)
{
strncpy(tmp, _p, _len);
tmp[_len] = '\0';
tmp.strncpy(_p, _len);
tmp.cut(_len) = '\0';
}
else
__getfieldbuff( _len, _type, _p, tmp, __file_is_crypted(_rec->num()));
@ -4336,13 +4329,13 @@ TRecfield::operator const real() const
TRecfield::operator TDate() const
{
char tmp[16];
TString16 tmp;
if (_subfield == NULL)
{
if (_type == _datefld)
{
strncpy(tmp, _p, 8);
tmp.strncpy(_p, 8);
tmp[8] = '\0';
return TDate(atol(tmp));
}
@ -4364,10 +4357,10 @@ TRecfield::operator const char*() const
if (_type == _memofld)
return _rec->get(_name);
else
__getfieldbuff(_len, _type, _p, tmp.get_buffer(), __file_is_crypted(_rec->num()));
__getfieldbuff(_len, _type, _p, tmp, __file_is_crypted(_rec->num()));
}
else
get_subfield((char *) (const char *)tmp);
get_subfield(tmp);
return tmp;
}

View File

@ -768,7 +768,7 @@ class TRecfield : public TObject
// @access:(INTERNAL) Private Member
{
// @cmember:(INTERNAL) Nome del campo
char _name[32];
TString80 _name;
// @cmember:(INTERNAL) Puntatore a inizio record
TRectype* _rec;
// @cmember:(INTERNAL) Puntatore a inizio campo
@ -780,7 +780,7 @@ class TRecfield : public TObject
// @cmember:(INTERNAL) Tipo del campo
TFieldtypes _type;
// @cmember:(INTERNAL) Sottocampo (Es. G1:TOTDOC)
char * _subfield;
char* _subfield;
// @cmember:(INTERNAL) Da per i sottocampi (Es. G1:TOTDOC[2,3])
byte _from;
// @cmember:(INTERNAL) A per i sottocampi (Es. G1:TOTDOC[2,3])
@ -788,7 +788,7 @@ class TRecfield : public TObject
// @cmember:(INTERNAL) Setta il campo <p to>-esimo con i valori di <p from>-esimo
void set(int from, int to);
void get_subfield(char * s) const;
void get_subfield(TString& s) const;
void put_subfield(const char * s);
// @access Public Member

View File

@ -8,11 +8,11 @@
#include <execp.h>
#include <expr.h>
#include <msksheet.h>
#include <prefix.h>
//#include <prefix.h>
#include <recarray.h>
#include <recset.h>
#include <relapp.h>
#include <relation.h>
//#include <relation.h>
#include <sheet.h>
#include <tabutil.h>
#include <text.h>
@ -2579,11 +2579,9 @@ KEY TBrowse::run()
do_input(TRUE);
_cursor->read(_isgteq);
//const TLocalisamfile& f = _cursor->file();
//TString caption(prefix().description(f.name()));
TString caption(_cursor->file().description());
if (!isalnum(caption[0]))
caption = "Selezione";
TString caption = _cursor->file().description();
if (caption.blank())
caption = TR("Selezione");
KEY k = K_ESC;
long selected = 0;

View File

@ -202,12 +202,14 @@ bool TPostman::dispatch_transaction(const TRectype& rec,
TString16 subject;
switch (rec.num())
{
case LF_TAB:
case LF_TABCOM:
case LF_TABGEN:
subject << rec.get("COD"); break;
default:
subject << rec.num();
case LF_TAB:
case LF_TABCOM:
case LF_TABGEN:
subject << rec.get("COD");
break;
default:
subject << rec.num();
break;
}
msg.set_subject(subject);

View File

@ -297,12 +297,11 @@ int TFile_info::open_low(bool exclusive, bool index)
{
if (num() < LF_EXTERNAL && (_dir == _nordir || _dir == _comdir))
{
TRecnotype n = DB_reccount(_handle);
TDir d;
d.get(num(),_nolock,_dir,_sysdirop);
const TRecnotype n = DB_reccount(_handle);
TDir d; d.get(num(),_nolock,_dir,_sysdirop);
_filedes.EOD = d.eod() = n;
_filedes.EOX = d.eox() = n;
d.put(num(),_dir,_sysdirop);
_filedes.EOX = d.eox() = n;
d.put(num(), _dir, _sysdirop);
}
if (index)
@ -428,6 +427,7 @@ const TFilename& TFile_info::load_filedes()
else
_dir = _nordir;
COpenFile(num(), &_filedes, _nolock, _dir);
strncpy(_filedes.Des, dictionary_translate(_filedes.Des), sizeof(_filedes.Des));
_name = _filedes.SysName;
strncpy(_filedes.Des, dictionary_translate(_filedes.Des), sizeof(_filedes.Des));
}
@ -444,7 +444,7 @@ TFile_info::TFile_info(int logicnum, TFilename& name)
if (logicnum < LF_EXTERNAL)
{
load_filedes();
if (name.not_empty())
if (name.full())
{
// File dati temporaneo
_dir = _extdir;
@ -813,7 +813,7 @@ bool TFirm::read(long cod)
TLocalisamfile ditte(LF_NDITTE);
if (cod > 0L)
{
ditte.put("CODDITTA", cod);
ditte.put(NDT_CODDITTA, cod);
err = ditte.read();
}
else
@ -1037,7 +1037,6 @@ bool TPrefix::test(long codditta) const
return test(s);
}
long TPrefix::get_codditta() const
{
const long codditta = atol(_prefix);
@ -1152,15 +1151,14 @@ const TFirm& TPrefix::firm()
return *_firm;
}
// Certified 90%
// @doc EXTERNAL
// @func Converte il numero di una ditta nella sua directory dati
//
// @rdesc Restituisce il nome di una directory dati
const char* firm2dir(
long codditta) // @parm Codice ditta da convertire
// @parm Codice ditta da convertire
const char* firm2dir(long codditta)
{
TString8 firm;
switch (codditta)

View File

@ -465,7 +465,7 @@ TPrint_txt_info::TPrint_txt_info(TTextfile& txt)
{
const word ps = printer().formlen();
const long li = txt.lines();
_lastpage = (li+ps-1) / ps;
_lastpage = word((li+ps-1) / ps);
}
// @cmember Ritorna vero se la stampante e' generica/solo testo

View File

@ -147,15 +147,16 @@ void TIndwin::update_bar()
const WINDOW w = win();
RCT b = r;
// Rettangolo scavato
xi_draw_3d_rect((XinWindow)w, (XinRect*)&b, TRUE, 2,
const int thick = 1;
xi_draw_3d_rect((XinWindow)w, (XinRect*)&b, TRUE, thick,
MASK_LIGHT_COLOR, MASK_BACK_COLOR, MASK_DARK_COLOR);
b.left += 2; b.right -= 2;
b.top += 2; b.bottom -= 2;
xvt_rect_inflate(&b, -thick, -thick);
b.right = b.left + int((b.right-b.left)*prc + 0.5);
const int lasti = (b.bottom-b.top)/2;
for (int i = 0; i <= lasti; i++)
{
/*
set_pen(blend_colors(FOCUS_BACK_COLOR, MASK_BACK_COLOR, double(i) / double(lasti)));
PNT pt = { b.top+i, b.left };
xvt_dwin_draw_set_pos(w, pt);
@ -167,6 +168,12 @@ void TIndwin::update_bar()
xvt_dwin_draw_set_pos(w, pt);
pt.h = b.right;
xvt_dwin_draw_line(w, pt);
*/
const short cy = b.top + (b.bottom-b.top)/4;
RCT g = b; g.bottom = cy;
xvt_dwin_draw_gradient_linear(w, &g, BTN_LIGHT_COLOR, BTN_BACK_COLOR, 90);
g = b; g.top = cy;
xvt_dwin_draw_gradient_linear(w, &g, BTN_DARK_COLOR, BTN_LIGHT_COLOR, 90);
}
if (prc > 0)

View File

@ -120,7 +120,7 @@ TRectype& TRecord_array::row(
{
r = (TRectype*)key().dup(); // Crea nuovo record copiando la chiave
n = _data.add(r, i) + _offset; // Riassegna n se era negativo!
char str[16]; sprintf(str, "%d", n);
TString16 str; str << n;
r->renum_key(_num, str); // Aggiorna campo numero riga
}
CHECKD(r && n > 0, "Bad record number ", n);
@ -186,13 +186,12 @@ int TRecord_array::insert_row(TRectype* r)
const bool shift = exist(nr);
_data.insert(r, nr);
if (shift)
{
{
TString16 n;
for (int f = _data.last(); f > nr; f = _data.pred(f))
{
char n[16];
TRectype & rec = row(f, FALSE);
sprintf(n, "%ld", (long)_offset + f);
TRectype& rec = row(f, FALSE);
n.format("%ld", (long)_offset + f);
rec.renum_key(_num, n);
}
}
@ -725,10 +724,11 @@ const TString& TDecoder::decode(long code)
{
char c[16];
if (code > 0)
sprintf(c, "%ld", code);
else
c[0] = '\0';
return decode(c);
{
TString16 c; c << code;
return decode(c);
}
return EMPTY_STRING;
}
///////////////////////////////////////////////////////////

View File

@ -16,8 +16,10 @@
struct TRecordset_column_info : public TObject
{
TString _name; // Table.Column
int _width;
int _width, _pos;
TFieldtypes _type;
TRecordset_column_info() : _width(0), _pos(0), _type(_alfafld) {}
};
///////////////////////////////////////////////////////////

View File

@ -952,7 +952,7 @@ FILE* TCursor::open_index(
_last_created = create;
if (_indexname.empty())
{
TString16 radix;
TString8 radix;
radix.format("c%d_", file().num());
_indexname.temp(radix);
}
@ -1851,7 +1851,8 @@ TRecnotype TSorted_cursor::buildcursor(TRecnotype rp)
{
El_To_Sort Element;
fill_sort_key(Element.f);
TFixed_string f(Element.f, sizeof(Element.f));
fill_sort_key(f);
Element.p=recno;
sort.sort((char *) &Element);
if (TCursor::pos() < 0 && recno == rp)
@ -1894,11 +1895,11 @@ TRecnotype TSorted_cursor::buildcursor(TRecnotype rp)
return ap;
}
const char* TSorted_cursor::fill_sort_key(char* k)
const char* TSorted_cursor::fill_sort_key(TString& k)
{
TString16 fmt;
TString sf;
*k = '\0';
k.cut(0);
for (TString80 s = _order_expr.get(0); s.not_empty(); s = _order_expr.get())
{
const bool is_up = is_upper(s);
@ -1920,7 +1921,7 @@ const char* TSorted_cursor::fill_sort_key(char* k)
fmt.format("%%-%ds",f.len(frec));
else
fmt.format("%%%ds",f.len(frec));
strcat(k, format(fmt, (const char*)sf));
k << format(fmt, (const char*)sf);
}
return k;
}
@ -1941,7 +1942,7 @@ bool TSorted_cursor::changed()
TRecnotype TSorted_cursor::read(TIsamop op, TReclock lockop)
{
TString256 searching; fill_sort_key(searching.get_buffer());
TString256 searching; fill_sort_key(searching);
searching.rtrim();
const int cmplen = searching.len();
@ -1967,7 +1968,7 @@ TRecnotype TSorted_cursor::read(TIsamop op, TReclock lockop)
{
const TRecnotype test = (first+last)/2;
TCursor::operator=(test);
fill_sort_key(testing.get_buffer());
fill_sort_key(testing);
const int cmp = searching.compare(testing, cmplen);
if (cmp == 0)
{

View File

@ -484,7 +484,7 @@ protected:
// @cmember Controlla se la singola espressione contiene l'operatore UPPER(), ritornandone l'argomento
bool is_upper(TString& s);
// @cmember Costruisce una stringa con la chiave di sort del record corrente
const char* fill_sort_key(char* k);
const char* fill_sort_key(TString& k);
// @cmember Costruisce il cursore a partire dal record (vedi <c TCursor>)
virtual TRecnotype buildcursor(TRecnotype rp);

View File

@ -327,7 +327,7 @@ void TPrint_preview_window::update()
for (int i = 1; lpi > 0; i++)
{
set_pen(i%lpi ? MAKE_COLOR(232,232,255) : MAKE_COLOR(255,192,255));
const short y = i * res.y / lpi;
const short y = short(i * res.y / lpi);
if (y > size.y)
break;
line(0, y, (short)size.x, y);
@ -336,7 +336,7 @@ void TPrint_preview_window::update()
for (int j = 1; cpi > 0; j++)
{
set_pen(j%10 ? MAKE_COLOR(232,232,255) : MAKE_COLOR(255,192,255));
const short x = j * res.x / cpi;
const short x = short(j * res.x / cpi);
if (x > size.x)
break;
line(x, 0, x, (short)size.y);
@ -656,7 +656,7 @@ bool TPreview_mask::on_field_event(TOperable_field& o, TField_event e, long joll
switch (o.dlg())
{
case DLG_FIRSTREC: idm = POPUP_FIRST; break;
case DLG_PREVREC : idm = POPUP_FIRST; break;
case DLG_PREVREC : idm = POPUP_PREV; break;
case DLG_FINDREC : idm = POPUP_SEARCH; break;
case DLG_NEXTREC : idm = POPUP_NEXT; break;
case DLG_LASTREC : idm = POPUP_LAST; break;
@ -752,8 +752,8 @@ public:
PNT TWindow_printer::log2dev(long x, long y) const
{
PNT ptdev;
ptdev.h = (x * _phr) / BOOKDPI;
ptdev.v = (y * _pvr) / BOOKDPI;
ptdev.h = short((x * _phr) / BOOKDPI);
ptdev.v = short((y * _pvr) / BOOKDPI);
return ptdev;
}
@ -1302,14 +1302,10 @@ bool TBook::print_page(TWindow& win, size_t page)
{
xvt_dwin_set_clip(w, &rct);
} else
if (str.starts_with("</clip"))
{
xvt_dwin_set_clip(w, NULL);
} else
if (str == "<ellipse/>")
{
xvt_dwin_draw_oval(w, &rct);

View File

@ -1,8 +1,7 @@
#define __SMARTCARD_CPP
#ifdef WIN32
#include <windows.h>
#endif
#define XVT_INCL_NATIVE
#include <xvt.h>
#include <config.h>
#include <diction.h>
@ -11,7 +10,6 @@
#include <tabutil.h>
#include <utility.h>
#ifdef WIN32
#include <ase/include/ASEMemCard.h>

View File

@ -111,6 +111,7 @@ public:
virtual TRecnotype new_rec(const char* buf = NULL);
virtual bool set(const char* column, const TVariant& var);
virtual unsigned int columns() const;
virtual const TRecordset_column_info& column_info(const char* colunmn) const;
virtual const TVariant& get(const char* colunmn) const;

View File

@ -351,12 +351,11 @@ bool TViswin::adjust_box (
// @flag TRUE | Se ha constatato la corrispondenza
// @flag FALSE | Se non ha constatato la corrispondenza
bool TViswin::check_link (
TPoint * p) // @parm Posizione del cursore (default NULL)
TPoint* p) // @parm Posizione del cursore (default NULL)
// @comm Se <p p> e' NULL indica la posizione corrente del cursore
{
static char descr[128], pdescr[128];
static int old_id = -1, plinkID = -1;
static long y, x1, x2;
static long py, px1, px2;
@ -396,8 +395,7 @@ bool TViswin::check_link (
erase_link (y, x1, x2);
TToken_string & ttt = (TToken_string &) (*_links)[id];
ttt.restart ();
strcpy (descr, ttt.get ());
// strcat (descr, t.get (3));
_descr = ttt.get ();
_linktxt = t.get(3);
if (_multiple)
{
@ -413,23 +411,22 @@ bool TViswin::check_link (
if (_txt.get_foreground() == fg && _txt.get_background() == bg)
{
_multiple_link.add (cp);
strcat(descr, " ");
strcat(descr, cp);
_descr << ' ' << cp;
}
}
}
else
strcat(descr, _linktxt);
_descr << _linktxt;
old_id = _linkID = id;
y = ty;
x1 = tx1;
x2 = tx2;
display_link (y, x1, x2, descr);
display_link (y, x1, x2, _descr);
}
if (p == &_point)
{
strcpy (pdescr, descr);
_pdescr = _descr;
plinkID = id;
px1 = x1;
px2 = x2;
@ -454,8 +451,8 @@ bool TViswin::check_link (
x1 = px1;
x2 = px2;
y = py;
strcpy (descr, pdescr);
display_link (y, x1, x2, descr);
_descr = _pdescr;
display_link (y, x1, x2, _descr);
return TRUE;
}

View File

@ -123,6 +123,7 @@ class TViswin : public TField_window
TArray* _links;
// @cmember:(INTERNAL) Array di segnalibri
TArray* _bookmarks;
TString _descr, _pdescr;
// @cmember:(INTERNAL) Indica se occorre ridisegnare la selezione
bool need_paint_sel(bool smart = TRUE);