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
138
ba/ba2100.cpp
138
ba/ba2100.cpp
@ -2,7 +2,7 @@
|
||||
#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()
|
||||
@ -30,81 +30,31 @@ bool TForm_editor::create()
|
||||
code = atol(argv(a));
|
||||
}
|
||||
|
||||
bool go = FALSE;
|
||||
|
||||
enable_menu_item(M_FILE_PRINT);
|
||||
if ((form && code) || (form && code == 0 && _extra))
|
||||
{
|
||||
_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(31));
|
||||
if (!_extra) dispatch_e_menu(MENU_ITEM(13));
|
||||
}
|
||||
else
|
||||
{
|
||||
TMask m("ba2100b");
|
||||
|
||||
m.set_handler(F_CODE, cod_handler);
|
||||
if (form)
|
||||
{
|
||||
m.set(F_BASE, form);
|
||||
m.disable(F_BASE);
|
||||
}
|
||||
|
||||
if (code) m.set(F_CODE, code);
|
||||
|
||||
// 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)
|
||||
{
|
||||
_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,"");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
dispatch_e_menu(MENU_ITEM(13));
|
||||
|
||||
if (go)
|
||||
_m = new TMask("ba2100b");
|
||||
if (form)
|
||||
{
|
||||
enable_menu_item(M_FILE_PRINT);
|
||||
if (!_extra) dispatch_e_menu(MENU_ITEM(31));
|
||||
_m->set(F_BASE, form);
|
||||
_m->disable(F_BASE);
|
||||
}
|
||||
|
||||
return form != NULL;
|
||||
if (code) _m->set(F_CODE, code);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool TForm_editor::destroy()
|
||||
{
|
||||
if (_form) delete _form;
|
||||
if (_m) delete _m;
|
||||
return TApplication::destroy();
|
||||
}
|
||||
|
||||
@ -113,6 +63,7 @@ bool TForm_editor::menu(MENU_TAG tag)
|
||||
{
|
||||
char sec = 'B';
|
||||
pagetype pt = odd_page;
|
||||
bool quit = FALSE;
|
||||
|
||||
switch(tag)
|
||||
{
|
||||
@ -120,6 +71,9 @@ bool TForm_editor::menu(MENU_TAG tag)
|
||||
sec = 'R'; pt = odd_page; break;
|
||||
case MENU_ITEM(12):
|
||||
sec = 'D'; pt = odd_page; break;
|
||||
case MENU_ITEM(13):
|
||||
quit = ask_profile();
|
||||
sec = 'B'; pt = odd_page; break;
|
||||
case MENU_ITEM(21):
|
||||
sec = 'H'; pt = odd_page; break;
|
||||
case MENU_ITEM(22):
|
||||
@ -156,8 +110,8 @@ bool TForm_editor::menu(MENU_TAG tag)
|
||||
break;
|
||||
}
|
||||
|
||||
edit(sec, pt);
|
||||
return _extra;
|
||||
if (!quit) edit(sec, pt);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void TForm_editor::print()
|
||||
@ -337,7 +291,8 @@ bool TForm_editor::edit(char s, pagetype t)
|
||||
else
|
||||
_form->write_profile();
|
||||
}
|
||||
|
||||
|
||||
if (!_extra) dispatch_e_menu(MENU_ITEM(13));
|
||||
return dirty;
|
||||
}
|
||||
|
||||
@ -397,6 +352,59 @@ bool TForm_editor::form_config() const
|
||||
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[])
|
||||
{
|
||||
|
@ -9,7 +9,8 @@
|
||||
|
||||
class TForm_editor : public TApplication
|
||||
{
|
||||
TForm* _form;
|
||||
TForm* _form;
|
||||
TMask* _m;
|
||||
bool _extra;
|
||||
|
||||
protected:
|
||||
@ -23,6 +24,7 @@ protected:
|
||||
|
||||
bool& extra() { return _extra;}
|
||||
void set_form(TForm * f) { _form = f; }
|
||||
bool ask_profile();
|
||||
bool edit_relation();
|
||||
bool edit(char s, pagetype p);
|
||||
bool form_config() const;
|
||||
|
Loading…
x
Reference in New Issue
Block a user