Modificato l'editor in modo che richieda il profilo alla fine di ogni
sessione di editing: aggiunta la voce a menu che automaticamente chiama la ask_profile(). Percio' e' stata spostata tutta la regione di codice che richiedeva il profilo. In piu' tale maschera di richiesta puo' essere impostata dall'applicazione (membro _m), poiche' nell'editor dei profili EC e' diversa. Modificata anche la edit(), in modo che funzioni in simbiosi col resto del programma. git-svn-id: svn://10.65.10.50/trunk@2037 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
387fe9f9dd
commit
068c94d649
132
ba/ba2100.cpp
132
ba/ba2100.cpp
@ -2,7 +2,7 @@
|
|||||||
#include "ba2100.h"
|
#include "ba2100.h"
|
||||||
|
|
||||||
|
|
||||||
TForm_editor::TForm_editor() : _form(NULL), _extra(FALSE)
|
TForm_editor::TForm_editor() : _form(NULL), _extra(FALSE), _m(NULL)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
TForm_editor::~TForm_editor()
|
TForm_editor::~TForm_editor()
|
||||||
@ -30,81 +30,31 @@ bool TForm_editor::create()
|
|||||||
code = atol(argv(a));
|
code = atol(argv(a));
|
||||||
}
|
}
|
||||||
|
|
||||||
bool go = FALSE;
|
enable_menu_item(M_FILE_PRINT);
|
||||||
|
|
||||||
if ((form && code) || (form && code == 0 && _extra))
|
if ((form && code) || (form && code == 0 && _extra))
|
||||||
{
|
{
|
||||||
_form = new TForm(form, (code!=0) ? format("%05ld",code) : "", _extra ? 2 : 1);
|
_form = new TForm(form, (code!=0) ? format("%05ld",code) : "", _extra ? 2 : 1);
|
||||||
enable_menu_item(M_FILE_PRINT);
|
if (!_extra) dispatch_e_menu(MENU_ITEM(13));
|
||||||
if (!_extra) dispatch_e_menu(MENU_ITEM(31));
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
dispatch_e_menu(MENU_ITEM(13));
|
||||||
TMask m("ba2100b");
|
|
||||||
|
|
||||||
m.set_handler(F_CODE, cod_handler);
|
_m = new TMask("ba2100b");
|
||||||
if (form)
|
if (form)
|
||||||
{
|
{
|
||||||
m.set(F_BASE, form);
|
_m->set(F_BASE, form);
|
||||||
m.disable(F_BASE);
|
_m->disable(F_BASE);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (code) m.set(F_CODE, code);
|
if (code) _m->set(F_CODE, code);
|
||||||
|
|
||||||
// choose form from mask
|
return TRUE;
|
||||||
KEY k;
|
|
||||||
while ((k = m.run()) != K_QUIT)
|
|
||||||
{
|
|
||||||
TString16 fform = m.get(F_BASE);
|
|
||||||
TString80 fdesc = m.get(F_DESC);
|
|
||||||
long fcode = m.get_long(F_CODE);
|
|
||||||
|
|
||||||
if (k == K_ENTER)
|
|
||||||
{
|
|
||||||
_form = new TForm(fform, (fcode!=0) ? format("%05ld",fcode) : "", _extra ? 2 :1, fdesc);
|
|
||||||
form = fform;
|
|
||||||
go = TRUE;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
else if (k == K_DEL)
|
|
||||||
{
|
|
||||||
if (yesno_box("Confermare la cancellazione del profilo %05ld", fcode))
|
|
||||||
{
|
|
||||||
TLocalisamfile frm(LF_FORM);
|
|
||||||
frm.zero();
|
|
||||||
frm.put("TIPOPROF", fform);
|
|
||||||
frm.put("CODPROF", format("%05ld",fcode));
|
|
||||||
if (frm.read() == NOERR)
|
|
||||||
frm.remove();
|
|
||||||
TLocalisamfile rfr(LF_RFORM);
|
|
||||||
rfr.zero();
|
|
||||||
rfr.put("TIPOPROF", fform);
|
|
||||||
rfr.put("CODPROF", format("%05ld",fcode));
|
|
||||||
if (rfr.read() == NOERR)
|
|
||||||
{
|
|
||||||
for ( ; atol(rfr.get("CODPROF")) == fcode && rfr.get("TIPOPROF") == fform; rfr.next())
|
|
||||||
rfr.remove();
|
|
||||||
}
|
|
||||||
m.set(F_CODE,"");
|
|
||||||
m.set(F_BASE,"");
|
|
||||||
m.set(F_DESC,"");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (go)
|
|
||||||
{
|
|
||||||
enable_menu_item(M_FILE_PRINT);
|
|
||||||
if (!_extra) dispatch_e_menu(MENU_ITEM(31));
|
|
||||||
}
|
|
||||||
|
|
||||||
return form != NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TForm_editor::destroy()
|
bool TForm_editor::destroy()
|
||||||
{
|
{
|
||||||
if (_form) delete _form;
|
if (_form) delete _form;
|
||||||
|
if (_m) delete _m;
|
||||||
return TApplication::destroy();
|
return TApplication::destroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -113,6 +63,7 @@ bool TForm_editor::menu(MENU_TAG tag)
|
|||||||
{
|
{
|
||||||
char sec = 'B';
|
char sec = 'B';
|
||||||
pagetype pt = odd_page;
|
pagetype pt = odd_page;
|
||||||
|
bool quit = FALSE;
|
||||||
|
|
||||||
switch(tag)
|
switch(tag)
|
||||||
{
|
{
|
||||||
@ -120,6 +71,9 @@ bool TForm_editor::menu(MENU_TAG tag)
|
|||||||
sec = 'R'; pt = odd_page; break;
|
sec = 'R'; pt = odd_page; break;
|
||||||
case MENU_ITEM(12):
|
case MENU_ITEM(12):
|
||||||
sec = 'D'; pt = odd_page; break;
|
sec = 'D'; pt = odd_page; break;
|
||||||
|
case MENU_ITEM(13):
|
||||||
|
quit = ask_profile();
|
||||||
|
sec = 'B'; pt = odd_page; break;
|
||||||
case MENU_ITEM(21):
|
case MENU_ITEM(21):
|
||||||
sec = 'H'; pt = odd_page; break;
|
sec = 'H'; pt = odd_page; break;
|
||||||
case MENU_ITEM(22):
|
case MENU_ITEM(22):
|
||||||
@ -156,8 +110,8 @@ bool TForm_editor::menu(MENU_TAG tag)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
edit(sec, pt);
|
if (!quit) edit(sec, pt);
|
||||||
return _extra;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TForm_editor::print()
|
void TForm_editor::print()
|
||||||
@ -338,6 +292,7 @@ bool TForm_editor::edit(char s, pagetype t)
|
|||||||
_form->write_profile();
|
_form->write_profile();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!_extra) dispatch_e_menu(MENU_ITEM(13));
|
||||||
return dirty;
|
return dirty;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -397,6 +352,59 @@ bool TForm_editor::form_config() const
|
|||||||
return ok;
|
return ok;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool TForm_editor::ask_profile()
|
||||||
|
{
|
||||||
|
|
||||||
|
_m->set_handler(F_CODE, cod_handler);
|
||||||
|
|
||||||
|
// choose form from mask
|
||||||
|
KEY k;
|
||||||
|
while ((k = _m->run()) != K_QUIT)
|
||||||
|
{
|
||||||
|
TString16 fform = _m->get(F_BASE);
|
||||||
|
TString80 fdesc = _m->get(F_DESC);
|
||||||
|
long fcode = _m->get_long(F_CODE);
|
||||||
|
|
||||||
|
if (k == K_ENTER)
|
||||||
|
{
|
||||||
|
if (_form != NULL) delete _form;
|
||||||
|
_form = new TForm(fform, (fcode!=0) ? format("%05ld",fcode) : "", _extra ? 2 :1, fdesc);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else if (k == K_DEL)
|
||||||
|
{
|
||||||
|
if (yesno_box("Confermare la cancellazione del profilo %05ld", fcode))
|
||||||
|
{
|
||||||
|
TLocalisamfile frm(LF_FORM);
|
||||||
|
frm.zero();
|
||||||
|
frm.put("TIPOPROF", fform);
|
||||||
|
if (fcode != 0 )
|
||||||
|
frm.put("CODPROF", format("%05ld",fcode));
|
||||||
|
if (frm.read() == NOERR)
|
||||||
|
frm.remove();
|
||||||
|
TLocalisamfile rfr(LF_RFORM);
|
||||||
|
rfr.zero();
|
||||||
|
rfr.put("TIPOPROF", fform);
|
||||||
|
rfr.put("CODPROF", format("%05ld",fcode));
|
||||||
|
if (rfr.read() == NOERR)
|
||||||
|
{
|
||||||
|
for ( ; atol(rfr.get("CODPROF")) == fcode && rfr.get("TIPOPROF") == fform; rfr.next())
|
||||||
|
rfr.remove();
|
||||||
|
}
|
||||||
|
_m->set(F_CODE,"");
|
||||||
|
_m->set(F_BASE,"");
|
||||||
|
_m->set(F_DESC,"");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (k == K_QUIT)
|
||||||
|
{
|
||||||
|
dispatch_e_menu(M_FILE_QUIT);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
int ba2100(int argc, char* argv[])
|
int ba2100(int argc, char* argv[])
|
||||||
{
|
{
|
||||||
|
@ -10,6 +10,7 @@
|
|||||||
class TForm_editor : public TApplication
|
class TForm_editor : public TApplication
|
||||||
{
|
{
|
||||||
TForm* _form;
|
TForm* _form;
|
||||||
|
TMask* _m;
|
||||||
bool _extra;
|
bool _extra;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
@ -23,6 +24,7 @@ protected:
|
|||||||
|
|
||||||
bool& extra() { return _extra;}
|
bool& extra() { return _extra;}
|
||||||
void set_form(TForm * f) { _form = f; }
|
void set_form(TForm * f) { _form = f; }
|
||||||
|
bool ask_profile();
|
||||||
bool edit_relation();
|
bool edit_relation();
|
||||||
bool edit(char s, pagetype p);
|
bool edit(char s, pagetype p);
|
||||||
bool form_config() const;
|
bool form_config() const;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user