mask.cpp Tolto check errato in first_focus

msksheet.cpp  Corretta gestione tasti ALT
relapp.cpp    Corretto settaggio del modo query di una maschera
xvtility.cpp  Correzione minore sulla gestione del tasto ALT


git-svn-id: svn://10.65.10.50/trunk@3214 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 1996-07-19 15:13:35 +00:00
parent c084a94350
commit e0aba35d3e
4 changed files with 48 additions and 37 deletions

View File

@ -279,7 +279,7 @@ int TMask::first_focus(short id)
f = tempfirstfocus = id2pos(-id); f = tempfirstfocus = id2pos(-id);
} }
CHECKD(f >= 0 && f < fields() && fld(f).active(), "Invalid focus field ", f); CHECKD(f >= 0 && f < fields(), "Invalid focus field ", f);
return f; return f;
} }

View File

@ -809,8 +809,11 @@ bool TSpreadsheet::event_handler(XI_OBJ* itf, XI_EVENT *xiev)
} }
if (cell_disabled(rec, col)) if (cell_disabled(rec, col))
{
xiev->v.cell_request.back_color = DISABLED_BACK_COLOR; xiev->v.cell_request.back_color = DISABLED_BACK_COLOR;
else xiev->v.cell_request.attrib &= ~XI_ATR_ENABLED;
}
if (e->has_query_button()) if (e->has_query_button())
{ {
xiev->v.cell_request.button = TRUE; xiev->v.cell_request.button = TRUE;
@ -845,10 +848,19 @@ bool TSpreadsheet::event_handler(XI_OBJ* itf, XI_EVENT *xiev)
case XIE_BUTTON: case XIE_BUTTON:
if (xiev->v.xi_obj->type == XIT_CELL) if (xiev->v.xi_obj->type == XIT_CELL)
{ {
const bool ok = (bool)xi_move_focus(xiev->v.xi_obj); XI_CELL_DATA& cell = xiev->v.xi_obj->v.cell;
if (ok) int num;
XI_OBJ** column = xi_get_member_list(_obj, &num);
CHECK(cell.column < num, "Bad column");
int rec = cell.row;
rec = row2rec(rec);
const int col = column[cell.column]->cid - FIRST_FIELD;
if (!cell_disabled(rec, col))
{
if (xi_move_focus(xiev->v.xi_obj))
dispatch_e_char(parent(), K_F9); dispatch_e_char(parent(), K_F9);
} }
}
else else
if (xiev->v.xi_obj->type == XIT_LIST) if (xiev->v.xi_obj->type == XIT_LIST)
{ {
@ -1054,7 +1066,7 @@ bool TSpreadsheet::event_handler(XI_OBJ* itf, XI_EVENT *xiev)
while (ddl.is_open()) while (ddl.is_open())
do_events(); do_events();
// sdroppa su // sdroppa su
copy_cell2field(); /* ci vuole ma non basta */ copy_cell2field();
} }
else // edit_field else // edit_field
{ {
@ -1080,20 +1092,6 @@ bool TSpreadsheet::event_handler(XI_OBJ* itf, XI_EVENT *xiev)
_check_enabled = TRUE; // Re-enable checks _check_enabled = TRUE; // Re-enable checks
} }
break; break;
/*
case K_PREV:
case K_NEXT:
case K_ESC:
if (xi_move_focus(get_interface()))
dispatch_e_char(parent(), k);
break;
case K_ENTER:
case K_SHIFT+K_ENTER:
case K_CTRL+K_ENTER:
if (xi_move_focus(get_interface()))
dispatch_e_char(parent(), (k == K_ENTER || k == K_CTRL+K_ENTER) ? K_TAB : K_BTAB);
break;
*/
case K_CTRL + '-': case K_CTRL + '-':
{ {
if (owner().mask().id2pos(DLG_DELREC) && notify(_cur_rec, K_DEL)) if (owner().mask().id2pos(DLG_DELREC) && notify(_cur_rec, K_DEL))
@ -1129,6 +1127,10 @@ bool TSpreadsheet::event_handler(XI_OBJ* itf, XI_EVENT *xiev)
xi_scroll(_obj, XI_SCROLL_LAST); xi_scroll(_obj, XI_SCROLL_LAST);
break; break;
default: default:
if (k > K_CTRL)
{
refused = TRUE;
} else
if (is_edit_key(k) && !_edit_field->on_key(k)) if (is_edit_key(k) && !_edit_field->on_key(k))
{ {
refused = TRUE; refused = TRUE;
@ -1183,13 +1185,24 @@ bool TSpreadsheet::event_handler(XI_OBJ* itf, XI_EVENT *xiev)
break; break;
case K_ENTER: case K_ENTER:
case K_SHIFT+K_ENTER: case K_SHIFT+K_ENTER:
if (xi_move_focus(get_interface())) // if (xi_move_focus(get_interface()))
dispatch_e_char(parent(), k == K_ENTER ? K_TAB : K_BTAB); dispatch_e_char(parent(), k == K_ENTER ? K_F3 : K_F4);
refused = TRUE;
break; break;
case K_ESC: case K_ESC:
if (xi_move_focus(get_interface())) if (xi_move_focus(get_interface()))
dispatch_e_char(parent(), k); {
owner().mask().on_key(k);
refused = TRUE;
}
break;
default: default:
if (k > K_CTRL)
{
if (xi_move_focus(get_interface()))
owner().mask().on_key(k);
refused = TRUE;
}
break; break;
} }
} }

View File

@ -294,20 +294,17 @@ void TRelation_application::query_mode(
set_limits(); set_limits();
} }
//_mask->reset(); _mask->set_mode(pre_ins ? MODE_QUERYINS : MODE_QUERY);
// Spostato dopo la set_mode() e prima delle init_query_insert_mode() _mask->reset();
// cosicche', quando chiamera' eventuali handlers di campi che vadano a controllare
// il modo della maschera, il membro _mode di TMask sara' settato correttmanente
if (pre_ins) if (pre_ins)
{ {
set_mode(NO_MODE); set_mode(NO_MODE);
_mask->reset();
init_query_insert_mode(*_mask); init_query_insert_mode(*_mask);
} }
else else
{ {
set_mode(MODE_QUERY); set_mode(MODE_QUERY);
_mask->reset();
init_query_mode(*_mask); init_query_mode(*_mask);
} }
} }
@ -459,8 +456,8 @@ bool TRelation_application::test_key(
{ {
if (err) if (err)
{ {
_mask->first_focus(-e->dlg());
error_box("Manca un valore indispensabile per la ricerca"); error_box("Manca un valore indispensabile per la ricerca");
_mask->first_focus(-e->dlg());
} }
return FALSE; return FALSE;
} }

View File

@ -240,6 +240,7 @@ static BOOLEAN event_hook(HWND hwnd,
const KEY key = toupper(wparam)+K_CTRL; const KEY key = toupper(wparam)+K_CTRL;
// w->on_key(key); // w->on_key(key);
dispatch_e_char(win, key); dispatch_e_char(win, key);
*ret = 2 << 8;
} }
} }
break; break;