diff --git a/include/maskfld.cpp b/include/maskfld.cpp index f88012f9e..7e7509122 100755 --- a/include/maskfld.cpp +++ b/include/maskfld.cpp @@ -1136,7 +1136,17 @@ int TList_sheet::do_input() else { const short id = _fld->atodlg(fld); - if (id > 0) rowsel.add(field().mask().get(id)); + if (id > 0) + { + TMask_field& tempf = field().mask().field(id); + if ( tempf.class_id() == CLASS_ZOOM_FIELD ) + { + TZoom_field& tempz = ( TZoom_field & ) tempf; + rowsel.add( tempz.get_first_line( ) ); + } + else + rowsel.add(field().mask().get(id)); + } else rowsel.add(""); } } @@ -2168,11 +2178,11 @@ const char* TEdit_field::format(const char* d) const if (_flags.uppercase) fpark.upper(); - if (!_flags.pipeallowed) - { - for (int p = 0; fpark[p]; p++) - if (fpark[p] == '|') fpark[p] = '/'; - } + if (!_flags.pipeallowed) + { + for (int p = 0; fpark[p]; p++) + if (fpark[p] == '|') fpark[p] = '/'; + } } return fpark; @@ -3691,16 +3701,20 @@ const char* TMemo_field::get_field_data() const return _data; } + void TZoom_field::set_window_data( const char* data ) { - - TEdit_field::set_window_data( data ); - set_first_line( data ); + TToken_string getfl( data, '\n' ); + TString spark( getfl.get( 0 ) ); + TEdit_field::set_window_data( spark ); + // set_first_line( spark ); } const char* TZoom_field::get_window_data( ) const { - return TEdit_field::get_window_data( ); + TToken_string newmemo( _memo ); + newmemo.add( TEdit_field::get_window_data( ), 0 ); + return newmemo; } void TZoom_field::set_field_data( const char* data ) @@ -3717,20 +3731,24 @@ bool TZoom_field::on_key( KEY key ) { if ( key == K_F8 ) { - TMask m( "Zoom", 1, 72, 14 ); - m.add_memo( 101, 1, _prompt, 2, 2 ); - m.add_button( DLG_OK, 1, "", -12, -1 ); - m.add_button( DLG_CANCEL, 1, "", -12, -1 ); + set_first_line( get_window_data( ) ); + TMask m( "Zoom", 1, 72, 15 ); + m.add_memo( 101, 0, prompt(), 2, 2, 68, 10 ); + m.add_button( DLG_OK, 0, "", -12, 13, 9, 2 ); + m.add_button( DLG_CANCEL, 0, "", -22, 13, 9, 2 ); m.set( 101, _memo ); - if ( m.run( ) ) - _memo = m.get( 101 ); + if ( m.run( ) != K_ESC ) + { + _memo = m.get( 101 ); + set_window_data( get_first_line( ) ); + } } return TEdit_field::on_key( key ); } TZoom_field::TZoom_field( TMask* mask ) : TEdit_field( mask ), _memo( "", '\n' ) { - + } TZoom_field::~TZoom_field( ) @@ -3746,6 +3764,31 @@ const char *TZoom_field::get_first_line( ) void TZoom_field::set_first_line( const char * c ) { - _memo.add( c, 0 ); - _memo.destroy( 1 ); + TToken_string gfl( c, '\n' ); + TString spark( gfl.get( 0 ) ); + _memo.add( spark, 0 ); + // _memo.destroy( 1 ); } + +void TZoom_field::create(WINDOW parent) +{ + TEdit_field::create( parent ); + +#if XVTWS == WMWS + int delta = 2; +#else + int delta = 1; +#endif + + if (_browse || _sheet) delta *= 2; + _buttonzoom = xvt_create_control(WC_PUSHBUTTON, _x+_width+delta, _y, + 2, 1, "Z", parent, default_flags(), PTR_LONG(this), DLG_F8); +} + +void TZoom_field::destroy() +{ + if (_buttonzoom) + { xvt_vobj_destroy(_buttonzoom); _buttonwin = NULL_WIN; } + TEdit_field::destroy(); +} + diff --git a/include/maskfld.h b/include/maskfld.h index 7ecedf3cb..bb12e879d 100755 --- a/include/maskfld.h +++ b/include/maskfld.h @@ -205,7 +205,7 @@ public: bool right_justified() const { return _flags.rightjust; } - // @cmember Verifica la alloowance of the pipe + // @cmember Verifica la allowance of the pipe bool pipe_allowed() const { return _flags.pipeallowed; } @@ -1041,13 +1041,18 @@ public: // @base public | TEdit_field class TZoom_field : public TEdit_field { - // @access Private Member + // @access Private Member + TToken_string _memo; - TToken_string _memo; + // @cmember Finestra del bottone per lo zoom del campo + WINDOW _buttonzoom; + // @access Protected Member protected: + + // @cmember Ritorna l'identificatore della classe virtual word class_id() const { return CLASS_ZOOM_FIELD; }; @@ -1063,13 +1068,18 @@ protected: virtual void set_field_data(const char* data); // @cmember Legge il valore del campo virtual const char* get_field_data() const; - const char * get_first_line( ); void set_first_line( const char * c ); + // @cmember Crea il controllo + virtual void create(WINDOW parent); + // @cmember Distrugge il contrllo + virtual void destroy(); + // @access Public Member public: // @cmember Gestisce la pressione del tasto (TRUE se la gestione ha avuto successo) + const char * get_first_line( ); virtual bool on_key(KEY key); // @cmember Costruttore TZoom_field(TMask* mask);