Corretti casini con date rovesciate (flag R)

git-svn-id: svn://10.65.10.50/trunk@1712 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
villa 1995-08-18 09:19:02 +00:00
parent 94a28b8632
commit 5015ca30de
2 changed files with 46 additions and 44 deletions

View File

@ -2594,13 +2594,22 @@ TDate_field::TDate_field(TMask* m) : TEdit_field(m)
_size = _width = 10; _size = _width = 10;
} }
void TDate_field::set_window_data(const char* data)
{
if (right_justified())
{
TDate d(data);
_str = d.string();
}
TEdit_field::set_window_data(_str);
}
// @mfunc Permette di formattare la data secondo i flag correnti // @mfunc Permette di formattare la data secondo i flag correnti
// //
// @rdesc Ritorna la data formattata // @rdesc Ritorna la data formattata
const char* TDate_field::format_data( const char* TDate_field::format_data(
const char* datum, // @parm Stringa contenenete la data da formattare const char* datum, // @parm Stringa contenenete la data da formattare
bool* ch) // @parm Indica se e' stata cambiato il formato rispetto alla stringa passsata bool* ch) const // @parm Indica se e' stata cambiato il formato rispetto alla stringa passsata
// @comm Permette di gestire anche alcuni date particolari come: // @comm Permette di gestire anche alcuni date particolari come:
// //
@ -2613,71 +2622,71 @@ const char* TDate_field::format_data(
{ {
bool changed = FALSE; bool changed = FALSE;
// TFixed_string data(get_window_data(), 15); // TFixed_string data(get_window_data(), 15);
TFixed_string data(datum, 15); fpark = datum;
data.trim(); fpark.trim();
if (data.not_empty()) if (fpark.not_empty())
{ {
if (isdigit(data[0])) if (isdigit(fpark[0]))
{ {
if (data.len() == 6) // Fix century (for this millenium only) if (fpark.len() == 6) // Fix century (for this millenium only)
{ {
data.insert("19", 4); fpark.insert("19", 4);
changed = TRUE; changed = TRUE;
} }
for (int meno = 2; meno <= 5; meno += 3) for (int meno = 2; meno <= 5; meno += 3)
if (data[meno] != '-') if (fpark[meno] != '-')
{ {
data.insert("-", meno); fpark.insert("-", meno);
changed = TRUE; changed = TRUE;
} }
if (data.len() == 8) // Fix century (for this millenium only) if (fpark.len() == 8) // Fix century (for this millenium only)
{ {
data.insert("19", 6); fpark.insert("19", 6);
changed = TRUE; changed = TRUE;
} }
} }
else else
{ {
TDate g(TODAY); TDate g(TODAY);
data.upper(); fpark.upper();
if (data == "IERI") if (fpark == "IERI")
{ {
--g; --g;
changed = TRUE; changed = TRUE;
} }
else else
if (data == "DOMANI") if (fpark == "DOMANI")
{ {
++g; ++g;
changed = TRUE; changed = TRUE;
} }
TString16 gstring(g.string()); TString16 gstring(g.string());
if (data == "PRIMO") if (fpark == "PRIMO")
{ {
gstring.overwrite("01-01", 0); gstring.overwrite("01-01", 0);
changed = TRUE; changed = TRUE;
} }
else else
if (data == "NATALE") if (fpark == "NATALE")
{ {
gstring.overwrite("25-12", 0); gstring.overwrite("25-12", 0);
changed = TRUE; changed = TRUE;
} }
else else
if (data == "ULTIMO") if (fpark == "ULTIMO")
{ {
gstring.overwrite("31-12", 0); gstring.overwrite("31-12", 0);
changed = TRUE; changed = TRUE;
} }
else else
if (data == "OGGI") if (fpark == "OGGI")
changed = TRUE; changed = TRUE;
if (changed) data = gstring; if (changed) fpark = gstring;
} }
} }
if (ch) if (ch)
*ch = changed; *ch = changed;
fpark = data;
return fpark; return fpark;
} }
@ -2688,7 +2697,7 @@ bool TDate_field::on_key(KEY key)
bool changed = FALSE; bool changed = FALSE;
TFixed_string data(format_data(get_window_data(),&changed), 15); TFixed_string data(format_data(get_window_data(),&changed), 15);
data.trim();
if (data.not_empty()) if (data.not_empty())
{ {
TDate d(data); TDate d(data);
@ -2706,33 +2715,26 @@ bool TDate_field::on_key(KEY key)
return TEdit_field::on_key(key); return TEdit_field::on_key(key);
} }
const char * TDate_field::get_window_data() const bool TDate_field::autosave(TRelation* r) const
{ {
const char * data = TEdit_field::get_window_data(); const char* td = get();
if (roman()) if (right_justified())
{ {
const TDate d(data); TDate d(td);
data = d.string(ANSI); td = d.string(ANSI);
} }
return data; if (field())
} {
field()->write(td, r);
return TRUE;
void TDate_field::set_window_data(const char * data)
{
if (roman() && strlen(data) == 8)
{
const TDate d(data);
data = d.string(ANSI);
} }
TEdit_field::set_window_data(data); return FALSE;
} }
const char* TDate_field::picture_data(const char* data, bool video) const char* TDate_field::picture_data(const char* data, bool video)
{ {
if (video) if (video)
{ {
// data = format(data);
data = format_data(data); data = format_data(data);
xvt_vobj_set_title(win(), (char*)data); xvt_vobj_set_title(win(), (char*)data);
return get_window_data(); return get_window_data();

View File

@ -706,7 +706,7 @@ class TDate_field : public TEdit_field
// @access Protected Member // @access Protected Member
protected: protected:
// @cmember Permette di formattare la data secondo i flag correnti // @cmember Permette di formattare la data secondo i flag correnti
const char* format_data(const char* data, bool* changed=NULL); const char* format_data(const char* data, bool* changed=NULL) const;
// @cmember Ritorna l'identificatore della classe // @cmember Ritorna l'identificatore della classe
virtual word class_id() const; virtual word class_id() const;
@ -714,13 +714,13 @@ protected:
virtual void create(WINDOW parent); virtual void create(WINDOW parent);
// @cmember Gestisce la pressione del tasto (TRUE se la gestione ha avuto successo) // @cmember Gestisce la pressione del tasto (TRUE se la gestione ha avuto successo)
virtual bool on_key(KEY key); virtual bool on_key(KEY key);
// @cmember Legge il valore del campo direttamente dalla finestra del controllo
virtual const char* get_window_data() const;
// @cmember Scrive il valore del campo direttamente dalla finestra del controllo
virtual void set_window_data(const char* data);
// @cmember Permette di dare la stessa formattazione del campo della maschera // @cmember Permette di dare la stessa formattazione del campo della maschera
// (vedi <mf TMask_field::picture_data>) // (vedi <mf TMask_field::picture_data>)
virtual const char* picture_data(const char* data, bool video); virtual const char* picture_data(const char* data, bool video);
// @cmember Scrive il valore del campo direttamente dalla finestra del controllo
virtual void set_window_data(const char* data);
// @cmember Scrive sulla relazione il valore del campo gestendo formato ANSI
virtual bool autosave(TRelation* r = NULL) const;
// @access Public Member // @access Public Member
public: public: