Aggiunto modifica batch formato date e numeri

git-svn-id: svn://10.65.10.50/trunk@2205 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
villa 1995-11-24 09:54:06 +00:00
parent d573e74571
commit b94c516540
5 changed files with 178 additions and 4 deletions

View File

@ -29,7 +29,9 @@ MENU BAR_ITEM(1)
ITEM MENU_ITEM(11) "~Relazione"
ITEM MENU_ITEM(12) "~Parametri"
ITEM MENU_ITEM(13) "Caratteri ~fincatura"
ITEM MENU_ITEM(14) "~Cambia profilo"
ITEM MENU_ITEM(14) "~Cambia profilo"
ITEM MENU_ITEM(15) "Imposta formato ~numeri"
ITEM MENU_ITEM(16) "Imposta formato ~date"
MENU BAR_ITEM(2)
ITEM MENU_ITEM(21) "~Normale"

View File

@ -228,6 +228,10 @@ bool TForm_editor::menu(MENU_TAG tag)
case MENU_ITEM(14):
quit = ask_profile();
sec = 'B'; pt = odd_page; break;
case MENU_ITEM(15): // formato numeri
sec = 'J'; break;
case MENU_ITEM(16): // formato date
sec = 'Y'; break;
case MENU_ITEM(21):
sec = 'H'; pt = odd_page; break;
case MENU_ITEM(22):
@ -320,6 +324,83 @@ bool TForm_editor::edit_fincatura()
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");
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));
_form->change_number_format(w, d, p);
}
return dirty;
}
bool TForm_editor::edit_formato_data()
{
bool dirty = FALSE;
char format[6] = { "1444-" };
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);
TDate dd(TODAY);
TFormatted_date d(dd);
d.set_format(format);
m.set(F_DFORMAT, "1");
m.set(F_DDAY, "4");
m.set(F_DMONTH, "4");
m.set(F_DYEAR, "4");
m.set(F_DSEP, "-");
m.set(F_DEXAMPLE, d.string());
if (dirty = (m.run() == K_ENTER))
{
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';
_form->change_date_format(format);
}
return dirty;
}
bool TForm_editor::edit_relation()
{
TMask m("ba2100r");
@ -398,6 +479,12 @@ bool TForm_editor::edit(char s, pagetype t)
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;

View File

@ -21,12 +21,15 @@ protected:
static bool file_handler(TMask_field& f, KEY k);
static bool cod_handler(TMask_field&f, KEY k);
static bool date_example(TMask_field&f, KEY k);
bool& extra() { return _extra;}
void set_form(TForm * f) { _form = f; }
bool ask_profile();
bool edit_relation();
bool edit_fincatura();
bool edit_formato_numero();
bool edit_formato_data();
bool edit(char s, pagetype p);
bool form_config() const;
public:

View File

@ -866,6 +866,8 @@ protected:
void put_paragraph(const char* s);
public:
void set_picture(const char* p) { _picture = p; }
virtual bool edit(TMask& m);
TForm_string(TPrint_section* section) : TForm_item(section) {}
virtual ~TForm_string() {}
@ -1097,6 +1099,8 @@ protected:
int decimals() const { return _height; }
public:
void set_decimals(int d) { _height = d; }
TForm_number(TPrint_section* section) : TForm_string(section) {}
virtual ~TForm_number() {}
};
@ -1208,7 +1212,8 @@ protected:
virtual void print_on(TRectype& rform);
public:
void set_format(const char* f) { _format = f; }
virtual bool edit(TMask& m);
TForm_date(TPrint_section* section);
virtual ~TForm_date() {}
@ -2232,7 +2237,73 @@ TPrint_section& TForm::section(char s, word p)
TPrint_section* sec = exist(s, pos, TRUE);
return *sec;
}
// ===========================================
// TForm
// ===========================================
bool TForm::ps_change_date_format(TPrint_section& s, const char* f)
{
for (word i = 0; i < s.fields(); i++)
{
TForm_item& fi = s.field(i);
if (strcmp(fi.class_name(), "SEZIONE") == 0)
{
TPrint_section& ps = ((TForm_subsection&)fi).subsection();
ps_change_date_format(ps, f);
}
else if (strcmp(fi.class_name(), "DATA") == 0)
((TForm_date&)fi).set_format(f);
}
return TRUE;
}
bool TForm::ps_change_number_format(TPrint_section& s, int w, int dec, const char* p)
{
for (word i = 0; i < s.fields(); i++)
{
TForm_item& fi = s.field(i);
if (strcmp(fi.class_name(), "SEZIONE") == 0)
{
TPrint_section& ps = ((TForm_subsection&)fi).subsection();
ps_change_number_format(ps, w, dec, p);
}
else if (strcmp(fi.class_name(), "NUMERO") == 0)
{
TForm_number& fn = (TForm_number&)fi;
fn.set_width(w);
fn.set_decimals(dec);
fn.set_picture(p);
}
}
return TRUE;
}
void TForm::change_date_format(const char* f)
{
char secs[] = { "FHGB" };
char ptyp[] = { "LOEF" };
TPrint_section* ps;
for (int sc = 0; sc < 4; sc++)
for (int pt = 0; pt < 4; pt++)
if ((ps = exist(secs[sc], char2page(ptyp[pt]), FALSE)) != NULL)
ps_change_date_format(*ps, f);
}
void TForm::change_number_format(int w, int dec, const char* p)
{
char secs[] = { "FHGB" };
char ptyp[] = { "LOEF" };
TPrint_section* ps;
for (int sc = 0; sc < 4; sc++)
for (int pt = 0; pt < 4; pt++)
if ((ps = exist(secs[sc], char2page(ptyp[pt]), FALSE)) != NULL)
ps_change_number_format(*ps, w, dec, p);
}
word TForm::set_background(word p, bool u)
{
word len = 0;

View File

@ -127,7 +127,12 @@ class TForm : public TObject
TToken_string& get_fincatura() { return _fink; }
void set_fincatura(const char* s) { _fink = s; }
// come sotto ma per printsection, all'uopo di chiamarle
// con ricorsiva insistenza
bool ps_change_date_format(TPrint_section& s, const char* f);
bool ps_change_number_format(TPrint_section& s, int w, int dec, const char* p);
protected:
// H = Header, B = Body, F = Footer, R = Relation
TPrint_section& section(char s = 'B', word page = 1);
@ -191,7 +196,12 @@ public:
bool dirty() const { return _dirty; }
void set_dirty(bool d = TRUE) { _dirty = d; }
void set_arrange(bool arng = TRUE) { _arrange = arng ; }
// cambia il formato di tutte le date nel form
void change_date_format(const char* f);
// cambia il formato di tutti i numeri nel form
void change_number_format(int w, int dec, const char* p);
// fincazione
char f_topleft() { return _fink.get_char(0); }
char f_topmiddle() { return _fink.get_char(1); }
@ -263,6 +273,7 @@ protected:
public:
short id() const { return _id; }
virtual int width() const { return _width; }
virtual void set_width(int w) { _width = w; }
virtual int height() const { return _height; }
virtual short& x() { return _x; }
virtual short& y() { return _y; }