Corretta gestione F9 per campi chiave

git-svn-id: svn://10.65.10.50/trunk@2540 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 1996-01-30 09:28:10 +00:00
parent 2bd7b7f95d
commit a28b1b54d0

View File

@ -2254,7 +2254,7 @@ bool TEdit_field::on_hit()
bool ok = _handler(*this, is_edit() ? K_TAB : K_SPACE);
if (!ok) return FALSE;
}
if (_message.objptr(1) && get() == "") do_message(1);
if (_message.objptr(1) && get().empty()) do_message(1);
else do_message(0);
return TRUE;
}
@ -2281,6 +2281,23 @@ bool TEdit_field::default_error_box() const
return FALSE;
}
HIDDEN void test_key_complete(const TMask_field& f)
{
TMask& m = f.mask();
const byte keys = m.num_keys();
for (int i = 1; i <= keys; i++)
{
if (f.in_key(i) && m.key_valid(i))
{
for (int fld = m.get_key_field(i, TRUE); fld != -1; fld = m.get_key_field(i, FALSE))
m.field(fld).set_dirty(FALSE);
m.stop_run(K_AUTO_ENTER);
break;
}
}
}
bool TEdit_field::on_key(KEY key)
{
switch(key)
@ -2317,18 +2334,8 @@ bool TEdit_field::on_key(KEY key)
if (!ok) return FALSE;
if (query && required() && in_key(0))
{
const byte keys = m.num_keys();
test_key_complete(*this);
for (int i = 1; i <= keys; i++)
if (in_key(i) && m.key_valid(i))
{
for (int fld = m.get_key_field(i, TRUE); fld != -1; fld = m.get_key_field(i, FALSE))
m.field(fld).set_dirty(FALSE);
mask().stop_run(K_AUTO_ENTER);
break;
}
}
return TRUE;
}
break;
@ -2378,21 +2385,23 @@ bool TEdit_field::on_key(KEY key)
else beep();
if (k != K_F9) set_focus();
enable_check(TRUE);
if (k == K_ENTER)
{
/*
set_dirty();
if (mask().is_running())
send_key(K_TAB, 0);
else
on_hit();
*/
set_dirty();
on_hit();
if (mask().is_running())
{
set_focusdirty(FALSE);
send_key(K_TAB, 0);
{
if (mask().query_mode() && required() && in_key(0))
{
test_key_complete(*this); // Controlla autopremimento
}
else
{
set_focusdirty(FALSE); // Evita doppia esecuzione handlers!
send_key(K_TAB, 0); // Passa al campo successivo
}
}
return TRUE;
}