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:
parent
6398370de6
commit
a57f4d2b69
@ -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;
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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
|
||||
|
||||
|
@ -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) ;
|
||||
|
Loading…
x
Reference in New Issue
Block a user