applicat.cpp Corretta gestione clessidra
msksheet.cpp Corretta gestione set_focus_cell su celle disabilitate git-svn-id: svn://10.65.10.50/trunk@2152 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
017ac5407f
commit
44778bb392
@ -645,13 +645,11 @@ bool TApplication::config()
|
|||||||
void TApplication::set_cursor(bool w)
|
void TApplication::set_cursor(bool w)
|
||||||
{
|
{
|
||||||
static int _count = 0;
|
static int _count = 0;
|
||||||
WINDOW ww = cur_win();
|
|
||||||
if (ww == NULL_WIN) ww = TASK_WIN;
|
|
||||||
|
|
||||||
if (w)
|
if (w)
|
||||||
{
|
{
|
||||||
if (_count == 0)
|
if (_count == 0)
|
||||||
xvt_win_set_cursor(ww, CURSOR_WAIT);
|
xvt_win_set_cursor(TASK_WIN, CURSOR_WAIT);
|
||||||
_count++;
|
_count++;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -659,7 +657,7 @@ void TApplication::set_cursor(bool w)
|
|||||||
_count--;
|
_count--;
|
||||||
CHECK(_count >= 0, "end_wait without matching begin_wait");
|
CHECK(_count >= 0, "end_wait without matching begin_wait");
|
||||||
if (_count == 0)
|
if (_count == 0)
|
||||||
xvt_win_set_cursor(ww, CURSOR_ARROW);
|
xvt_win_set_cursor(TASK_WIN, CURSOR_ARROW);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -153,6 +153,8 @@ public:
|
|||||||
TString_array& rows_array()
|
TString_array& rows_array()
|
||||||
{ return _str; }
|
{ return _str; }
|
||||||
|
|
||||||
|
// @cmember Trova una colonna abilitata a partire da colonna
|
||||||
|
int find_enabled_column(int rec, int colonna) const;
|
||||||
// @cmember Permette di mettere il focus su una cella
|
// @cmember Permette di mettere il focus su una cella
|
||||||
void set_focus_cell(int riga, int colonna);
|
void set_focus_cell(int riga, int colonna);
|
||||||
// @cmember Abilita/disabilita tutto lo spreadsheet (vedi <mf TMask::activate>)
|
// @cmember Abilita/disabilita tutto lo spreadsheet (vedi <mf TMask::activate>)
|
||||||
@ -541,30 +543,42 @@ void TSpreadsheet::update_rec(int rec)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Cerca una colonna abilitata a partire da colonna
|
||||||
|
// La prima cella utilizzabile ha indice 1
|
||||||
|
int TSpreadsheet::find_enabled_column(int rec, int colonna) const
|
||||||
|
{
|
||||||
|
if (colonna <= 0) colonna = 1;
|
||||||
|
|
||||||
|
const int last = _columns - 1;
|
||||||
|
for (int c = colonna-1; c < last; c++)
|
||||||
|
if (!cell_disabled(rec, c))
|
||||||
|
return c+1;
|
||||||
|
|
||||||
|
for (c = colonna-2; c >= 0; c--)
|
||||||
|
if (!cell_disabled(rec, c))
|
||||||
|
return c+1;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
void TSpreadsheet::set_focus_cell(int riga, int colonna)
|
void TSpreadsheet::set_focus_cell(int riga, int colonna)
|
||||||
{
|
{
|
||||||
xvt_scr_set_focus_vobj(win());
|
xvt_scr_set_focus_vobj(win());
|
||||||
mask().set_focus_win(win(), FALSE);
|
mask().set_focus_win(win(), FALSE);
|
||||||
|
|
||||||
const int r = row2rec(riga);
|
const int rec = row2rec(riga);
|
||||||
|
colonna = find_enabled_column(rec, colonna);
|
||||||
|
|
||||||
if (colonna <= 0) colonna = 1;
|
if (colonna > 0)
|
||||||
|
|
||||||
for (; colonna < _columns; colonna++)
|
|
||||||
if (!cell_disabled(r, colonna-1))
|
|
||||||
break;
|
|
||||||
|
|
||||||
if (colonna <= _columns)
|
|
||||||
{
|
{
|
||||||
XI_OBJ cell;
|
XI_OBJ cell;
|
||||||
XI_MAKE_CELL(&cell, _list, riga, colonna);
|
XI_MAKE_CELL(&cell, _list, riga, colonna);
|
||||||
xi_set_focus(&cell);
|
xi_set_focus(&cell);
|
||||||
|
|
||||||
_edit_field = col2field(_cur_col = colonna);
|
_edit_field = col2field(_cur_col = colonna);
|
||||||
if (r != _cur_rec)
|
if (rec != _cur_rec)
|
||||||
{
|
{
|
||||||
_cur_rec = r;
|
_cur_rec = rec;
|
||||||
_cur_row = riga;
|
_cur_row = riga;
|
||||||
str2mask(_cur_rec);
|
str2mask(_cur_rec);
|
||||||
_row_dirty = FALSE;
|
_row_dirty = FALSE;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user