diff --git a/src/include/maskfld.cpp b/src/include/maskfld.cpp index 0415a60b8..8d9a6495e 100755 --- a/src/include/maskfld.cpp +++ b/src/include/maskfld.cpp @@ -647,6 +647,18 @@ long TMask_field::get_long() const return atol(get()); } +TCurrency& TMask_field::get_currency(TCurrency& c) const +{ + if (class_id() == CLASS_CURRENCY_FIELD) + ((TCurrency_field&)*this).get_currency(c); + else + { + c.force_value(""); + c.set_num(get_real()); + } + return c; +} + void TMask_field::set_default(const char*) { NFCHECK("Only loadables can have a default"); @@ -693,6 +705,17 @@ const TString & TMask_field::evaluate_field(const char* s) const // @doc EXTERNAL +// @mfunc Verifica se il campo deve essere sottoposto a check iniziale +// +// @rdesc Ritorna il risultato: +// +// @flag true | Se il campo e' da sottoporre a check +// @flag false | Se il campo non e' da sottoporre checkbool initial_check(KEY k) const +bool TMask_field::initial_check(KEY k) const +{ + return k == K_TAB && !mask().is_running(); +} + // @mfunc Verifica se il campo deve essere sottoposto a check // // @rdesc Ritorna il risultato: @@ -703,10 +726,10 @@ bool TMask_field::to_check( KEY k, // @parm Tasto da passare al campo come simulazione di inizio controllo bool checkrun) const // @parm Permette di ritornare true se la maschera e' in start_run() mode { - bool yes = (k == K_TAB && focusdirty()) || (k == K_ENTER && dirty()); + bool yes = running_check(k) || final_check(k); if (!yes && checkrun) - yes = k == K_TAB && !mask().is_running(); + yes = k == initial_check(k); return yes; } diff --git a/src/include/maskfld.h b/src/include/maskfld.h index 97f3fa4c1..b6afb8fd9 100755 --- a/src/include/maskfld.h +++ b/src/include/maskfld.h @@ -344,8 +344,14 @@ public: // @cmember Ritorna true se il campo e' di tipo sheet virtual bool is_sheet() const { return false; } - // @cmember Permette di spedire il check - bool to_check(KEY k, bool checkrun = false) const; + // @cmember Controlla se il check inizialee del campo è da eseguire + bool initial_check(KEY k) const; + // @cmember Controlla se il check del campo è da eseguire durante l'esecuzione + bool running_check(KEY k) const { return k == K_TAB && focusdirty(); } + // @cmember Controlla se il check iniziale del campo è in chiusura + bool final_check(KEY k) const { return k == K_ENTER && dirty(); } + // @cmember Controlla se il check del campo è da eseguire + bool to_check(KEY k, bool checkrun = false) const; // @cmember Gestisce la chiamata all'handler del campo virtual bool on_hit(); @@ -361,7 +367,18 @@ public: // @cmember Ritorna il contenuto del campo virtual const TString& get() const; + // @cmember Ritorna il contenuto del campo sotto forma di long virtual long get_long() const; + // @cmember Ritorna il contenuto del campo sotto forma di int + virtual int get_int() const { return (int)get_long(); } + // @cmember Ritorna il contenuto del campo sotto forma di bool + virtual bool get_bool() const { return get().full(); } + // @cmember Ritorna il contenuto del campo sotto forma di real + virtual real get_real() const { return real(get()); } + // @cmember Ritorna il contenuto del campo sotto forma di data + virtual TDate get_date() const { return TDate(get()); } + // @cmember Ritorna il contenuto del campo sotto forma di currency + virtual TCurrency & get_currency(TCurrency & c) const; // @cmember Ritorna il default del campo virtual const TString& get_default() const;