maskfld.cpp MOdificata picture_data per correggere gli sheet

maskfld.h       Resa virtuale enabled e poi rimesssa come prima
msksheet.cpp    Corretta gestione di set_focus_cell e select
real.cpp        Cambiato il valore di ritorno delle fnc_min e fnc_max
real.h          Modificata dichiarazione di fnc_* di conseguenza


git-svn-id: svn://10.65.10.50/trunk@1941 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 1995-10-11 11:42:19 +00:00
parent 6398370de6
commit a57f4d2b69
5 changed files with 92 additions and 63 deletions

View File

@ -479,13 +479,15 @@ const char* TMask_field::picture_data(
// il contenuto delle celle con lo stesso formato deglia altri campi della maschera
// dell stesso tipo.
{
fpark = data;
if (video)
{
fpark = data;
fpark.trim();
if (_flags.uppercase) fpark.upper();
if (_flags.uppercase)
fpark.upper();
return fpark;
}
return fpark;
return data;
}
@ -2129,7 +2131,7 @@ const char* TEdit_field::format(const char* d)
if (len > _size)
{
#ifdef DBG
yesnofatal_box("Campo %d troppo lungo: %d > %d", dlg(), fpark.len(), _size);
yesnofatal_box("Campo %d troppo lungo: %s > %d", dlg(), (const char*)fpark, _size);
#endif
fpark.cut(len = _size);
}
@ -2159,20 +2161,9 @@ const char* TEdit_field::format(const char* d)
const char* TEdit_field::picture_data(const char* data, bool video)
{
if (video)
{
data = format(data);
xvt_vobj_set_title(win(), (char*)data);
return get_window_data();
}
set_window_data(data);
TMask_field::get_window_data();
if (_flags.trim) fpark.trim();
return fpark;
fpark = video ? data : format(data);
return fpark.trim();
}
@ -2770,18 +2761,7 @@ bool TDate_field::autosave(TRelation* r) const
const char* TDate_field::picture_data(const char* data, bool video)
{
if (video)
{
data = format_data(data);
xvt_vobj_set_title(win(), (char*)data);
return get_window_data();
}
set_window_data(data);
TMask_field::get_window_data();
if (_flags.trim) fpark.trim();
return fpark;
return video ? format_data(data) : data;
}
@ -2872,13 +2852,12 @@ void TReal_field::parse_head(TScanner& scanner)
}
void TReal_field::set_window_data(const char* data)
{
{
if (data == NULL) data = "";
if (roman())
{
data = itor(atoi(data));
TMask_field::set_window_data(data);
}
else
{
@ -2891,13 +2870,20 @@ void TReal_field::set_window_data(const char* data)
n /= e;
}
if (_picture.empty())
data = n.stringa(_size, _decimals);
{
const char pad = _flags.zerofilled ? '0' : ' ';
data = n.stringa(_size, _decimals, pad);
}
else
data = n.string(_picture);
{
fpark = n.string(_picture);
fpark.right_just(_size);
data = fpark;
}
}
else data = "";
TEdit_field::set_window_data(data);
}
TMask_field::set_window_data(data);
}
const char* TReal_field::get_window_data() const
@ -2932,8 +2918,35 @@ const char* TReal_field::get_window_data() const
}
return fpark;
}
const char* TReal_field::picture_data(const char* data, bool video)
{
if (video)
{
fpark = real::ita2eng(data);
}
else
{
const real n(data);
if (!n.is_zero())
{
if (_picture.empty())
{
const char pad = _flags.zerofilled ? '0' : ' ';
fpark = n.stringa(_size, _decimals, pad);
}
else
fpark = n.string(_picture);
}
else
fpark.cut(0);
}
return fpark.trim();
}
void TReal_field::set_decimals(int d)
{
_decimals = d;

View File

@ -680,6 +680,8 @@ protected:
virtual void set_window_data(const char* data);
// @cmember Setta il valore del cambio nel campo
virtual void exchange(bool show_value, const real& n);
virtual const char* picture_data(const char* data, bool video);
// @cmember Crea il controllo
virtual void create(WINDOW parent);

View File

@ -253,8 +253,8 @@ TSpreadsheet::TSpreadsheet(
const char* head, // @parm Titolo della maschera
WINDOW parent, // @parm Finestra alla quale appartiene lo spreadsheet
TSheet_field* o) // @parm Indica il campo della maschera che contiene lo spreadsheet
: _mask(maskname, maskno), _notify(NULL), _edit_field(NULL), _getmask( NULL ),
_owner(o), _cur_row(0), _cur_col(0), _active(TRUE),
: _mask(maskname, maskno), _notify(NULL), _getmask( NULL ), _owner(o),
_cur_row(0), _cur_col(0), _cur_rec(0), _edit_field(NULL), _active(TRUE),
_row_dirty(FALSE), _check_enabled(TRUE), _firstfocus(TRUE),
_needs_update(-1)
{
@ -304,7 +304,7 @@ TSpreadsheet::TSpreadsheet(
v = m+(f->has_query() ? 1 : 0);
}
if (f->is_edit() && m < f->size())
if (f->is_edit())
m = f->size();
if (v > 69)
v = 69;
@ -517,18 +517,25 @@ void TSpreadsheet::update_rec(int rec)
{
if (rec == selected())
xi_set_focus(_itf);
XI_OBJ row;
XI_MAKE_ROW(&row, _list, riga);
xi_cell_request(&row); // Update internal values
if (rec == selected())
set_focus_cell(riga, _cur_col);
{
str2mask(_cur_rec);
set_focus_cell(riga, _cur_col);
}
}
}
void TSpreadsheet::set_focus_cell(int riga, int colonna)
{
{
xvt_scr_set_focus_vobj(win());
mask().set_focus_win(win(), FALSE);
const int r = row2rec(riga);
if (colonna <= 0) colonna = 1;
@ -543,17 +550,13 @@ void TSpreadsheet::set_focus_cell(int riga, int colonna)
XI_MAKE_CELL(&cell, _list, riga, colonna);
xi_set_focus(&cell);
if (_edit_field == NULL || r == _cur_rec)
{
if (_edit_field == NULL)
{
_cur_row = riga;
_cur_col = colonna;
_cur_rec = r;
_row_dirty = FALSE;
}
_edit_field = col2field(colonna);
_edit_field = col2field(_cur_col = colonna);
if (r != _cur_rec)
{
_cur_rec = r;
_cur_row = riga;
str2mask(_cur_rec);
_row_dirty = FALSE;
}
}
}
@ -856,8 +859,11 @@ void TSpreadsheet::list_handler(XI_EVENT *xiev)
if (k == K_DEL)
{
_row_dirty = _cell_dirty = FALSE;
if (_cur_rec >= items())
_cur_rec = items() - 1;
if (_cur_rec == items()-1)
{
_cur_rec--;
_cur_row--;
}
}
if (_cur_rec >= 0)
@ -1001,7 +1007,7 @@ void TSpreadsheet::list_handler(XI_EVENT *xiev)
case K_F1:
case K_SHIFT+K_F1:
_check_enabled = FALSE; // Disable checks
_edit_field->on_key(K_F1);
_edit_field->on_key(k);
set_focus_cell(_cur_row, _cur_col);
_check_enabled = TRUE; // Enable checks
break;
@ -1111,11 +1117,16 @@ void TSpreadsheet::activate(bool on)
}
}
void TSpreadsheet::select(int r)
{
xi_scroll_rec(_list, r, NORMAL_COLOR, XI_ATR_ENABLED | XI_ATR_AUTOSELECT, 0);
_edit_field = NULL;
set_focus_cell(0, 1);
void TSpreadsheet::select(int rec)
{
int row = rec2row(rec);
if (row < 0)
{
xi_scroll_rec(_list, rec, NORMAL_COLOR, XI_ATR_ENABLED | XI_ATR_AUTOSELECT, 0);
row = 0;
}
_cur_rec = -1;
set_focus_cell(row, 1);
}
#else
@ -1699,7 +1710,11 @@ void TSheet_field::create(WINDOW parent)
_win = _sheet->win();
xvt_vobj_set_visible(_win, shown());
if (!enabled()) disable();
if (!_flags.enable_default)
{
_flags.enabled = TRUE; // Lo sheet e' sempre operabile anche se non editabile
disable();
}
}
@ -1739,7 +1754,6 @@ TToken_string& TSheet_field::row(
if (n >= max)
{
n = _sheet->add(new TToken_string(80));
// force_update(n);
}
}
return _sheet->row(n);

View File

@ -839,7 +839,7 @@ void swap (
}
// @func Ritorna il numero reale piu' piccolo tra <p a> e <p b>
real fnc_min (
const real& fnc_min (
const real & a, // @parm Primo numero da confrontare
const real & b) // @parm Secondo numero da confrontare
@ -850,7 +850,7 @@ real fnc_min (
// @func Ritorna il numero reale piu' grande tra <p a> e <p b>
real fnc_max (
const real& fnc_max (
const real & a, // @parm Primo numero da confrontare
const real & b) // @parm Secondo numero da confrontare

View File

@ -160,8 +160,8 @@ inline bool operator !=(const real& a, double b) { return operator !=(b, a); }
real operator %(const real& a, const long b) ;
void swap(real& a, real& b) ;
real fnc_min(const real& a, const real& b) ;
real fnc_max(const real& a, const real& b) ;
const real& fnc_min(const real& a, const real& b) ;
const real& fnc_max(const real& a, const real& b) ;
real sqrt(const real& a) ;
real sqr(const real& a) ;
real exp10(const real& a) ;