From a51c0254ebb005873d0558646de615f3a50586bd Mon Sep 17 00:00:00 2001 From: alex Date: Mon, 22 Jan 1996 10:02:16 +0000 Subject: [PATCH] Corretti errori PR e iniziato supporto XI git-svn-id: svn://10.65.10.50/trunk@2479 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- include/msksheet.cpp | 58 +++++++++++++++++++++++++++++++++++--------- 1 file changed, 47 insertions(+), 11 deletions(-) diff --git a/include/msksheet.cpp b/include/msksheet.cpp index 65c88d7ed..f140bfbc5 100755 --- a/include/msksheet.cpp +++ b/include/msksheet.cpp @@ -347,8 +347,10 @@ TSpreadsheet::TSpreadsheet( } RCT rct = resize_rect(x, y, dx, dy, WO_TE, parent); - rct.bottom -= 12; - rct.right -= 28; +#ifndef XI_FU_MULTIPLE + // rct.bottom -= 12 ; + // rct.right -= 28; +#endif if ((f_width+max_width)*CHARX > rct.right) fixed_columns = 1; @@ -358,7 +360,19 @@ TSpreadsheet::TSpreadsheet( PTR_LONG(this)); itfdef->v.itf->automatic_back_color = FALSE; itfdef->v.itf->back_color = MASK_BACK_COLOR; + +#ifdef XI_FU_MULTIPLE + const short work_dx = ((rct.right - rct.left) * XI_FU_MULTIPLE) / CHARX - 3 * XI_FU_MULTIPLE; + const short work_dy = ((rct.bottom - rct.top ) * XI_FU_MULTIPLE) / CHARY - 2 * XI_FU_MULTIPLE - 6; + XI_OBJ_DEF* listdef = xi_add_list_def(itfdef, LIST_CID, + 0, 0, work_dy, //rct.bottom-rct.top, + XI_ATR_ENABLED | XI_ATR_VISIBLE, + NORMAL_COLOR, NORMAL_BACK_COLOR, // normal + NORMAL_COLOR, DISABLED_BACK_COLOR, // disabled + COLOR_RED, // active + LIST_CID); +#else XI_OBJ_DEF* listdef = xi_add_list_def(itfdef, LIST_CID, 0, 0, rct.bottom-rct.top, XI_ATR_ENABLED | XI_ATR_VISIBLE, @@ -366,12 +380,17 @@ TSpreadsheet::TSpreadsheet( NORMAL_COLOR, DISABLED_BACK_COLOR, // disabled COLOR_RED, // active LIST_CID); +#endif listdef->v.list->sizable_columns = TRUE; listdef->v.list->movable_columns = TRUE; listdef->v.list->scroll_bar = TRUE; listdef->v.list->scroll_bar_button = TRUE; listdef->v.list->fixed_columns = fixed_columns; +#ifdef XI_FU_MULTIPLE + listdef->v.list->width = work_dx; +#else listdef->v.list->width = rct.right-rct.left; +#endif listdef->v.list->min_cell_height = CHARY; listdef->v.list->min_heading_height = CHARY; listdef->v.list->white_space_color = MASK_DARK_COLOR; @@ -380,9 +399,14 @@ TSpreadsheet::TSpreadsheet( if (sheet_mask().id2pos(FIRST_FIELD -1) != -1) attr |= XI_ATR_SELECTABLE; +#ifdef XI_FU_MULTIPLE + XI_OBJ_DEF* coldef = xi_add_column_def(listdef, 0, attr, 0, NUMBER_WIDTH * XI_FU_MULTIPLE, NUMBER_WIDTH+1, + attr & XI_ATR_SELECTABLE ? "X" : ""); +#else XI_OBJ_DEF* coldef = xi_add_column_def(listdef, 0, attr, 0, NUMBER_WIDTH, NUMBER_WIDTH+1, attr & XI_ATR_SELECTABLE ? "X" : ""); +#endif coldef->v.column->heading_platform = TRUE; coldef->v.column->column_platform = TRUE; @@ -422,8 +446,13 @@ TSpreadsheet::TSpreadsheet( if (f->active()) flags |= XI_ATR_ENABLED | XI_ATR_FOCUSBORDER | XI_ATR_AUTOSELECT; else _column_disabled.set(i); +#ifdef XI_FU_MULTIPLE + coldef = xi_add_column_def(listdef, cid, flags, cid, v_width[i] * XI_FU_MULTIPLE, m_width[i], + (char*)(const char*)testo); +#else coldef = xi_add_column_def(listdef, cid, flags, cid, v_width[i], m_width[i], (char*)(const char*)testo); +#endif coldef->v.column->heading_platform = TRUE; coldef->v.column->center_heading = TRUE; } @@ -602,17 +631,24 @@ int TSpreadsheet::find_enabled_column(int rec, int colonna, int direction) const // riga (da 0), colonna (0 = numero, 1 = prima cella, ...) void TSpreadsheet::set_focus_cell(int riga, int colonna) { - xvt_scr_set_focus_vobj(win()); - mask().set_focus_win(win(), FALSE); + const bool has_focus = mask().focus_field().dlg() == _owner->dlg(); + if (has_focus) + { + xvt_scr_set_focus_vobj(win()); + mask().set_focus_win(win(), FALSE); + } const int rec = row2rec(riga); colonna = find_enabled_column(rec, colonna, +1); if (colonna > 0) - { - XI_OBJ cell; - XI_MAKE_CELL(&cell, _list, riga, colonna); - xi_set_focus(&cell); + { + if (has_focus) + { + XI_OBJ cell; + XI_MAKE_CELL(&cell, _list, riga, colonna); + xi_set_focus(&cell); + } _edit_field = col2field(_cur_col = colonna); if (rec != _cur_rec) @@ -723,7 +759,7 @@ void TSpreadsheet::update( const long* handle = xi_get_list_info(_list, &num); int first = 0, last = 0; - bool scroll = items() == 0 || !_owner->mask().is_running(); + bool scroll = items() == 0; // || !_owner->mask().is_running(); if (!scroll) { xi_get_visible_rows(_list, &first, &last); @@ -1239,7 +1275,7 @@ void TSpreadsheet::select(int rec, bool scrollto) const int row = rec2row(rec); _cur_rec = -1; - set_focus_cell(row, 1); + set_focus_cell(row, 1); notify(rec, K_TAB); } @@ -2046,7 +2082,7 @@ bool TSheet_field::on_hit() { if (!mask().is_running()) { - force_update(); + force_update(); set_dirty(FALSE); } return TRUE;