diff --git a/include/maskfld.cpp b/include/maskfld.cpp index 99cdf07f9..6bd6fa4c3 100755 --- a/include/maskfld.cpp +++ b/include/maskfld.cpp @@ -588,13 +588,12 @@ void TMask_field::set(const char* s) TString& TMask_field::get() const { - static TString256 gpark; - + static TString gpark; if (mask().is_running()) gpark = get_window_data(); else gpark = get_field_data(); - + if (_flags.trim) gpark.trim(); return gpark; } @@ -3729,9 +3728,15 @@ void TZoom_field::set_window_data( const char* data ) const char* TZoom_field::get_window_data( ) const { - TToken_string newmemo( _memo ); - newmemo.add( TEdit_field::get_window_data( ), 0 ); - return newmemo; + TToken_string& m = (TToken_string&)_memo; + const int pos = m.find('\n'); + TString park; + if (pos >= 0) + park=&(m[pos+1]); + m = TEdit_field::get_window_data(); + if (pos >= 0 ) + m << '\n' << park; + return _memo; } void TZoom_field::set_field_data( const char* data ) @@ -3756,13 +3761,29 @@ bool TZoom_field::on_key( KEY key ) m.set( 101, _memo ); if ( m.run( ) != K_ESC ) { - _memo = m.get( 101 ); - set_window_data( get_first_line( ) ); + _memo = m.get(101); + TString line(get_first_line()); + if (line.len() > size()) line.cut(size()); + set_window_data( line ); } } return TEdit_field::on_key( key ); } +void TZoom_field::enable(bool on) +{ + TEdit_field::enable(on); + if (_buttonzoom != NULL_WIN) + xvt_vobj_set_visible(_buttonzoom, on && shown()); +} + +void TZoom_field::show(bool on) +{ + TEdit_field::show(on); + if (_buttonzoom != NULL_WIN) + xvt_vobj_set_visible(_buttonzoom, on && enabled()); +} + TZoom_field::TZoom_field( TMask* mask ) : TEdit_field( mask ), _memo( "", '\n' ) { @@ -3783,7 +3804,13 @@ void TZoom_field::set_first_line( const char * c ) { TToken_string gfl( c, '\n' ); TString spark( gfl.get( 0 ) ); - _memo.add( spark, 0 ); + TString park; + const int pos = _memo.find('\n'); + if (pos >= 0) + park=&(_memo[pos+1]); + _memo = spark; + if (pos >= 0 ) + _memo << '\n' << park; // _memo.destroy( 1 ); } diff --git a/include/maskfld.h b/include/maskfld.h index e794b7b05..fb9fd2b5b 100755 --- a/include/maskfld.h +++ b/include/maskfld.h @@ -1031,7 +1031,7 @@ protected: virtual bool on_key(KEY k); // @access Public Member -public: +public: // @cmember Costruttore TMemo_field(TMask* mask); // @cmember Distruttore @@ -1080,6 +1080,10 @@ protected: // @access Public Member public: + // @cmember Permette di rendere visibile/invisibile un campo (vedi ) + virtual void show(bool on = TRUE); + // @cmember Abilita/disabilita il campo (lo rende scrivibile) (vedi ) + virtual void enable(bool on = TRUE); // @cmember Gestisce la pressione del tasto (TRUE se la gestione ha avuto successo) const char * get_first_line( ); virtual bool on_key(KEY key);