From 5508be2558fb839ca50989949fbbb95bb42ca85d Mon Sep 17 00:00:00 2001 From: matteo Date: Wed, 22 Nov 1995 13:51:52 +0000 Subject: [PATCH] Aggiunti campi memo e zoom git-svn-id: svn://10.65.10.50/trunk@2196 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- include/mask.cpp | 1 + include/mask.h | 33 ++++--- include/maskfld.cpp | 204 +++++++++++++++++++++++++++++++++----------- include/maskfld.h | 60 +++++++++++-- 4 files changed, 224 insertions(+), 74 deletions(-) diff --git a/include/mask.cpp b/include/mask.cpp index 9ce9fd36b..9a496f212 100755 --- a/include/mask.cpp +++ b/include/mask.cpp @@ -935,6 +935,7 @@ bool TMask::on_dirty(TMask_field&) TMask_field* TMask::parse_field(TScanner& scanner) { if (scanner.key() == "ST") return new TEdit_field(this); + if (scanner.key() == "ZO") return new TZoom_field(this); if (scanner.key() == "NU") return new TReal_field(this); if (scanner.key() == "DA") return new TDate_field(this); if (scanner.key() == "BO") return new TBoolean_field(this); diff --git a/include/mask.h b/include/mask.h index d028bdedd..7cca9d25b 100755 --- a/include/mask.h +++ b/include/mask.h @@ -95,7 +95,7 @@ protected: // @cmember Ritorna la finestra della pagina corrente (Usare con attenzione) WINDOW win() const { return _page < 0 ? _pagewin[0] : _pagewin[_page]; } - + // @cmember Ritorna il numero di campi nella finestra int find_field_win(WINDOW win) const; @@ -204,10 +204,6 @@ public: virtual void close(); // @cmember Permette di attivare/disattivare tutta la pagina virtual void activate(bool on = TRUE); - - // @cmember Ritorna la finestra della toolbar - WINDOW toolwin() const - { return _pagewin[MAX_PAGES]; } // @cmember Converte un identificatore di campo nella sua posizione int id2pos(short id) const; @@ -223,16 +219,15 @@ public: TEdit_field& efield(short id) const; // @cmember Setta il campo con una stringa - void set(short fld_id, const char* str, bool hit=FALSE); - // @cmember Setta il campo con un valore intero - void set(short fld_id, long num, bool hit=FALSE); + virtual void set(short fld_id, const char* str, bool hit=FALSE); // @cmember Setta il campo con un reale void set(short fld_id, const real& num, bool hit=FALSE); // @cmember Setta il campo con una data void set(short fld_id, const TDate& day, bool hit=FALSE); - + // @cmember Setta il campo con un valore + void set(short fld_id, long num, bool hit=FALSE); // @cmember Ritorna il contenuto del campo

sotto forma di stringa - const TString& get(short fld_id) const; + virtual const TString& get(short fld_id) const; // @cmember Ritorna il contenuto del campo

sotto forma di long long get_long(short fld_id) const; // @cmember Ritorna il contenuto del campo

sotto forma di int @@ -250,10 +245,9 @@ public: void move_focus_field(int num); // @cmember Setta il focus al campo la cui finestra e'

void set_focus_win(WINDOW win, bool force); - // @cmember Ritorna il controllo che possiede il focus - TMask_field& focus_field() const - { return fld(_focus);} - + // @cmember Ritorna il numero del controllo che possiede il focus + TMask_field& focus_field() const + { return fld(_focus); } // @cmember Disabilita la lettura dei check della maschera void disable_starting_check() { _should_check = FALSE;} @@ -267,7 +261,7 @@ public: void on_firm_change(); // @cmember Abilita/disabilita un campo - void enable(short fld_id, bool on = TRUE); + virtual void enable(short fld_id, bool on = TRUE); // @cmember Disabilita un campo (chiama ) void disable(short fld_id) { enable(fld_id, FALSE); } @@ -298,7 +292,7 @@ public: bool key_valid(int key) const; // @cmember Permette di mostrare/nascondere un campo - void show(short fld_id = -1, bool on = TRUE); + virtual void show(short fld_id = -1, bool on = TRUE); // @cmember Permette di nascondere un campo (chiama ) void hide(short fld_id = -1) { show(fld_id, FALSE); } @@ -318,7 +312,7 @@ public: // @cmember Permette di mandare un tasto ad un campo void send_key(KEY key, short id, TMask_field* from = NULL); // @cmember Permette di mandare un handler ad un controllo - void set_handler(short fld_id, CONTROL_HANDLER handler); + virtual void set_handler(short fld_id, CONTROL_HANDLER handler); // @cmember Permette di mandare un handler ad una maschera void set_handler(MASK_HANDLER handler); // @cmember Permette di settare il nome del file di salvataggio @@ -364,6 +358,11 @@ public: // @cmember Viene eseguita se il campo viene modificato??? virtual bool on_dirty(TMask_field& c ); + + // @cmember Ritorna la finestra della toolbar + WINDOW toolwin() const + { return _pagewin[MAX_PAGES]; } + }; diff --git a/include/maskfld.cpp b/include/maskfld.cpp index 291cdf311..f88012f9e 100755 --- a/include/maskfld.cpp +++ b/include/maskfld.cpp @@ -3521,8 +3521,9 @@ void TGroup_field::set_field_data(const char* data) // TMemo_field /////////////////////////////////////////////////////////// -TMemo_field::TMemo_field(TMask* mask) : TMask_field(mask), _te(BAD_TXEDIT) -{} +TMemo_field::TMemo_field(TMask* mask) : TMask_field(mask), _te(BAD_TXEDIT), _data( "", '\n' ) +{ +} TMemo_field::~TMemo_field() { @@ -3548,7 +3549,7 @@ void TMemo_field::create(WINDOW parent) wd.text = NULL; wd.units = U_PIXELS; wd.v.tx.attrib = TX_NOMENU | TX_BORDER | TX_AUTOVSCROLL | TX_WRAP; - wd.v.tx.font_id = xvt_dwin_get_font(win()); + wd.v.tx.font_id = xvt_dwin_get_font(TASK_WIN); wd.v.tx.margin = wd.rct.right - wd.rct.left; wd.v.tx.limit = 256; wd.v.tx.tx_id = dlg(); @@ -3558,10 +3559,6 @@ void TMemo_field::create(WINDOW parent) enable_default(); // Setta colori default } -void TMemo_field::set_back_color(COLOR) const -{ -} - void TMemo_field::highlight() const { xvt_tx_set_active(_te); @@ -3574,13 +3571,13 @@ bool TMemo_field::on_key(KEY k) void TMemo_field::enable(bool on) { - TMask_field::enable(on); + TMask_field::enable( TRUE ); unsigned attr = xvt_tx_get_attr(_te); if (on) { xvt_tx_set_colors(_te, NORMAL_COLOR, COLOR_BLACK, NORMAL_BACK_COLOR); - attr &= ~TX_READONLY; + attr &= ~TX_READONLY; } else { @@ -3595,55 +3592,160 @@ void TMemo_field::show(bool on) TMask_field::show(on); } -bool TMemo_field::autoload(const TRelation* r) +/* + bool TMemo_field::autoload(const TRelation* r) + { + const TFieldref* f = field(); + xvt_tx_clear(_te); + if (f != NULL) + { + TToken_string data( r->lfile( f->file( ) ).get( f->name( ) ), '\n' ); + xvt_tx_suspend(_te); + for (T_LNUM i = 0; i < (T_LNUM)data.items( ); i++) + xvt_tx_add_par(_te, i, ( char * )data.get( i ) ); + xvt_tx_resume(_te); + return i > 0; + } + return FALSE; + } + + bool TMemo_field::autosave(TRelation* r) const + { + const TFieldref* f = field(); + if (dirty() && f != NULL) + { + const T_PNUM num_par = xvt_tx_get_num_pars(_te); + TToken_string data( "", '\n' ); + TString par(256); + TString256 line; + + for (T_PNUM p = 0; p < num_par; p++) + { + par.cut(0); + const T_LNUM lines = xvt_tx_get_num_par_lines(_te, p); + for (T_LNUM l = 0; l < lines; l++) + { + unsigned len; + xvt_tx_get_line(_te, p, A_LOCK, l, &len); + const char* s = xvt_tx_get_line(_te, p, A_GET, l, &len); + CHECK(s, "Null memo line"); + line.strncpy(s, len); + xvt_tx_get_line(_te, p, A_UNLOCK, l, &len); + + if (par.not_empty()) par << ' '; + par << line; + } + data.add(par); + } + r->lfile(f->file()).put( f->name(), data ); + return num_par > 0; + } + return FALSE; + } + */ + +void TMemo_field::set_window_data(const char* data) { - const TFieldref* f = field(); + TToken_string realdata( data, '\n' ); xvt_tx_clear(_te); - if (f != NULL) - { - TTextfile txt; - r->lfile(f->file()).get_memo(f->name(), txt); - - xvt_tx_suspend(_te); - for (T_LNUM i = 0; i < (T_LNUM)txt.lines(); i++) - xvt_tx_add_par(_te, i, (char*)txt.line(i)); - xvt_tx_resume(_te); - return i > 0; - } - return FALSE; + xvt_tx_suspend(_te); + for (T_LNUM i = 0; i < (T_LNUM)realdata.items( ); i++) + xvt_tx_add_par(_te, i, ( char * )realdata.get( i ) ); + xvt_tx_resume(_te); } -bool TMemo_field::autosave(TRelation* r) const +const char* TMemo_field::get_window_data() const { - const TFieldref* f = field(); - if (dirty() && f != NULL) - { - const T_PNUM num_par = xvt_tx_get_num_pars(_te); - TTextfile txt; - TString par(256); - TString256 line; + const T_PNUM num_par = xvt_tx_get_num_pars(_te); + TToken_string data( "", '\n' ); + TString par(256); + TString256 line; - for (T_PNUM p = 0; p < num_par; p++) - { - par.cut(0); - const T_LNUM lines = xvt_tx_get_num_par_lines(_te, p); - for (T_LNUM l = 0; l < lines; l++) - { - unsigned len; - xvt_tx_get_line(_te, p, A_LOCK, l, &len); - const char* s = xvt_tx_get_line(_te, p, A_GET, l, &len); - CHECK(s, "Null memo line"); - line.strncpy(s, len); - xvt_tx_get_line(_te, p, A_UNLOCK, l, &len); - - if (par.not_empty()) par << ' '; - par << line; - } - txt.append(par); + for (T_PNUM p = 0; p < num_par; p++) + { + par.cut(0); + const T_LNUM lines = xvt_tx_get_num_par_lines(_te, p); + for (T_LNUM l = 0; l < lines; l++) + { + unsigned len; + xvt_tx_get_line(_te, p, A_LOCK, l, &len); + const char* s = xvt_tx_get_line(_te, p, A_GET, l, &len); + CHECK(s, "Null memo line"); + line.strncpy(s, len); + xvt_tx_get_line(_te, p, A_UNLOCK, l, &len); + if (par.not_empty()) par << ' '; + par << line; } - r->lfile(f->file()).put(f->name(), txt); - return num_par > 0; + data.add(par); } - return FALSE; + return data; } +void TMemo_field::set_field_data(const char* data ) +{ + _data = data; +} + +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 ); +} + +const char* TZoom_field::get_window_data( ) const +{ + return TEdit_field::get_window_data( ); +} + +void TZoom_field::set_field_data( const char* data ) +{ + _memo = data; +} + +const char* TZoom_field::get_field_data( ) const +{ + return _memo; +} + +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 ); + m.set( 101, _memo ); + if ( m.run( ) ) + _memo = m.get( 101 ); + } + return TEdit_field::on_key( key ); +} + +TZoom_field::TZoom_field( TMask* mask ) : TEdit_field( mask ), _memo( "", '\n' ) +{ + +} + +TZoom_field::~TZoom_field( ) +{ + +} + + +const char *TZoom_field::get_first_line( ) +{ + return _memo.get( 0 ); +} + +void TZoom_field::set_first_line( const char * c ) +{ + _memo.add( c, 0 ); + _memo.destroy( 1 ); +} diff --git a/include/maskfld.h b/include/maskfld.h index e5568cdd5..7ecedf3cb 100755 --- a/include/maskfld.h +++ b/include/maskfld.h @@ -993,6 +993,7 @@ class TMemo_field : public TMask_field // @cmember Oggetto text che contiene il valore del campo memo TXEDIT _te; + TToken_string _data; // @access Protected Member protected: @@ -1007,12 +1008,18 @@ protected: // @cmember Legge un item del controllo dal file

virtual void parse_head(TScanner& scanner); - // @cmember Legge dalla relazione il valore del campo - virtual bool autoload(const TRelation* r = NULL); - // @cmember Scrive sulla relazione il valore del campo - virtual bool autosave(TRelation* r = NULL) const; // @cmember Setta il focus sul campo virtual void highlight() const; + + // @cmember Scrive il valore del campo direttamente dalla finestra del controllo + virtual void set_window_data(const char* data); + // @cmember Legge il valore del campo direttamente dalla finestra del controllo + virtual const char* get_window_data() const; + // @cmember Scrive il valore del campo + virtual void set_field_data(const char* data = NULL); + // @cmember Legge il valore del campo + virtual const char* get_field_data() const; + // @cmember Permette di abilitare/disabilitare il campo (vedi ) virtual void enable(bool on); @@ -1020,8 +1027,6 @@ protected: virtual void show(bool on); // @cmember Gestisce la pressione del tasto (TRUE se la gestione ha avuto successo) virtual bool on_key(KEY k); - // @cmember Setta il colore dello sfondo - virtual void set_back_color(COLOR c) const; // @access Public Member public: @@ -1031,6 +1036,49 @@ public: virtual ~TMemo_field(); }; +// @class TZoom_field | Come edit filed ma zooma per l'editing dei campi memo +// +// @base public | TEdit_field +class TZoom_field : public TEdit_field +{ + // @access Private Member + + TToken_string _memo; + + // @access Protected Member +protected: + + // @cmember Ritorna l'identificatore della classe + virtual word class_id() const + { return CLASS_ZOOM_FIELD; }; + // @cmember Ritorna il nome della classe + virtual const char* class_name() const + { return "ZOOM"; } + + // @cmember Scrive il valore del campo direttamente dalla finestra del controllo + virtual void set_window_data(const char* data); + // @cmember Legge il valore del campo direttamente dalla finestra del controllo + virtual const char* get_window_data() const; + // @cmember Scrive il valore del campo + 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 ); + + + // @access Public Member +public: + // @cmember Gestisce la pressione del tasto (TRUE se la gestione ha avuto successo) + virtual bool on_key(KEY key); + // @cmember Costruttore + TZoom_field(TMask* mask); + // @cmember Distruttore + virtual ~TZoom_field(); +}; + + + #endif // __MASKFLD_H