Patch level : 2003 578

Files correlati     : ef0.exe
Ricompilazione Demo : [ ]
Commento            :

Correzioni necessarie per errori sul modulo effetti: GF20082


git-svn-id: svn://10.65.10.50/trunk@11431 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2003-09-23 14:47:55 +00:00
parent c5aae552a6
commit 6bcb3fddc6
8 changed files with 89 additions and 49 deletions

@ -733,19 +733,19 @@ void TApplication::run(
if (sn < 0)
{
error_box(TR("Probabilmente non e' stata inserita la chiave di protezione"));
error_box(TR("Probabilmente non e' inserita la chiave di protezione\noppure mancano i relativi driver."));
return;
}
if (!test_assistance_year())
{
error_box(TR("Probabilmente e' necessario attivare il contratto di assistenza"));
error_box(TR("Probabilmente e' necessario attivare il contratto di assistenza per l'anno in corso"));
return;
}
set_perms();
const TFixed_string mod(get_module_name());
if (mod.empty())
const char* mod = get_module_name();
if (mod == NULL || *mod == '\0')
return;
XVT_CONFIG cfg;

@ -327,7 +327,7 @@ bool TDongle::hardlock_login(bool test_all_keys)
{
_year_assist = data[0];
_max_users = data[1];
const long& giulio = (const long&)data[2];
const long giulio = *((const long*)&data[2]);
const long yyyymmdd = _last_update.julian2date(giulio);
_last_update = yyyymmdd;
}
@ -663,7 +663,7 @@ bool TDongle::burn_hardlock()
return error_box("On Line Assistance error.");
if (data[1] == 0 || data[1] >= 10000)
return error_box("Bad users number.");
const long& val = (const long&)data[2];
const long val = *((const long*)&data[2]);
const long yyyymmdd = today.julian2date(val);
const TDate date(yyyymmdd);
if (date > today)
@ -672,8 +672,8 @@ bool TDongle::burn_hardlock()
data[0] = _year_assist;
data[1] = _max_users;
long& val = (long&)data[2];
val = today.date2julian();
long* val = (long*)&data[2];
*val = today.date2julian();
garble(data);
write_words(60, 4, data);
_last_update = today;

@ -3984,31 +3984,42 @@ bool TForm::validate(TForm_item &cf, TToken_string &s)
pagetype pt;
char sec;
TLocalisamfile *file;
TString f_code(s.get()); // prende il codice del file da leggere
if (atoi(f_code) != 0) file= new TLocalisamfile(atoi(f_code)); // se il codice è numerico allora è un file
else file= new TTable(f_code); // altrimenti è una tabella
const TString f_code(s.get()); // prende il codice del file da leggere
if (atoi(f_code) != 0)
file= new TLocalisamfile(atoi(f_code)); // se il codice è numerico allora è un file
else
file= new TTable(f_code); // altrimenti è una tabella
file->zero(); // vuota il record corrente del file
TToken_string in(s.get(), '!');
for (i=0; i<in.items(); i++)
{ // scansione sugli elementi dell'input
TString curr(in.get(i));
poseq= curr.find("=="); // divide la stringa corrente in lvalue e rvalue
if (poseq== -1)
{
poseq= curr.find('=');
if (poseq != -1) posrv= poseq+1;
}
else
posrv= poseq+2;
TString fld(curr.left(poseq)); // preleva il nome del campo del file alla sinistra dell'uguale
TString expr(curr.mid(posrv)); // preleva l'espressione di assegnamento alla destra dell'uguale
TExpression rval(expr, _strexpr);
const TString& curr = in.get(i);
poseq= curr.find('='); // divide la stringa corrente in lvalue e rvalue
posrv = poseq+1;
if (curr[posrv] == '=')
posrv++;
const TString16 fld(curr.left(poseq)); // preleva il nome del campo del file alla sinistra dell'uguale
TExpression rval(curr.mid(posrv), _strexpr); // preleva l'espressione di assegnamento alla destra dell'uguale
TString16 var;
for (j=0; j<rval.numvar(); j++)
{ // scansione delle variabili dell'espressione di rvalue
TString var= rval.varname(j);
if (var[0]=='#') var.ltrim(1); // rimuove dalla stringa il primo carattere
TForm_item &fi= cf.find_field(var);
rval.setvar(j, fi.get()); // il valore corrente del campo viene settato nell'espressione
var = rval.varname(j);
const bool is_form_field = var[0]=='#' || // #3
(isdigit(var[0]) && var.find("->")<0) || // 3
(isalpha(var[0]) && var.find("->")>0); // BO->3
if (is_form_field) // E' un campo del form
{
if (var[0] == '#')
var.ltrim(1);
TForm_item &fi= cf.find_field(var);
rval.setvar(j, fi.get()); // il valore corrente del campo viene settato nell'espressione
}
else // E' un campo della relazione
{
TFieldref fr(var, 0); // CODCF oppure 33->CODCF
rval.setvar(j, fr.read(*relation())); // il valore corrente del campo viene settato nell'espressione
}
}
file->put(fld, rval.as_string()); // scrive il risultato dell'espressione nel campo del file
}

@ -4865,6 +4865,7 @@ void TField_window::update()
MASK_LIGHT_COLOR, MASK_BACK_COLOR, MASK_DARK_COLOR);
}
xvt_dwin_clear(me, NORMAL_BACK_COLOR);
set_font();
}
TField_window::TField_window(int x, int y, int dx, int dy, WINDOW parent, TWindowed_field* owner)
@ -4873,7 +4874,6 @@ TField_window::TField_window(int x, int y, int dx, int dy, WINDOW parent, TWindo
if (owner)
{
create(x, y, dx, dy, "", WSF_HSCROLL | WSF_VSCROLL, W_PLAIN, parent);
set_font();
activate(owner->enabled());
if (owner->shown())
open();

@ -132,12 +132,13 @@ void TIndwin::update_bar()
// Rettangolo contenente l'intera barra
RCT r; get_bar_rct(r);
RCT b = r;
const WINDOW w = win();
set_font();
if (ADVANCED_GRAPHICS)
{
const WINDOW w = win();
RCT b = r;
// Rettangolo scavato
xi_draw_3d_rect((XinWindow)w, (XinRect*)&r, TRUE, 2,
xi_draw_3d_rect((XinWindow)w, (XinRect*)&b, TRUE, 2,
MASK_LIGHT_COLOR, MASK_BACK_COLOR, MASK_DARK_COLOR);
b.left += 2; b.right -= 2;
b.top += 2; b.bottom -= 2;
@ -185,16 +186,17 @@ void TIndwin::update_bar()
else
{
// Rettangolo in rilievo
RCT b = r;
b.right = b.left + int((r.right-r.left)*prc);
xi_draw_3d_rect((XinWindow)w, (XinRect*)&b, FALSE, 2,
xi_draw_3d_rect((XinWindow)win(), (XinRect*)&b, FALSE, 2,
BTN_LIGHT_COLOR, BTN_BACK_COLOR, BTN_DARK_COLOR);
// Rettangolo scavato
b.left = b.right; b.right = r.right;
xi_draw_3d_rect((XinWindow)w, (XinRect*)&b, TRUE, 2,
xi_draw_3d_rect((XinWindow)win(), (XinRect*)&b, TRUE, 2,
BTN_LIGHT_COLOR, BTN_BACK_COLOR, BTN_DARK_COLOR);
char n[8]; sprintf(n, "%d%%", int(prc * 100.0 + 0.5));
xvt_dwin_draw_text(w, r.left+r.right/2-CHARX, (r.bottom+r.top+CHARY)/2-3, n, -1);
xvt_dwin_draw_text(win(), r.left+r.right/2-CHARX, (r.bottom+r.top+CHARY)/2-3, n, -1);
}
check_stop();

@ -21,14 +21,19 @@ TRelation_application::TRelation_application()
TRelation_application::~TRelation_application()
{ }
TCursor& TRelation_application::get_filtered_cursor() const
{
TEdit_field& f = get_search_field();
TCursor* cur = f.browse()->cursor();
return *cur;
}
void TRelation_application::setkey()
{
if (has_filtered_cursor())
{
TEdit_field& f = get_search_field();
TCursor* cur = f.browse()->cursor();
cur->setkey();
return;
get_filtered_cursor().setkey();
return; // ?????
}
file().setkey(1);
}
@ -81,7 +86,6 @@ void TRelation_application::set_limits(
if (has_filtered_cursor())
{
TEdit_field& f = get_search_field();
TBrowse* b = f.browse();
TCursor* cur = b != NULL ? b->cursor() : NULL;
if (cur)
@ -1387,11 +1391,31 @@ void TRelation_application::main_loop()
break;
case K_NEXT:
err = file().reread();
err = file().next(_testandlock);
if (has_filtered_cursor())
{
TCursor& cur = get_filtered_cursor();
cur.curr() = file().curr();
cur.read();
++cur;
file().curr() = cur.curr();
err = get_relation()->read(_isequal, _testandlock);
}
else
err = file().next(_testandlock);
break;
case K_PREV:
err = file().reread();
err = file().prev(_testandlock);
file().reread();
if (has_filtered_cursor())
{
TCursor& cur = get_filtered_cursor();
cur.curr() = file().curr();
cur.read();
--cur;
file().curr() = cur.curr();
err = get_relation()->read(_isequal, _testandlock);
}
else
err = file().prev(_testandlock);
break;
case K_END:
err = file().readat(_last, _testandlock);

@ -104,6 +104,7 @@ private:
// @cmember:(INTERNAL) Controlla se il <c TCursor> ha un filtro
virtual bool has_filtered_cursor() const
{ return filtered(); }
virtual TCursor& get_filtered_cursor() const;
// @cmember:(INTERNAL) Sistema il bottone ricerca se necessario
void set_find_button();

@ -273,7 +273,7 @@ WINDOW cur_win()
{
WINDOW win = NULL_WIN;
TWindow* w = WinManager.cur_win();
if (w)
if (w != NULL)
{
win = w->win();
if (!is_valid_window(w->win()))
@ -390,11 +390,13 @@ void TWindow::close()
void TWindow::close_modal()
{
CHECK(is_modal(), "Can't modal-close a non-modal window");
WinManager.unreg(this);
close();
_open = FALSE;
set_modal(FALSE);
if (is_modal())
{
WinManager.unreg(this);
close();
_open = FALSE;
set_modal(FALSE);
}
}
bool TWindow::stop_run(KEY key)
@ -437,7 +439,7 @@ KEY TWindow::run()
xvt_sys_sleep(50);
}
if (!was_open && is_open())
if (!was_open)
close_modal();
do_events();