sheet : corretta dimenzione e selezione degli sheet
controls.cpp : corretta update_tabcid git-svn-id: svn://10.65.10.50/trunk@2857 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
7685566cd8
commit
44bc94a92c
@ -410,9 +410,10 @@ HIDDEN void xi_event_handler(XI_OBJ* itf, XI_EVENT* xiev)
|
||||
ctl = (TControl*)xi_get_app_data(xiev->v.xi_obj->parent);
|
||||
break;
|
||||
case a_xvt:
|
||||
if (xiev->v.xvte.type == E_CHAR)
|
||||
{
|
||||
XI_OBJ* fo = xi_get_focus(itf);
|
||||
if (xiev->v.xvte.type == E_CHAR && fo != NULL && fo->type == XIT_CELL)
|
||||
if (fo != NULL && fo->type == XIT_CELL)
|
||||
ctl = (TControl*)xi_get_app_data(fo->parent);
|
||||
}
|
||||
break;
|
||||
@ -481,7 +482,7 @@ void TControl::set_tab_cid(short cid)
|
||||
case XIT_BTN:
|
||||
_obj->v.btn->tab_cid = cid; break;
|
||||
case XIT_CONTAINER:
|
||||
_obj->v.container->tab_cid = _obj->cid;
|
||||
_obj->v.container->tab_cid = cid > 1000 ? (cid % 1000) : (1000 + cid);
|
||||
if (_obj->nbr_children > 0)
|
||||
_obj->children[_obj->nbr_children-1]->v.btn->tab_cid = cid;
|
||||
break;
|
||||
@ -508,7 +509,7 @@ TControl& TControl::find_operable_ctl(bool forward) const
|
||||
for (int c = first; c != last && obj == NULL; c += delta)
|
||||
{
|
||||
const XI_OBJ_TYPE t = child[c]->type;
|
||||
if (t == XIT_FORM || t == XIT_BTN || t == XIT_LIST || t == XIT_CONTAINER)
|
||||
if (t == XIT_FORM || t == XIT_LIST || t == XIT_CONTAINER)
|
||||
obj = child[c];
|
||||
}
|
||||
TControl* ctl = obj == NULL ? (TControl*)this : (TControl*)xi_get_app_data(obj);
|
||||
@ -1130,10 +1131,10 @@ TPushbutton_control::TPushbutton_control(WINDOW win, short cid,
|
||||
short bmp_up, short bmp_dn)
|
||||
: _bmp_up(bmp_up), _bmp_dn(bmp_dn)
|
||||
|
||||
{
|
||||
{
|
||||
if (bmp_up > 0)
|
||||
text = "";
|
||||
create(win, cid, left, top, width, height, flags, text, WC_PUSHBUTTON, NULL);
|
||||
create(win, cid, left, top, width, height, flags, text, WC_PUSHBUTTON, cnt);
|
||||
set_bmp(bmp_up, bmp_dn);
|
||||
}
|
||||
|
||||
|
@ -224,16 +224,20 @@ TSheet_control::TSheet_control(
|
||||
|
||||
// Se la finestra e' troppo grande riducila
|
||||
RCT cli; xvt_vobj_get_client_rect(parent, &cli);
|
||||
xi_get_rect(_obj, &rct);
|
||||
|
||||
if (rct.right < cli.right - 2*XI_FU_MULTIPLE)
|
||||
XI_RCT xc = cli; xi_pu_to_fu(itf, (PNT*)&xc, 2);
|
||||
if (xc.right > 45 * XI_FU_MULTIPLE) // Deve contenere almeno 4 bottoni
|
||||
{
|
||||
const int width = rct.right + 2*XI_FU_MULTIPLE;
|
||||
cli.left = (cli.right - width) / 2;
|
||||
cli.right = cli.left + width;
|
||||
xvt_vobj_translate_points(parent, xvt_vobj_get_parent(parent), (PNT*)&cli, 2);
|
||||
xvt_vobj_move(parent, &cli);
|
||||
}
|
||||
xi_get_rect(_obj, &rct);
|
||||
|
||||
if (rct.right < cli.right - 2*XI_FU_MULTIPLE)
|
||||
{
|
||||
const int width = rct.right + 2*XI_FU_MULTIPLE;
|
||||
cli.left = (cli.right - width) / 2;
|
||||
cli.right = cli.left + width;
|
||||
xvt_vobj_translate_points(parent, xvt_vobj_get_parent(parent), (PNT*)&cli, 2);
|
||||
xvt_vobj_move(parent, &cli);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void TSheet_control::set_rect(const RCT& r)
|
||||
@ -309,7 +313,7 @@ void TSheet_control::update(long n)
|
||||
if (scroll_first)
|
||||
xi_scroll(_obj, XI_SCROLL_FIRST);
|
||||
else
|
||||
xi_scroll_rec(_obj, n, NORMAL_COLOR, XI_ATR_ENABLED | XI_ATR_AUTOSELECT, 0);
|
||||
xi_scroll_rec(_obj, n, NORMAL_COLOR, XI_ATR_ENABLED, 0);
|
||||
}
|
||||
}
|
||||
|
||||
@ -336,7 +340,7 @@ void TSheet_control::make_current(long rec)
|
||||
void TSheet_control::select(long rec)
|
||||
{
|
||||
if (rec >= 0 && rec < items())
|
||||
xi_scroll_rec(_obj, rec, FOCUS_COLOR, XI_ATR_ENABLED, 0);
|
||||
xi_scroll_rec(_obj, rec, NORMAL_COLOR, XI_ATR_ENABLED, 0);
|
||||
make_current(rec);
|
||||
}
|
||||
|
||||
@ -349,8 +353,10 @@ void TSheet_control::set_focus_rec(long rec)
|
||||
{
|
||||
select(rec);
|
||||
r = rec2row(rec);
|
||||
}
|
||||
XI_OBJ cell; XI_MAKE_CELL(&cell, _obj, r, 1);
|
||||
}
|
||||
|
||||
const int c = _type[0] == 'C' ? 2 : 1;
|
||||
XI_OBJ cell; XI_MAKE_CELL(&cell, _obj, r, c);
|
||||
xi_set_focus(&cell);
|
||||
}
|
||||
|
||||
@ -496,7 +502,7 @@ bool TSheet_control::event_handler(XI_OBJ* itf, XI_EVENT *xiev)
|
||||
{
|
||||
const bool on = checked(rec);
|
||||
xiev->v.cell_request.icon_rid = on ? ICO_CHECK_ON : ICO_CHECK_OFF;
|
||||
if (on) src = "X";
|
||||
// if (on) src = "X"; // A volte visualizza la X!
|
||||
}
|
||||
break;
|
||||
case 'M': // Set value for "roman" cell
|
||||
@ -604,16 +610,16 @@ bool TSheet_control::event_handler(XI_OBJ* itf, XI_EVENT *xiev)
|
||||
if (xiev->v.xi_obj->type == XIT_ROW)
|
||||
{
|
||||
int num;
|
||||
XI_OBJ ** column = xi_get_member_list(_obj, &num);
|
||||
XI_OBJ** column = xi_get_member_list(_obj, &num);
|
||||
const int col = xiev->v.select.column;
|
||||
|
||||
const int row = xiev->v.select.xi_obj->v.row;
|
||||
const long rec = row2rec(row);
|
||||
|
||||
if (column[col]->cid >= FIRST_FIELD)
|
||||
const short cid = column[col]->cid;
|
||||
if (cid >= FIRST_FIELD)
|
||||
{
|
||||
toggle(rec);
|
||||
XI_OBJ cell; XI_MAKE_CELL(&cell, _obj, row, col);
|
||||
// XI_OBJ cell; XI_MAKE_CELL(&cell, _obj, row, col);
|
||||
// xi_cell_request(&cell);
|
||||
}
|
||||
else
|
||||
@ -622,7 +628,8 @@ bool TSheet_control::event_handler(XI_OBJ* itf, XI_EVENT *xiev)
|
||||
_sheet->on_key(K_CTRL+'G');
|
||||
else
|
||||
{
|
||||
XI_OBJ cell; XI_MAKE_CELL(&cell, _obj, row,1);
|
||||
const int c = _type[0] == 'C' ? 2 : 1;
|
||||
XI_OBJ cell; XI_MAKE_CELL(&cell, _obj, row, c);
|
||||
xi_set_focus(&cell);
|
||||
}
|
||||
}
|
||||
@ -705,9 +712,7 @@ void TSheet::repos_buttons() const
|
||||
if (buttons == 0)
|
||||
c.get_rect(br);
|
||||
buttons++;
|
||||
} else
|
||||
if (c.is_edit())
|
||||
((TEdit_field&)c).autoselect(FALSE);
|
||||
}
|
||||
}
|
||||
|
||||
RCT wr; xvt_vobj_get_client_rect(win(), &wr);
|
||||
|
Loading…
x
Reference in New Issue
Block a user