Patch level : 4.0
Files correlati : ve2 Ricompilazione Demo : [ ] Commento : Corretta gestione codici articoli avanzati git-svn-id: svn://10.65.10.50/trunk@15451 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
8208cb6728
commit
aa1d73d431
@ -37,22 +37,43 @@ static const TRectype& get_sublevel_info(const TString& code)
|
|||||||
|
|
||||||
class TCodart_mask : public TAutomask
|
class TCodart_mask : public TAutomask
|
||||||
{
|
{
|
||||||
|
static TString4 _restart;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||||
void create_level(int level, const TString& subcode);
|
void create_level(int level, const TString& subcode);
|
||||||
void rebuild();
|
void build_children();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
bool restart() const { return _restart.full(); }
|
||||||
|
|
||||||
TCodart_mask();
|
TCodart_mask();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
TString4 TCodart_mask::_restart;
|
||||||
|
|
||||||
bool TCodart_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
bool TCodart_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||||
{
|
{
|
||||||
switch (o.dlg())
|
switch (o.dlg())
|
||||||
{
|
{
|
||||||
case 101:
|
case 101:
|
||||||
|
if (e == fe_init && restart())
|
||||||
|
{
|
||||||
|
o.set(_restart);
|
||||||
|
_restart.cut(0);
|
||||||
|
o.check(STARTING_CHECK);
|
||||||
|
e = fe_modify;
|
||||||
|
}
|
||||||
if (e == fe_modify) // Se cambio il contenuto del primo livello ...
|
if (e == fe_modify) // Se cambio il contenuto del primo livello ...
|
||||||
rebuild(); // Ricostruisco la maschera
|
{
|
||||||
|
if (id2pos(102) < 0)
|
||||||
|
build_children(); // Ricostruisco la maschera
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_restart = o.get();
|
||||||
|
stop_run(K_FORCE_CLOSE);
|
||||||
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
@ -66,7 +87,7 @@ void TCodart_mask::create_level(int level, const TString& subcode)
|
|||||||
if (!fsa.empty())
|
if (!fsa.empty())
|
||||||
{
|
{
|
||||||
const TString4 code = fsa.get("CODTAB"); // Puo' essere diverso da subcode!
|
const TString4 code = fsa.get("CODTAB"); // Puo' essere diverso da subcode!
|
||||||
TString80 prompt = fsa.get("S0"); prompt.left_just(21);
|
TString80 prompt = fsa.get("S0"); prompt.left_just(30);
|
||||||
const TString& picture = fsa.get("S1");
|
const TString& picture = fsa.get("S1");
|
||||||
const int length = picture.len();
|
const int length = picture.len();
|
||||||
|
|
||||||
@ -101,17 +122,14 @@ void TCodart_mask::create_level(int level, const TString& subcode)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void TCodart_mask::rebuild()
|
void TCodart_mask::build_children()
|
||||||
{
|
{
|
||||||
TArray& a = fields_array();
|
TArray& a = fields_array();
|
||||||
int i = 0;
|
|
||||||
for (i = a.last(); i > 3; i--)
|
|
||||||
a.destroy(i);
|
|
||||||
|
|
||||||
TString8 code = root_code();
|
TString8 code = root_code();
|
||||||
code << get(101);
|
code << get(101);
|
||||||
const TString& children = cache().get("GSA", code, "S1");
|
const TString& children = cache().get("GSA", code, "S1");
|
||||||
for (i = 0; i < 8; i++)
|
for (int i = 0; i < 8; i++)
|
||||||
{
|
{
|
||||||
const TString& subcode = children.mid(i*3, 3);
|
const TString& subcode = children.mid(i*3, 3);
|
||||||
if (subcode.full())
|
if (subcode.full())
|
||||||
@ -131,9 +149,13 @@ TCodart_mask::TCodart_mask() : TAutomask(TR("Articolo guidato"), 1, 78, 13)
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool advanced_get_codart(TString& code, TString& desc)
|
bool advanced_get_codart(TString& code, TString& desc)
|
||||||
|
{
|
||||||
|
bool ok = false;
|
||||||
|
bool running = true;
|
||||||
|
while (running)
|
||||||
{
|
{
|
||||||
TCodart_mask m;
|
TCodart_mask m;
|
||||||
const bool ok = m.run() == K_ENTER;
|
ok = m.run() == K_ENTER;
|
||||||
if (ok)
|
if (ok)
|
||||||
{
|
{
|
||||||
code.cut(0);
|
code.cut(0);
|
||||||
@ -145,6 +167,10 @@ bool advanced_get_codart(TString& code, TString& desc)
|
|||||||
desc << ' ';
|
desc << ' ';
|
||||||
desc << m.get(id+100);
|
desc << m.get(id+100);
|
||||||
}
|
}
|
||||||
|
running = false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
running = m.restart();
|
||||||
}
|
}
|
||||||
return ok;
|
return ok;
|
||||||
}
|
}
|
||||||
@ -168,6 +194,7 @@ bool advanced_codart_handler(TMask_field& fld, KEY key)
|
|||||||
TMask& msk = fld.mask();
|
TMask& msk = fld.mask();
|
||||||
msk.set(F_DESCR, desc);
|
msk.set(F_DESCR, desc);
|
||||||
msk.set(F_CODART, code, true);
|
msk.set(F_CODART, code, true);
|
||||||
|
msk.field(F_CODART).set_focus();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user