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
This commit is contained in:
augusto 1997-05-23 14:05:12 +00:00
parent ca93963091
commit 376e29b47c
2 changed files with 109 additions and 26 deletions

View File

@ -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())
{

View File

@ -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 <t Checktype>)
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: