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:
parent
2bd7b7f95d
commit
a28b1b54d0
@ -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;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user