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:
parent
ca93963091
commit
376e29b47c
@ -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())
|
||||
{
|
||||
|
@ -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:
|
||||
|
Loading…
x
Reference in New Issue
Block a user