From a28b1b54d0a17627ffa3401e1366327d006a9ed8 Mon Sep 17 00:00:00 2001 From: guy Date: Tue, 30 Jan 1996 09:28:10 +0000 Subject: [PATCH] Corretta gestione F9 per campi chiave git-svn-id: svn://10.65.10.50/trunk@2540 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- include/maskfld.cpp | 53 ++++++++++++++++++++++++++------------------- 1 file changed, 31 insertions(+), 22 deletions(-) diff --git a/include/maskfld.cpp b/include/maskfld.cpp index 25940b49e..47ff697e3 100755 --- a/include/maskfld.cpp +++ b/include/maskfld.cpp @@ -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; }