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,15 +622,14 @@ 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);
 | 
			
		||||
  const char* get_warning() const;
 | 
			
		||||
@ -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