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); bool ok = _handler(*this, is_edit() ? K_TAB : K_SPACE);
if (!ok) return FALSE; 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); else do_message(0);
return TRUE; return TRUE;
} }
@ -2281,6 +2281,23 @@ bool TEdit_field::default_error_box() const
return FALSE; 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) bool TEdit_field::on_key(KEY key)
{ {
switch(key) switch(key)
@ -2317,18 +2334,8 @@ bool TEdit_field::on_key(KEY key)
if (!ok) return FALSE; if (!ok) return FALSE;
if (query && required() && in_key(0)) if (query && required() && in_key(0))
{ test_key_complete(*this);
const byte keys = m.num_keys();
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; return TRUE;
} }
break; break;
@ -2378,21 +2385,23 @@ bool TEdit_field::on_key(KEY key)
else beep(); else beep();
if (k != K_F9) set_focus(); if (k != K_F9) set_focus();
enable_check(TRUE); enable_check(TRUE);
if (k == K_ENTER) if (k == K_ENTER)
{ {
/*
set_dirty();
if (mask().is_running())
send_key(K_TAB, 0);
else
on_hit();
*/
set_dirty(); set_dirty();
on_hit(); on_hit();
if (mask().is_running()) if (mask().is_running())
{ {
set_focusdirty(FALSE); if (mask().query_mode() && required() && in_key(0))
send_key(K_TAB, 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; return TRUE;
} }