Corrette selezioni sugli sheet
git-svn-id: svn://10.65.10.50/trunk@3014 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
b507cb2c35
commit
51b94ca2eb
@ -191,7 +191,7 @@ TSheet_control::TSheet_control(
|
||||
for (h = new_header.get(0), i = 0; h; h = new_header.get(), i++)
|
||||
{
|
||||
const int cid = FIRST_FIELD+i; // Column & Field ID
|
||||
long attr = XI_ATR_VISIBLE | XI_ATR_ENABLED | XI_ATR_AUTOSCROLL;
|
||||
long attr = XI_ATR_VISIBLE | XI_ATR_ENABLED | XI_ATR_AUTOSCROLL | XI_ATR_READONLY;
|
||||
if (_type[i] == 'C')
|
||||
attr |= XI_ATR_SELECTABLE;
|
||||
if (_type[i] == 'R')
|
||||
@ -572,42 +572,6 @@ bool TSheet_control::event_handler(XI_OBJ* itf, XI_EVENT *xiev)
|
||||
xiev->v.get_percent.percent = int(rec * 100L / n);
|
||||
}
|
||||
break;
|
||||
case XIE_CHAR_CELL:
|
||||
{
|
||||
long rec = -1;
|
||||
switch (xiev_to_key(xiev))
|
||||
{
|
||||
case K_LHOME:
|
||||
rec = 0;
|
||||
break;
|
||||
case K_PREV:
|
||||
rec = _cur_rec - visible_rows();
|
||||
if (rec < 0) rec = 0;
|
||||
break;
|
||||
case K_NEXT:
|
||||
rec = _cur_rec + visible_rows();
|
||||
if (rec >= items())
|
||||
rec = items()-1;
|
||||
break;
|
||||
case K_LEND:
|
||||
rec = items()-1;
|
||||
break;
|
||||
case K_TAB:
|
||||
case K_BTAB:
|
||||
case K_LEFT:
|
||||
case K_RIGHT:
|
||||
break;
|
||||
default:
|
||||
refused = TRUE;
|
||||
break;
|
||||
}
|
||||
if (rec >= 0)
|
||||
{
|
||||
_sheet->post_select(rec);
|
||||
refused = TRUE;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case XIE_SELECT:
|
||||
if (xiev->v.xi_obj->type == XIT_ROW)
|
||||
{
|
||||
@ -623,17 +587,14 @@ bool TSheet_control::event_handler(XI_OBJ* itf, XI_EVENT *xiev)
|
||||
if (check_enabled())
|
||||
toggle(rec);
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
if (_cur_rec == rec)
|
||||
_sheet->on_key(K_CTRL+'G');
|
||||
else
|
||||
{
|
||||
const int c = _type[0] == 'C' ? 2 : 1;
|
||||
XI_OBJ cell; XI_MAKE_CELL(&cell, _obj, row, c);
|
||||
xi_set_focus(&cell);
|
||||
}
|
||||
_sheet->on_key(K_CTRL+'C');
|
||||
}
|
||||
const int c = _type[0] == 'C' ? 2 : 1;
|
||||
XI_OBJ cell; XI_MAKE_CELL(&cell, _obj, row, c);
|
||||
xi_set_focus(&cell);
|
||||
make_current(rec);
|
||||
}
|
||||
refused = TRUE;
|
||||
@ -641,11 +602,12 @@ bool TSheet_control::event_handler(XI_OBJ* itf, XI_EVENT *xiev)
|
||||
case XIE_BUTTON:
|
||||
if (xiev->v.xi_obj->type == XIT_LIST)
|
||||
_sheet->on_key(K_INS);
|
||||
break;
|
||||
break;
|
||||
case XIE_XVT_EVENT:
|
||||
if (xiev->v.xvte.type == E_CHAR)
|
||||
{
|
||||
const KEY k = e_char_to_key(&xiev->v.xvte);
|
||||
long rec = -1;
|
||||
switch (k)
|
||||
{
|
||||
case K_ENTER:
|
||||
@ -654,10 +616,30 @@ bool TSheet_control::event_handler(XI_OBJ* itf, XI_EVENT *xiev)
|
||||
case K_ESC:
|
||||
_sheet->stop_run(k);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
case K_LHOME:
|
||||
rec = 0;
|
||||
break;
|
||||
case K_PREV:
|
||||
rec = _cur_rec - visible_rows();
|
||||
if (rec < 0) rec = 0;
|
||||
break;
|
||||
case K_NEXT:
|
||||
rec = _cur_rec + visible_rows();
|
||||
if (rec >= items())
|
||||
rec = items()-1;
|
||||
break;
|
||||
case K_LEND:
|
||||
rec = items()-1;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (rec >= 0)
|
||||
{
|
||||
_sheet->post_select(rec);
|
||||
refused = TRUE;
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
@ -897,12 +879,10 @@ void TSheet::on_idle()
|
||||
if (_select_row >= 0)
|
||||
{
|
||||
const short focus_id = get_focus_id(win());
|
||||
_sheet->select(_select_row);
|
||||
if (focus_id == _sheet->id())
|
||||
{
|
||||
_sheet->select(_select_row);
|
||||
_sheet->set_focus_rec(-1);
|
||||
_select_row = -1;
|
||||
}
|
||||
_select_row = -1;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1068,16 +1048,16 @@ bool TBrowse_sheet::browse_field_handler(TMask_field& f, KEY k)
|
||||
rec = b->cursor()->read(_isgteq);
|
||||
} else
|
||||
if (k == K_F2)
|
||||
rec = 0;
|
||||
rec = 0;
|
||||
if (rec >= 0 && rec != _cur_browse->selected())
|
||||
_cur_browse->select(rec);
|
||||
_cur_browse->post_select(rec);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool TBrowse_sheet::last_browse_field_handler(TMask_field& f, KEY k)
|
||||
{
|
||||
const bool ok = browse_field_handler(f, k);
|
||||
if (ok && k == K_TAB && f.focusdirty())
|
||||
if (ok && k == K_TAB)
|
||||
_cur_browse->post_select(_cur_browse->selected());
|
||||
return ok;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user