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':
zerofilled = TRUE; break;
default :
CHECKS(0, "FLAG sconosciuto in ", f);
CHECKS(*s == 'B', "FLAG sconosciuto in ", f);
break;
}
return *s;
@ -1214,12 +1214,30 @@ word TEditable_field::last_key() const
return (word)u;
}
// Certified 90%
// Certified 70%
word TEditable_field::first_key() const
{
long u = _keys ? _keys->first_one() : 0;
if (u < 0) u = 0;
return (word)u;
if (_keys == NULL)
return 0;
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
@ -1357,6 +1375,8 @@ void TEditable_field::set(const char* data)
_str = reformat(data);
const TString& val = raw2win(_str);
set_window_data(val);
if (mask().is_running())
set_dirty();
}
// 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)
{
const int i = str2curr(data);
current(i);
if (mask().is_running())
set_dirty();
}
void TList_field::set_window_data(const char* data)
@ -3653,7 +3681,6 @@ word TRadio_field::class_id() const
return CLASS_RADIO_FIELD;
}
void TRadio_field::create(WINDOW parent)
{
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._width - 2, _flags.zerofilled ? 1 : items,
_ctl_data._flags, _values);
reset();
current(0);
}
@ -3681,6 +3708,7 @@ int TRadio_field::current() const
void TRadio_field::current(int n)
{
((TRadiobutton_control*)_ctl)->check_button(n);
_str = _codes.get(n);
}

View File

@ -569,6 +569,8 @@ public:
word last_key() const;
// @cmember Ritorna l'ultima chiave di appartenenza del campo
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
virtual const TFieldref* field() const
@ -1197,6 +1199,9 @@ public:
// @cmember Seleziona il precedente se possibile (no wrap)
void select_prev() { select_by_ofs(-1); }
// @cmember Azzera il contenuto del campo
virtual void reset();
// @cmember Costruttore
TList_field(TMask* mask);
virtual ~TList_field() {}