88f63a260c
Files correlati : ba1 ba2 ba3 Ricompilazione Demo : [ ] Commento : Aggiornato uso TWindow::handler git-svn-id: svn://10.65.10.50/trunk@19486 c028cbd2-c16b-5b4b-a496-9718f37d4682
718 lines
17 KiB
C++
Executable File
718 lines
17 KiB
C++
Executable File
#include "baformed.h"
|
|
#include <colors.h>
|
|
#include <tabutil.h>
|
|
// -----------------------------------------------------------------
|
|
// maschera per le finkature
|
|
// -----------------------------------------------------------------
|
|
|
|
#include "ba21fn.h"
|
|
|
|
class TFink_mask : public TMask
|
|
{
|
|
TString16 _chars;
|
|
|
|
enum pos { // posizioni scatoletta
|
|
xl = 1,
|
|
xm = 15,
|
|
xr = 29,
|
|
yt = 1,
|
|
ym = 5,
|
|
yb = 9,
|
|
ofs = 36
|
|
};
|
|
|
|
protected:
|
|
|
|
void paint_example();
|
|
|
|
virtual long handler(WINDOW win, EVENT* ep);
|
|
static bool char_handler(TMask_field& f, KEY k);
|
|
virtual void start_run();
|
|
virtual bool stop_run(KEY k);
|
|
virtual PNT log2dev(long x, long y) const;
|
|
|
|
public:
|
|
|
|
TString & get_chars() { return _chars; }
|
|
|
|
TFink_mask(const char* def) : TMask("ba21fn")
|
|
{
|
|
_chars = def;
|
|
set_handler(C_TR, char_handler);
|
|
set_handler(C_TL, char_handler);
|
|
set_handler(C_TM, char_handler);
|
|
set_handler(C_BR, char_handler);
|
|
set_handler(C_BL, char_handler);
|
|
set_handler(C_BM, char_handler);
|
|
set_handler(C_CM, char_handler);
|
|
set_handler(C_CR, char_handler);
|
|
set_handler(C_CL, char_handler);
|
|
set_handler(C_HR, char_handler);
|
|
set_handler(C_VR, char_handler);
|
|
}
|
|
virtual ~TFink_mask() {}
|
|
};
|
|
|
|
PNT TFink_mask::log2dev(long x, long y) const
|
|
{
|
|
PNT p;
|
|
p.h = ((short)x+1)*CHARX;
|
|
p.v = (short)y*ROWY;
|
|
return p;
|
|
}
|
|
|
|
long TFink_mask::handler(WINDOW win, EVENT* ep)
|
|
{
|
|
long ret = TMask::handler(win, ep);
|
|
if (ep->type == E_UPDATE)
|
|
paint_example();
|
|
return ret;
|
|
}
|
|
|
|
void TFink_mask::paint_example()
|
|
{
|
|
// pittura un'immaginetta finculata
|
|
// on the right of the mask
|
|
TString line(xr);
|
|
set_font(XVT_FFN_COURIER);
|
|
set_color(MASK_LIGHT_COLOR,MASK_BACK_COLOR);
|
|
set_opaque_text(TRUE);
|
|
|
|
for (int i = yt; i <= yb; i++)
|
|
{
|
|
line.spaces();
|
|
if (i == yt)
|
|
{
|
|
line.fill(_chars[9]);
|
|
line[xl-1] = _chars[0];
|
|
line[xm-1] = _chars[1];
|
|
line[xr-1] = _chars[2];
|
|
}
|
|
else if (i == ym)
|
|
{
|
|
line.fill(_chars[9]);
|
|
line[xl-1] = _chars[6];
|
|
line[xm-1] = _chars[7];
|
|
line[xr-1] = _chars[8];
|
|
}
|
|
else if (i == yb)
|
|
{
|
|
line.fill(_chars[9]);
|
|
line[xl-1] = _chars[3];
|
|
line[xm-1] = _chars[4];
|
|
line[xr-1] = _chars[5];
|
|
}
|
|
else
|
|
{
|
|
line[xl-1] = _chars[10];
|
|
line[xm-1] = _chars[10];
|
|
line[xr-1] = _chars[10];
|
|
}
|
|
stringat(ofs, i, line);
|
|
}
|
|
}
|
|
|
|
void TFink_mask::start_run()
|
|
{
|
|
TMask::start_run();
|
|
for (int i = 101; i <= 111; i++)
|
|
{
|
|
field(i).allow_pipe(); // allowa la pipa, se no son cazzi
|
|
field(i).set(format("%c",_chars[i - 101]));
|
|
}
|
|
}
|
|
|
|
bool TFink_mask::stop_run(KEY k)
|
|
{
|
|
if (k == K_ENTER)
|
|
{
|
|
_chars.cut(0);
|
|
for (int i = 101; i <= 111; i++)
|
|
_chars << field(i).get()[0];
|
|
}
|
|
return TMask::stop_run(k);
|
|
}
|
|
|
|
bool TFink_mask::char_handler(TMask_field& f, KEY k)
|
|
{
|
|
if (f.focusdirty() && k == K_TAB)
|
|
{
|
|
TFink_mask& m = (TFink_mask&)f.mask();
|
|
TString & ch = m.get_chars();
|
|
const char cp = f.get()[0];
|
|
ch[f.dlg() - 101] = cp == '\0' ? ' ' : cp;
|
|
m.paint_example();
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
|
|
// -----------------------------------------------------------------
|
|
// form editor
|
|
// -----------------------------------------------------------------
|
|
|
|
|
|
TForm_editor::TForm_editor() : _form(NULL), _m(NULL), _extra(FALSE)
|
|
{}
|
|
|
|
TForm_editor::~TForm_editor()
|
|
{}
|
|
|
|
bool TForm_editor::create()
|
|
{
|
|
TApplication::create();
|
|
|
|
const char* form = NULL;
|
|
long code = 0;
|
|
|
|
for (int a = 2; a < argc(); a++)
|
|
{
|
|
if (xvt_str_compare_ignoring_case(argv(a), "-E") == 0)
|
|
{
|
|
_extra = TRUE;
|
|
continue;
|
|
}
|
|
if (form == NULL)
|
|
form = argv(a);
|
|
else
|
|
if (code == 0)
|
|
code = atol(argv(a));
|
|
}
|
|
if (!_extra)
|
|
{
|
|
remove_menu(BAR_ITEM_ID(1));
|
|
remove_menu(BAR_ITEM_ID(2));
|
|
remove_menu(BAR_ITEM_ID(3));
|
|
remove_menu(BAR_ITEM_ID(4));
|
|
remove_menu(BAR_ITEM_ID(5));
|
|
}
|
|
|
|
enable_menu_item(M_FILE_PRINT);
|
|
_m = new TMask(selection_mask());
|
|
if ((form && code) || (form && code == 0 && _extra))
|
|
{
|
|
_form = new TForm(form, (code!=0) ? format("%05ld",code) : "", _extra ? 2 : 1);
|
|
if (!_extra) dispatch_e_menu(MENU_ITEM_ID(14));
|
|
}
|
|
else
|
|
dispatch_e_menu(MENU_ITEM_ID(14));
|
|
|
|
if (form)
|
|
{
|
|
_m->set(F_BASE, form);
|
|
_m->disable(F_BASE);
|
|
}
|
|
|
|
if (code) _m->set(F_CODE, code);
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
bool TForm_editor::destroy()
|
|
{
|
|
if (_form) delete _form;
|
|
if (_m) delete _m;
|
|
return TApplication::destroy();
|
|
}
|
|
|
|
|
|
bool TForm_editor::menu(MENU_TAG tag)
|
|
{
|
|
char sec = 'B';
|
|
pagetype pt = odd_page;
|
|
bool quit = FALSE;
|
|
|
|
switch(tag)
|
|
{
|
|
case MENU_ITEM_ID(11):
|
|
sec = 'R'; pt = odd_page; break;
|
|
case MENU_ITEM_ID(12):
|
|
sec = 'D'; pt = odd_page; break;
|
|
case MENU_ITEM_ID(13):
|
|
sec = 'K'; break;
|
|
case MENU_ITEM_ID(14):
|
|
quit = ask_profile();
|
|
sec = 'B'; pt = odd_page; break;
|
|
case MENU_ITEM_ID(15): // formato numeri
|
|
sec = 'J'; break;
|
|
case MENU_ITEM_ID(16): // formato date
|
|
sec = 'Y'; break;
|
|
case MENU_ITEM_ID(21):
|
|
sec = 'H'; pt = odd_page; break;
|
|
case MENU_ITEM_ID(22):
|
|
sec = 'H'; pt = even_page; break;
|
|
case MENU_ITEM_ID(23):
|
|
sec = 'H'; pt = first_page; break;
|
|
case MENU_ITEM_ID(24):
|
|
sec = 'H'; pt = last_page; break;
|
|
case MENU_ITEM_ID(31):
|
|
sec = 'B'; pt = odd_page; break;
|
|
case MENU_ITEM_ID(32):
|
|
sec = 'B'; pt = even_page; break;
|
|
case MENU_ITEM_ID(33):
|
|
sec = 'B'; pt = first_page; break;
|
|
case MENU_ITEM_ID(34):
|
|
sec = 'B'; pt = last_page; break;
|
|
case MENU_ITEM_ID(41):
|
|
sec = 'F'; pt = odd_page; break;
|
|
case MENU_ITEM_ID(42):
|
|
sec = 'F'; pt = even_page; break;
|
|
case MENU_ITEM_ID(43):
|
|
sec = 'F'; pt = first_page; break;
|
|
case MENU_ITEM_ID(44):
|
|
sec = 'F'; pt = last_page; break;
|
|
case MENU_ITEM_ID(51):
|
|
sec = 'G'; pt = odd_page; break;
|
|
case MENU_ITEM_ID(52):
|
|
sec = 'G'; pt = even_page; break;
|
|
case MENU_ITEM_ID(53):
|
|
sec = 'G'; pt = first_page; break;
|
|
case MENU_ITEM_ID(54):
|
|
sec = 'G'; pt = last_page; break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
if (!quit)
|
|
{
|
|
TString status;
|
|
status << TR("Profilo: ") << _form->name();
|
|
status << TR(" codice: ") << _form->code();
|
|
xvtil_statbar_set(status);
|
|
edit(sec, pt);
|
|
xvtil_statbar_set(" ");
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
void TForm_editor::print()
|
|
{
|
|
_form->print();
|
|
}
|
|
|
|
bool TForm_editor::file_handler(TMask_field& f, KEY k)
|
|
{
|
|
bool ok = TRUE;
|
|
|
|
if (k == K_TAB && f.dirty())
|
|
{
|
|
const char* n = f.get();
|
|
if (*n > ' ')
|
|
{
|
|
const char* d = prefix().description(n);
|
|
if (*d == '\0') ok = error_box(TR("Nome di file o tabella errato"));
|
|
f.mask().set(f.dlg()+1, d);
|
|
}
|
|
}
|
|
|
|
return ok;
|
|
}
|
|
|
|
bool TForm_editor::cod_handler(TMask_field& f, KEY k)
|
|
{
|
|
bool ok = TRUE;
|
|
|
|
if (k==K_TAB && f.dirty())
|
|
{
|
|
TLocalisamfile frm(LF_FORM);
|
|
frm.zero();
|
|
frm.put("TIPOPROF",f.mask().get(F_BASE));
|
|
frm.put("CODPROF",f.mask().get(F_CODE));
|
|
if (frm.read() == NOERR)
|
|
f.mask().set(F_DESC,frm.get("DESC"));
|
|
}
|
|
return ok;
|
|
}
|
|
|
|
bool TForm_editor::edit_fincatura()
|
|
{
|
|
TFink_mask m(_form->get_fincatura());
|
|
bool dirty = FALSE;
|
|
|
|
if (m.run() == K_ENTER)
|
|
{
|
|
_form->set_fincatura(m.get_chars());
|
|
dirty = TRUE;
|
|
}
|
|
return dirty;
|
|
}
|
|
|
|
bool TForm_editor::date_example(TMask_field& f, KEY k)
|
|
{
|
|
if (k == K_TAB && f.focusdirty())
|
|
{
|
|
TMask& m = f.mask();
|
|
char format[6];
|
|
format[0] = m.get(F_DFORMAT)[0];
|
|
format[1] = m.get(F_DDAY )[0];
|
|
format[2] = m.get(F_DMONTH )[0];
|
|
format[3] = m.get(F_DYEAR )[0];
|
|
format[4] = m.get(F_DSEP )[0];
|
|
format[5] = '\0';
|
|
|
|
TDate dd(TODAY);
|
|
TFormatted_date d(dd);
|
|
|
|
d.set_format(format);
|
|
m.set(F_DEXAMPLE, d.string());
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
bool TForm_editor::edit_formato_numero()
|
|
{
|
|
bool dirty = FALSE;
|
|
|
|
TMask m("ba21nm");
|
|
m.set(F_WIDTH,_frm_number.get(0));
|
|
m.set(F_DECIMALS,_frm_number.get(1));
|
|
m.set(F_PICTURE,_frm_number.get(2));
|
|
if (dirty = (m.run() == K_ENTER))
|
|
{
|
|
int w = m.get_int(F_WIDTH);
|
|
int d = m.get_int(F_DECIMALS);
|
|
TString p(m.get(F_PICTURE));
|
|
|
|
_frm_number = "";
|
|
_frm_number.add(w);_frm_number.add(d);_frm_number.add(p);
|
|
_form->change_number_format(w, d, p);
|
|
}
|
|
return dirty;
|
|
|
|
}
|
|
|
|
bool TForm_editor::edit_formato_data()
|
|
{
|
|
bool dirty = FALSE;
|
|
TString16 fmt("1"),sep("-"),day("4"),month("4"),year("4");
|
|
|
|
if (_frm_date.len() == 5) // Se e' settato il formato globale lo prende...
|
|
{
|
|
fmt.format("%c", _frm_date[0]);
|
|
sep.format("%c", _frm_date[4]);
|
|
day.format("%c", _frm_date[1]);
|
|
month.format("%c",_frm_date[2]);
|
|
year.format("%c", _frm_date[3]);
|
|
}
|
|
|
|
if (_frm_date.empty() && _form->code()[4] != '\0') // ...altrimenti cerca sulla tabella lingue...
|
|
{//Loads date format from %LNG
|
|
TTable l("%LNG");
|
|
l.put("CODTAB",_form->code()[4]);
|
|
if (l.read() == NOERR)
|
|
{
|
|
fmt = l.get("S7");//formato
|
|
fmt.cut(3);
|
|
sep.format("%c", l.get("S7")[3]);//separatore
|
|
if (sep!="-" && sep!="/" && sep!="." && sep!="," && sep!=" ") sep = "-";
|
|
if (fmt=="MAG") fmt = "2";
|
|
else if (fmt=="AMG") fmt = "3";
|
|
else fmt = "1";
|
|
}
|
|
}
|
|
|
|
TMask m("ba21dt");
|
|
|
|
m.set_handler(F_DFORMAT, date_example);
|
|
m.set_handler(F_DDAY, date_example);
|
|
m.set_handler(F_DMONTH, date_example);
|
|
m.set_handler(F_DYEAR, date_example);
|
|
m.set_handler(F_DSEP, date_example);
|
|
|
|
m.set(F_DFORMAT, fmt);
|
|
m.set(F_DDAY, day);
|
|
m.set(F_DMONTH, month);
|
|
m.set(F_DYEAR, year);
|
|
m.set(F_DSEP, sep);
|
|
|
|
TDate dd(TODAY);
|
|
TFormatted_date d(dd);
|
|
fmt<< day << month << year<< sep;
|
|
d.set_format(fmt);
|
|
|
|
m.set(F_DEXAMPLE, d.string());
|
|
dirty = m.run() == K_ENTER;
|
|
if (dirty)
|
|
{
|
|
char format[6];
|
|
format[0] = m.get(F_DFORMAT)[0];
|
|
format[1] = m.get(F_DDAY )[0];
|
|
format[2] = m.get(F_DMONTH )[0];
|
|
format[3] = m.get(F_DYEAR )[0];
|
|
format[4] = m.get(F_DSEP )[0];
|
|
format[5] = '\0';
|
|
_frm_date = format;
|
|
_form->change_date_format(format);
|
|
}
|
|
return dirty;
|
|
}
|
|
|
|
bool TForm_editor::edit_relation()
|
|
{
|
|
TMask m("ba2100r");
|
|
TSheet_field& s = (TSheet_field&)m.field(F_ITEMS);
|
|
s.sheet_mask().set_handler(101, file_handler);
|
|
|
|
TRelation* & rel = _form->_relation;
|
|
TCursor* & cur = _form->_cursor;
|
|
|
|
if (rel)
|
|
{
|
|
s.rows_array() = _form->rel_desc().get_all_desc();
|
|
// Disable meaningless fields for main file
|
|
s.disable_cell(0, 2); // Join
|
|
s.disable_cell(0, 4); // Alias
|
|
}
|
|
|
|
if (m.run() != K_ENTER || !m.dirty())
|
|
return FALSE;
|
|
|
|
if (rel)
|
|
{
|
|
delete cur; cur = NULL;
|
|
delete rel; rel = NULL;
|
|
}
|
|
|
|
TToken_string& r = s.row(0);
|
|
TString16 name = r.get(0);
|
|
|
|
if (name.not_empty())
|
|
{
|
|
int logicnum = atoi(name);
|
|
|
|
int alias = 0, to = 0, key = r.get_int(3);
|
|
TString80 exp = r.get(5);
|
|
|
|
rel = (logicnum > 0) ? new TRelation(logicnum) : new TRelation(name);
|
|
cur = new TCursor(rel, exp, key);
|
|
|
|
for (int i = 1; i < s.items(); i++)
|
|
{
|
|
TToken_string& r = s.row(i);
|
|
name = r.get(0); logicnum = atoi(name);
|
|
r.get(); // Skip description
|
|
to = name2log(r.get()); // Join
|
|
key = r.get_int(); // Key
|
|
alias = r.get_int(); // Alias
|
|
exp = r.get(); // Expression
|
|
|
|
const int l = exp.len();
|
|
for (int j = 0; j < l; j++)
|
|
if (exp[j] == ' ') exp[j] = '|';
|
|
|
|
if (logicnum > 0)
|
|
rel->add(logicnum, exp, key, to, alias); // join file
|
|
else
|
|
rel->add(name, exp, key, to, alias); // join table
|
|
}
|
|
|
|
_form->rel_desc().change_relation(*rel, s.rows_array());
|
|
}
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
|
|
bool TForm_editor::edit(char s, pagetype t)
|
|
{
|
|
bool dirty = FALSE;
|
|
|
|
if (s == 'R')
|
|
dirty = edit_relation();
|
|
else
|
|
if (s == 'D')
|
|
form_config();
|
|
else
|
|
if (s == 'K')
|
|
dirty = edit_fincatura();
|
|
else
|
|
if (s == 'J')
|
|
dirty = edit_formato_numero();
|
|
else
|
|
if (s == 'Y')
|
|
dirty = edit_formato_data();
|
|
else
|
|
{
|
|
TString80 caption;
|
|
switch(s)
|
|
{
|
|
case 'F':
|
|
caption << TR("Piede"); break;
|
|
case 'G':
|
|
caption << TR("Sfondo"); break;
|
|
case 'H':
|
|
caption << TR("Testa"); break;
|
|
default:
|
|
caption << TR("Corpo"); break;
|
|
}
|
|
|
|
switch(t)
|
|
{
|
|
case first_page:
|
|
caption << TR(" della prima pagina"); break;
|
|
case even_page:
|
|
caption << TR(" delle pagine pari"); break;
|
|
case last_page:
|
|
caption << TR(" dell'ultima pagina"); break;
|
|
default:
|
|
caption << TR(" standard"); break;
|
|
}
|
|
|
|
dirty = TRUE;
|
|
if (!_form->exist(s, t))
|
|
{
|
|
const KEY k = yesnocancel_box(FR("La sezione %s non esiste:\nsi desidera generare quella standard?"),
|
|
(const char*)caption);
|
|
if (k == K_ESC)
|
|
dirty = FALSE;
|
|
else
|
|
{
|
|
TPrint_section* sec = _form->exist(s, t, TRUE);
|
|
if (k == K_YES)
|
|
{
|
|
const TPrint_section* def = _form->exist(s, odd_page);
|
|
if (def) *sec = *def;
|
|
else dirty = FALSE;
|
|
}
|
|
}
|
|
}
|
|
if (dirty)
|
|
dirty = _form->section(s, t).edit(caption);
|
|
}
|
|
|
|
if (dirty && yesno_box(TR("Salvare le modifiche?")))
|
|
{
|
|
if (_form->code() == "")
|
|
{
|
|
TFilename n(_form->name()); n.ext("frm");
|
|
TFilename bak(n); bak.ext("bak");
|
|
rename(n, bak);
|
|
ofstream out(n);
|
|
_form->print_on(out);
|
|
}
|
|
else
|
|
_form->write_profile();
|
|
}
|
|
|
|
if (!_extra) dispatch_e_menu(MENU_ITEM_ID(14));
|
|
return dirty;
|
|
}
|
|
|
|
|
|
bool TForm_editor::form_config() const
|
|
{
|
|
TFilename cnfnam(_form->name()); cnfnam.ext("ini");
|
|
|
|
TString16 cnfpar;
|
|
if (_form->code() != "")
|
|
cnfpar << _form->code();
|
|
else
|
|
cnfpar << "Main";
|
|
|
|
TConfig cnf(cnfnam, cnfpar);
|
|
bool ok = FALSE;
|
|
|
|
const TFilename maskname(cnf.get("EdMask"));
|
|
if (maskname.empty())
|
|
return warning_box(TR("Nessun parametro da configurare"));
|
|
|
|
TMask m(maskname);
|
|
|
|
// carica campi
|
|
int i;
|
|
|
|
for (i = 0; i < m.fields(); i++)
|
|
{
|
|
TMask_field& f = m.fld(i);
|
|
const TFieldref* fref = f.field();
|
|
if (fref != NULL)
|
|
{
|
|
const char* fname = fref->name();
|
|
if (fname != NULL)
|
|
{
|
|
const TString& oldvl = cnf.get(fname);
|
|
if (!oldvl.empty())
|
|
f.set(oldvl);
|
|
}
|
|
}
|
|
}
|
|
|
|
if (m.run() == K_ENTER && m.dirty())
|
|
{
|
|
// aggiusta campi
|
|
for (i = 0; i < m.fields(); i++)
|
|
{
|
|
TMask_field& f = m.fld(i);
|
|
if (f.dirty())
|
|
{
|
|
const TFieldref* fref = f.field();
|
|
if (fref != NULL)
|
|
cnf.set(fref->name(), f.get(), NULL, TRUE);
|
|
}
|
|
}
|
|
ok = TRUE;
|
|
}
|
|
|
|
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);
|
|
TString16 cod;
|
|
cod.format("%05ld",fcode);
|
|
if (!_extra && (fcode == 0 || fform.left(3) == "BOL"))
|
|
{
|
|
error_box(TR("Non e' possibile modificare i profili standard o i bollettini.")) ;
|
|
continue;
|
|
}
|
|
if (k == K_ENTER)
|
|
{
|
|
if (_form != NULL) delete _form;
|
|
_form = new TForm(fform, (fcode!=0) ? cod : "", _extra ? 2 :1, fdesc);
|
|
break;
|
|
}
|
|
else if (k == K_DEL)
|
|
{
|
|
if (fcode != 0 && yesno_box(FR("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(_isgteq) == NOERR)
|
|
{
|
|
for ( ; rfr.status() == NOERR && 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;
|
|
}
|
|
|