Modificati sheet con bottone

git-svn-id: svn://10.65.10.50/trunk@1136 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
villa 1995-03-16 10:17:44 +00:00
parent 911467bab7
commit f83e091ba4

View File

@ -45,8 +45,6 @@ class TSpreadsheet : public TWindow
bool _row_dirty; // Current row changed bool _row_dirty; // Current row changed
bool _check_enabled; // Perform OFF_ROW and OFF_CELL checks bool _check_enabled; // Perform OFF_ROW and OFF_CELL checks
bool _update; // It's safe to update the display bool _update; // It's safe to update the display
TString16 _button;
static void xiev_handler(XI_OBJ *itf, XI_EVENT *xiev); static void xiev_handler(XI_OBJ *itf, XI_EVENT *xiev);
void init(); void init();
@ -221,12 +219,27 @@ TSpreadsheet::TSpreadsheet(short x, short y, short dx, short dy,
listdef->v.list->min_cell_height = CHARY; listdef->v.list->min_cell_height = CHARY;
listdef->v.list->min_heading_height = CHARY; listdef->v.list->min_heading_height = CHARY;
listdef->v.list->white_space_color = MASK_DARK_COLOR; listdef->v.list->white_space_color = MASK_DARK_COLOR;
XI_OBJ_DEF* coldef = xi_add_column_def(listdef, 0, word attr = XI_ATR_RJUST;
XI_ATR_RJUST, 0, NUMBER_WIDTH, NUMBER_WIDTH, ""); if (_mask.id2pos(FIRST_FIELD -1) != -1)
attr |= XI_ATR_SELECTABLE;
XI_OBJ_DEF* coldef = xi_add_column_def(listdef, 0, attr, 0, NUMBER_WIDTH, NUMBER_WIDTH,
attr & XI_ATR_SELECTABLE ? "X" : "");
coldef->v.column->heading_platform = TRUE; coldef->v.column->heading_platform = TRUE;
coldef->v.column->column_platform = TRUE; coldef->v.column->column_platform = TRUE;
coldef->v.column->center_heading = TRUE;
if (attr & XI_ATR_SELECTABLE)
{
coldef->v.column->icon_rid = ICO_SEARCH;
coldef->v.column->icon_x = 2; // (v_width[i]*CHARX-16) >> 1;
// coldef->v.column->icon_y = (CHARY-16) >> 1;
listdef->v.list->min_heading_height = 16;
}
else
coldef->v.column->center_heading = TRUE;
for (h = new_header.get(0), i = 0; h; h = new_header.get(), i++) for (h = new_header.get(0), i = 0; h; h = new_header.get(), i++)
{ {
@ -252,19 +265,19 @@ TSpreadsheet::TSpreadsheet(short x, short y, short dx, short dy,
(char*)(const char*)testo); (char*)(const char*)testo);
coldef->v.column->heading_platform = TRUE; coldef->v.column->heading_platform = TRUE;
coldef->v.column->center_heading = TRUE; coldef->v.column->center_heading = TRUE;
if (acqua == CLASS_BUTTON_FIELD) // if (acqua == CLASS_BUTTON_FIELD)
{ // {
const TFixed_string testa(header.get(i)); // const TFixed_string testa(header.get(i));
const int diesis = testa.find('#'); // const int diesis = testa.find('#');
if (diesis > 0) // if (diesis > 0)
{ // {
_button = testa.mid(diesis+1); // _button = testa.mid(diesis+1);
coldef->v.column->icon_x = (v_width[i]*CHARX-16) >> 1; // coldef->v.column->icon_x = (v_width[i]*CHARX-16) >> 1;
coldef->v.column->icon_y = (CHARY-16) >> 1; // coldef->v.column->icon_y = (CHARY-16) >> 1;
coldef->v.column->column_platform = TRUE; // coldef->v.column->column_platform = TRUE;
} // }
else _button = testo; // else _button = testo;
} // }
} }
RCT itfrct; RCT itfrct;
@ -532,30 +545,35 @@ void TSpreadsheet::list_handler(XI_EVENT *xiev)
TMask_field* f = field(cid); TMask_field* f = field(cid);
const int acqua = f->class_id(); const int acqua = f->class_id();
if (acqua == CLASS_BUTTON_FIELD) // if (acqua == CLASS_BUTTON_FIELD)
{ // {
if (isdigit(_button[0])) // if (isdigit(_button[0]))
xiev->v.cell_request.icon_rid = atoi(_button); // xiev->v.cell_request.icon_rid = atoi(_button);
else // else
src = _button; // src = _button;
} // }
else // else
// {
src = row(rec).get(col); // Set value for cell
if (src && *src && f->is_edit())
{ {
src = row(rec).get(col); // Set value for cell src = f->picture_data(src, FALSE); // Get formatted string
if (src && *src && f->is_edit())
{
src = f->picture_data(src, FALSE); // Get formatted string
}
if (field(cid)->has_query())
{
xiev->v.cell_request.button = TRUE;
xiev->v.cell_request.button_on_focus = TRUE;
}
if (cell_disabled(rec, col))
xiev->v.cell_request.back_color = DISABLED_BACK_COLOR;
} }
if (field(cid)->has_query())
{
xiev->v.cell_request.button = TRUE;
xiev->v.cell_request.button_on_focus = TRUE;
}
if (cell_disabled(rec, col))
xiev->v.cell_request.back_color = DISABLED_BACK_COLOR;
// }
} }
} else src = format("%d", rec+1); }
else
{
src = format("%d", rec+1);
xiev->v.cell_request.color = COLOR_RED;
}
char* dst = xiev->v.cell_request.s; char* dst = xiev->v.cell_request.s;
if (src && *src) if (src && *src)
@ -596,12 +614,15 @@ void TSpreadsheet::list_handler(XI_EVENT *xiev)
update(_cur_rec); update(_cur_rec);
TMask_field* button = col2field(_cur_col); if (_mask.id2pos(FIRST_FIELD-1) != -1)
button->on_hit(); {
if (_mask.dirty()) TMask_field* button = &_mask.field(FIRST_FIELD-1);
{ button->on_hit();
notify_change(); if (_mask.dirty())
mask2str(_cur_rec); {
notify_change();
mask2str(_cur_rec);
}
} }
_check_enabled = TRUE; _check_enabled = TRUE;
} }