diff --git a/include/maskfld.cpp b/include/maskfld.cpp index da4d29111..1873b8b85 100755 --- a/include/maskfld.cpp +++ b/include/maskfld.cpp @@ -2594,13 +2594,22 @@ TDate_field::TDate_field(TMask* m) : TEdit_field(m) _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 // // @rdesc Ritorna la data formattata const char* TDate_field::format_data( 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: // @@ -2613,71 +2622,71 @@ const char* TDate_field::format_data( { bool changed = FALSE; // TFixed_string data(get_window_data(), 15); - TFixed_string data(datum, 15); - data.trim(); - if (data.not_empty()) + fpark = datum; + fpark.trim(); + 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; } for (int meno = 2; meno <= 5; meno += 3) - if (data[meno] != '-') + if (fpark[meno] != '-') { - data.insert("-", meno); + fpark.insert("-", meno); 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; } } else { TDate g(TODAY); - data.upper(); - if (data == "IERI") + fpark.upper(); + if (fpark == "IERI") { --g; changed = TRUE; } else - if (data == "DOMANI") + if (fpark == "DOMANI") { ++g; changed = TRUE; } TString16 gstring(g.string()); - if (data == "PRIMO") + if (fpark == "PRIMO") { gstring.overwrite("01-01", 0); changed = TRUE; } else - if (data == "NATALE") + if (fpark == "NATALE") { gstring.overwrite("25-12", 0); changed = TRUE; } else - if (data == "ULTIMO") + if (fpark == "ULTIMO") { gstring.overwrite("31-12", 0); changed = TRUE; } else - if (data == "OGGI") + if (fpark == "OGGI") changed = TRUE; - if (changed) data = gstring; + if (changed) fpark = gstring; } } if (ch) *ch = changed; - fpark = data; + return fpark; } @@ -2688,7 +2697,7 @@ bool TDate_field::on_key(KEY key) bool changed = FALSE; TFixed_string data(format_data(get_window_data(),&changed), 15); - data.trim(); + if (data.not_empty()) { TDate d(data); @@ -2706,33 +2715,26 @@ bool TDate_field::on_key(KEY key) return TEdit_field::on_key(key); } -const char * TDate_field::get_window_data() const -{ - const char * data = TEdit_field::get_window_data(); - if (roman()) +bool TDate_field::autosave(TRelation* r) const +{ + const char* td = get(); + if (right_justified()) { - const TDate d(data); - data = d.string(ANSI); + TDate d(td); + td = d.string(ANSI); } - return data; -} - - -void TDate_field::set_window_data(const char * data) -{ - if (roman() && strlen(data) == 8) - { - const TDate d(data); - data = d.string(ANSI); + if (field()) + { + field()->write(td, r); + return TRUE; } - TEdit_field::set_window_data(data); + return FALSE; } const char* TDate_field::picture_data(const char* data, bool video) { if (video) { - // data = format(data); data = format_data(data); xvt_vobj_set_title(win(), (char*)data); return get_window_data(); diff --git a/include/maskfld.h b/include/maskfld.h index ef4e21023..6953fe768 100755 --- a/include/maskfld.h +++ b/include/maskfld.h @@ -706,7 +706,7 @@ class TDate_field : public TEdit_field // @access Protected Member protected: // @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 virtual word class_id() const; @@ -714,13 +714,13 @@ protected: virtual void create(WINDOW parent); // @cmember Gestisce la pressione del tasto (TRUE se la gestione ha avuto successo) 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 // (vedi ) 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 public: