From 376e29b47c437c95e31b276634a5ea3114fe6c22 Mon Sep 17 00:00:00 2001 From: augusto Date: Fri, 23 May 1997 14:05:12 +0000 Subject: [PATCH] Corretta la gestione dei prompt dei button con BitMap Aggiunta la classe TLoadable_field (derivati da TOperable_field) e le funzioni autoload/autosave Corretto il funzionamento dell'on_hit sui boolean git-svn-id: svn://10.65.10.50/trunk@4384 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- include/maskfld.cpp | 73 +++++++++++++++++++++++++++++++++++---------- include/maskfld.h | 62 +++++++++++++++++++++++++++++++------- 2 files changed, 109 insertions(+), 26 deletions(-) diff --git a/include/maskfld.cpp b/include/maskfld.cpp index 168786dd2..a737ce3f6 100755 --- a/include/maskfld.cpp +++ b/include/maskfld.cpp @@ -1014,7 +1014,7 @@ void TButton_field::create(WINDOW parent) _ctl_data._prompt = "~Conferma"; _virtual_key = 'C'; _exit_key = K_ENTER; - if (_ctl_data._bmp_up == 0) + if (_ctl_data._bmp_up == 0 && _ctl_data._prompt == "~Conferma") _ctl_data._bmp_up = BMP_OK; break; case DLG_CANCEL: @@ -1029,7 +1029,7 @@ void TButton_field::create(WINDOW parent) _ctl_data._prompt = "~Elimina"; _virtual_key = 'E'; _exit_key = K_DEL; - if (_ctl_data._bmp_up == 0) + if (_ctl_data._bmp_up == 0 && _ctl_data._prompt == "~Elimina") { _ctl_data._bmp_up = BMP_DELREC; _ctl_data._bmp_dn = BMP_DELRECDN; @@ -1040,7 +1040,7 @@ void TButton_field::create(WINDOW parent) _ctl_data._prompt = "~Stampa"; _virtual_key = 'S'; _exit_key = K_ENTER; - if (_ctl_data._bmp_up <= 0) + if (_ctl_data._bmp_up <= 0 && _ctl_data._prompt == "~Stampa") _ctl_data._bmp_up = BMP_PRINT; break; case DLG_QUIT: @@ -1048,7 +1048,7 @@ void TButton_field::create(WINDOW parent) _ctl_data._prompt = "Fine"; _virtual_key = K_F4; _exit_key = K_QUIT; - if (_ctl_data._bmp_up <= 0) + if (_ctl_data._bmp_up <= 0 && _ctl_data._prompt == "Fine") { _ctl_data._bmp_up = BMP_QUIT; _ctl_data._bmp_dn = BMP_QUITDN; @@ -1119,7 +1119,7 @@ void TButton_field::set_bmp(short up, short dn) /////////////////////////////////////////////////////////// TEditable_field::TEditable_field(TMask* m) - : TOperable_field(m), _prompt(NULL), _field(NULL), _keys(NULL), + : TLoadable_field(m), _prompt(NULL), _field(NULL), _keys(NULL), _validate(NULL), _warning(NULL) { } @@ -1417,7 +1417,7 @@ const char* TEditable_field::win2raw(const char* data) const return reformat(data); } -bool TEditable_field::autosave(TRelation& r) const +bool TEditable_field::autosave(TRelation& r) { if (_field) _field->write(get(), r); @@ -1499,14 +1499,22 @@ bool TBoolean_field::on_hit() bool TBoolean_field::on_key(KEY key) { - if (key == K_SPACE) + switch (key) { - get_window_data(); - set_dirty(); - on_hit(); - return TRUE; - } - return TEditable_field::on_key(key); + case K_SPACE: + get_window_data(); + set_dirty(); + on_hit(); + return TRUE; + break; + case K_F2: + set(""); + return TRUE; + break; + default: + return TEditable_field::on_key(key); + } + return FALSE; } /////////////////////////////////////////////////////////// @@ -1705,7 +1713,7 @@ TBrowse::TBrowse(TEdit_field* f, TCursor* c) // Certified 100% TBrowse::~TBrowse() { - // Se e' stato usato il primo costruttore per cui devo distruggere la relazione ed il cursore + // Se e' stato usato il primo costruttore devo distruggere la relazione ed il cursore if (_relation) { delete _cursor; @@ -2487,6 +2495,35 @@ word TEdit_field::class_id() const { return CLASS_EDIT_FIELD; } +void TEdit_field::set_len(short w) +{ +} + +void TEdit_field::set_width(short width, short dwidth) +{ + + RCT rect; + get_rect(rect); + rect.right= rect.left+width; + set_rect(rect); + +/* _ctl_data.reset(); + _ctl_data._dlg = dlg(); + _ctl_data._x = x; + _ctl_data._y = y; + _ctl_data._prompt = prompt(); + + _ctl_data._size = size(); + + _ctl_data._flags = flags; + _flags.update(flags); + + _ctl_data._width = width; + create(parent()); */ + +} + + void TEdit_field::parse_head(TScanner& scanner) { _ctl_data._size = scanner.integer(); @@ -3046,6 +3083,12 @@ bool TEdit_field::check(CheckTime t) return ok; } +void TEdit_field::set_query_button( TBrowse_button * brw) +{ + if (_browse) delete _browse; + _browse=brw; +} + // @doc EXTERNAL void TEdit_field::enable(bool on) @@ -3243,7 +3286,7 @@ bool TDate_field::on_key(KEY key) return TEdit_field::on_key(key); } -bool TDate_field::autosave(TRelation& r) const +bool TDate_field::autosave(TRelation& r) { if (field()) { diff --git a/include/maskfld.h b/include/maskfld.h index 3d99e773d..e4a2ac055 100755 --- a/include/maskfld.h +++ b/include/maskfld.h @@ -233,9 +233,8 @@ public: virtual const TFieldref* field() const { return NULL; } - // @cmember Ritorna il tipo di checktype del campo + // @cmember Imposta il tipo di checktype del campo virtual void check_type(CheckType); - // @cmember Ritorna lo stato di checktype del campo virtual CheckType check_type() const { return CHECK_NONE; } @@ -289,10 +288,14 @@ public: // @cmember Ritorna TRUE se il campo e' di tipo operable virtual bool is_operable() const { return FALSE; } + // @cmember Ritorna TRUE se il campo e' caricabile da file + virtual bool is_loadable() const { return FALSE; } // @cmember Ritorna TRUE se il campo e' di tipo editable virtual bool is_editable() const { return FALSE; } // @cmember Ritorna TRUE se il campo e' di tipo edit virtual bool is_edit() const { return FALSE; } + // @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; @@ -318,6 +321,11 @@ public: virtual word size() const { return 0; } + // @cmember Ritorna la posizione X del campo +// virtual short x_pos() const {return _ctrl_data._x;} ; + // @cmember Ritorna la posizione Y del campo +// virtual short y_pos() const {return _ctrl_data._y;} ; + // @cmember Ritorna il prompt del campo virtual const char* prompt() const; // @cmember Setta il prompt del campo @@ -522,7 +530,32 @@ public: virtual ~TButton_field() {} }; -class TEditable_field : public TOperable_field + + +// @doc EXTERNAL + +// @class TLoadable_field | Classe per la gestione dei caricabili da DB +// +// @base public | TOperable_field +class TLoadable_field : public TOperable_field +{ +public: + // @cmember Legge dalla relazione il valore del campo + virtual bool autoload(const TRelation& r) =0; + + // @cmember Scrive sulla relazione il valore del campo + virtual bool autosave(TRelation& r) =0 ; + + // @cmember Ritorna TRUE se il campo e' caricabile da file + virtual bool is_loadable() const { return TRUE; } + + // @cmember costruttore + TLoadable_field(TMask* mask): TOperable_field(mask) {}; + // @cmember distruttore + virtual ~TLoadable_field() {}; +}; + +class TEditable_field : public TLoadable_field { // @cmember Campo su file TFieldref* _field; @@ -589,14 +622,13 @@ public: // @cmember Setta il nome del campo corrsipondente sul file void set_field(const TString& fr); - // @cmember Legge dalla relazione il valore del campo - bool autoload(const TRelation& r); - - // @cmember Scrive sulla relazione il valore del campo - virtual bool autosave(TRelation& r) const; - // @cmember Chiama l' eventuale funzione di validazione bool validate(KEY k); + + // @cmember Legge dalla relazione il valore del campo + virtual bool autoload(const TRelation& r); + // @cmember Scrive sulla relazione il valore del campo + virtual bool autosave(TRelation& r) ; bool has_warning() const { return _warning != NULL; } void set_warning(const char* w); @@ -621,6 +653,7 @@ public: // @cmember Ritorna TRUE se il campo e' di tipo editable virtual bool is_editable() const { return TRUE; } + TEditable_field(TMask* m); virtual ~TEditable_field(); }; @@ -948,6 +981,8 @@ public: // @cmember Controlla se il campo ha una ricerca virtual bool has_query_button() const { return _browse != NULL || _flags.button; } + // @cmember Imposta la ricerca del campo + virtual void set_query_button(TBrowse_button* ) ; // @cmember Ritorna TRUE se il campo e' di tipo edit virtual bool is_edit() const { return TRUE; } @@ -972,7 +1007,7 @@ public: { return _check; } // @cmember Setta il tipo di check da assegnare al campo (vedi ) - void check_type(CheckType c) + virtual void check_type(CheckType c) { _check = c; } // @cmember Controlla se un campo e' forced @@ -1007,6 +1042,11 @@ public: const char* picture() const { return _picture; } + // @cmember Imposta la lunghezza a video del campo + virtual void set_width(short len=-1, short dlen=-1) ; + // @cmember Imposta la lunghezza del campo + virtual void set_len(short l) ; + // @cmember Costruttore TEdit_field(TMask* mask); // @cmember Distruttore @@ -1101,7 +1141,7 @@ protected: // TEditable_field virtual const char* raw2win(const char* data) const; // @cmember Scrive sulla relazione il valore del campo gestendo formato ANSI - virtual bool autosave(TRelation& r) const; + virtual bool autosave(TRelation& r) ; // @access Public Member public: