Modificato il meccanismo di autopremimento e correta la gestione del flags 'B'

git-svn-id: svn://10.65.10.50/trunk@2809 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
alex 1996-05-14 10:11:06 +00:00
parent 39e455265a
commit 0d934d6685
2 changed files with 42 additions and 9 deletions

View File

@ -102,7 +102,7 @@ char TMask_field::TField_Flags::update(const char* f)
case 'Z': case 'Z':
zerofilled = TRUE; break; zerofilled = TRUE; break;
default : default :
CHECKS(0, "FLAG sconosciuto in ", f); CHECKS(*s == 'B', "FLAG sconosciuto in ", f);
break; break;
} }
return *s; return *s;
@ -848,7 +848,7 @@ bool TOperable_field::do_message(int num)
case 0: case 0:
modify_list(TRUE, mask().field(fld), msg); continue; modify_list(TRUE, mask().field(fld), msg); continue;
case 1: case 1:
mask().disable(fld); mask().disable(fld);
mask().reset(fld); mask().reset(fld);
continue; continue;
case 2: case 2:
@ -1214,14 +1214,32 @@ word TEditable_field::last_key() const
return (word)u; return (word)u;
} }
// Certified 90% // Certified 70%
word TEditable_field::first_key() const word TEditable_field::first_key() const
{ {
long u = _keys ? _keys->first_one() : 0; if (_keys == NULL)
if (u < 0) u = 0; return 0;
return (word)u; const int last = last_key();
for (long i = 1; i <= last; i++)
if ((*_keys)[i] == TRUE)
break;
return (word)i;
} }
// Certified 70%
bool TEditable_field::has_a_common_key(const TEditable_field & e) const
{
if (_keys != NULL && e._keys != NULL)
{
const int last = last_key();
for (long i = 1; i <= last; i++)
if ((*_keys)[i] == TRUE && (*e._keys)[i] == TRUE)
return TRUE;
}
return FALSE;
}
bool TEditable_field::test_key_complete(bool normal) const bool TEditable_field::test_key_complete(bool normal) const
{ {
TMask& m = mask(); TMask& m = mask();
@ -1357,6 +1375,8 @@ void TEditable_field::set(const char* data)
_str = reformat(data); _str = reformat(data);
const TString& val = raw2win(_str); const TString& val = raw2win(_str);
set_window_data(val); set_window_data(val);
if (mask().is_running())
set_dirty();
} }
// Certified 100% // Certified 100%
@ -3567,10 +3587,18 @@ int TList_field::str2curr(const char* data)
} }
void TList_field::reset()
{
if (!_flags.persistent)
current(0);
}
void TList_field::set(const char* data) void TList_field::set(const char* data)
{ {
const int i = str2curr(data); const int i = str2curr(data);
current(i); current(i);
if (mask().is_running())
set_dirty();
} }
void TList_field::set_window_data(const char* data) void TList_field::set_window_data(const char* data)
@ -3653,7 +3681,6 @@ word TRadio_field::class_id() const
return CLASS_RADIO_FIELD; return CLASS_RADIO_FIELD;
} }
void TRadio_field::create(WINDOW parent) void TRadio_field::create(WINDOW parent)
{ {
const int items = _codes.items(); const int items = _codes.items();
@ -3667,7 +3694,7 @@ void TRadio_field::create(WINDOW parent)
_ctl_data._x + 1, _ctl_data._y + 1, _ctl_data._x + 1, _ctl_data._y + 1,
_ctl_data._width - 2, _flags.zerofilled ? 1 : items, _ctl_data._width - 2, _flags.zerofilled ? 1 : items,
_ctl_data._flags, _values); _ctl_data._flags, _values);
reset(); current(0);
} }
@ -3681,6 +3708,7 @@ int TRadio_field::current() const
void TRadio_field::current(int n) void TRadio_field::current(int n)
{ {
((TRadiobutton_control*)_ctl)->check_button(n); ((TRadiobutton_control*)_ctl)->check_button(n);
_str = _codes.get(n);
} }

View File

@ -569,7 +569,9 @@ public:
word last_key() const; word last_key() const;
// @cmember Ritorna l'ultima chiave di appartenenza del campo // @cmember Ritorna l'ultima chiave di appartenenza del campo
word first_key() const; word first_key() const;
// @cmember Verifica che il campo abbia almeno una chiave in con il campo <p e>
bool has_a_common_key(const TEditable_field & e) const;
// @cmember Ritorna il nome del campo corrsipondente sul file // @cmember Ritorna il nome del campo corrsipondente sul file
virtual const TFieldref* field() const virtual const TFieldref* field() const
{ return _field; } { return _field; }
@ -1196,6 +1198,9 @@ public:
// @cmember Seleziona il precedente se possibile (no wrap) // @cmember Seleziona il precedente se possibile (no wrap)
void select_prev() { select_by_ofs(-1); } void select_prev() { select_by_ofs(-1); }
// @cmember Azzera il contenuto del campo
virtual void reset();
// @cmember Costruttore // @cmember Costruttore
TList_field(TMask* mask); TList_field(TMask* mask);