Modificat focus_field e test di autopremimento

git-svn-id: svn://10.65.10.50/trunk@2927 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
alex 1996-05-29 08:24:23 +00:00
parent fd1e643907
commit b873becb66
2 changed files with 28 additions and 13 deletions

View File

@ -240,6 +240,18 @@ int TMask::first_focus(short id)
return f; return f;
} }
TOperable_field& TMask::focus_field() const
{
const short focus = get_focus_id(win());
if (focus > 0 )
((TMask *)this)->_focus = id2pos(focus);
TMask_field & f = fld(_focus);
CHECK(f.is_kind_of(CLASS_OPERABLE_FIELD), "Can't set focus to non operable_field");
return (TOperable_field&)f;
}
void TMask::set_focus_field(short id) void TMask::set_focus_field(short id)
{ {
const int pos = id2pos(id); const int pos = id2pos(id);
@ -1141,7 +1153,7 @@ void TMask::autosave(TRelation& r) const
if (!save) if (!save)
{ {
e.autoload(r); e.autoload(r);
save = f.empty(); save = f.empty();
} }
if (save) if (save)
e.autosave(r); e.autosave(r);
@ -1197,16 +1209,20 @@ void TMask::on_idle()
_error_severity = 0; _error_severity = 0;
set_focus(); set_focus();
} }
if (_test_fld >= 0 && _last_test != _focus) if (_test_fld >= 0)
{ {
TEditable_field & e = (TEditable_field &) field(_test_fld); const TOperable_field & f = focus_field();
const TEditable_field & c = (TEditable_field &) fld(_focus); if (_last_test != f.dlg())
if (!c.has_a_common_key(e)) {
{ TEditable_field & e = (TEditable_field &) field(_test_fld);
e.test_key_complete(FALSE);
_test_fld = -1; if (!f.in_key(0) || !e.has_a_common_key(f))
} {
_last_test = _focus; e.test_key_complete(FALSE);
_test_fld = -1;
}
_last_test = f.dlg();
}
} }
} }
} }

View File

@ -271,8 +271,7 @@ public:
int first_focus(short id); int first_focus(short id);
// @cmember Ritorna il numero del controllo che possiede il focus // @cmember Ritorna il numero del controllo che possiede il focus
TOperable_field& focus_field() const TOperable_field& focus_field() const;
{ return (TOperable_field&)fld(_focus); }
// @cmember Disabilita la lettura dei check della maschera // @cmember Disabilita la lettura dei check della maschera
void disable_starting_check() void disable_starting_check()