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);
|
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;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user