date.cpp Corretta add_month per mesi maggiori di 12

mask.cpp     Corretto ritorno da Winhelp
mov.h        Aggiunto #ifdef iniziale
msksheet.cpp Corretta colorazione righe
rmov.h	     Aggiunto #ifdef iniziale
rmoviva.h    Aggiunto #ifdef iniziale
relapp.cpp   Aggiunto messaggio di avvertimento in cancellazione rapida


git-svn-id: svn://10.65.10.50/trunk@4753 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 1997-06-25 07:04:37 +00:00
parent 105546cebf
commit a2439c25b1
9 changed files with 133 additions and 122 deletions

View File

@ -372,24 +372,22 @@ long TDate::julian2date(long julian) const
int TDate::day() const int TDate::day() const
{ {
return (int) (_val % 100L); return int(_val % 100L);
} }
int TDate::month() const int TDate::month() const
{ {
return (int) ((_val % 10000L) / 100L); return int((_val % 10000L) / 100L);
} }
int TDate::year() const int TDate::year() const
{ {
return (int) (_val / 10000L); return int(_val / 10000L);
} }
int TDate::week() const int TDate::week() const
{ {
TDate y(*this); TDate y(*this);
y.set_day(1); y.set_day(1);
@ -399,12 +397,11 @@ int TDate::week() const
void TDate::addmonth(int nmonth) void TDate::addmonth(int nmonth)
{ {
const int wday = day(); const int wday = day();
int wmonth = month() + nmonth, wyear = year(); int wyear = year();
int wmonth = month() + nmonth;
if (wmonth > 12) while (wmonth > 12)
{ {
wmonth -= 12; wmonth -= 12;
wyear++; wyear++;
@ -412,13 +409,11 @@ void TDate::addmonth(int nmonth)
_val = makedata(wday, wmonth, wyear); _val = makedata(wday, wmonth, wyear);
} }
void TDate::addyear(int nyear) void TDate::addyear(int nyear)
{ {
const int wday = day(), wmonth = month(); const int wday = day();
int wyear = year() + nyear; const int wmonth = month();
const int wyear = year() + nyear;
_val = makedata(wday, wmonth, wyear); _val = makedata(wday, wmonth, wyear);
} }

View File

@ -747,7 +747,6 @@ bool TMask::on_key(
HWND hwnd = (HWND)xvt_vobj_get_attr(TASK_WIN, ATTR_NATIVE_WINDOW); HWND hwnd = (HWND)xvt_vobj_get_attr(TASK_WIN, ATTR_NATIVE_WINDOW);
WinHelp(hwnd, hlp, HELP_MULTIKEY, (DWORD)&mk); WinHelp(hwnd, hlp, HELP_MULTIKEY, (DWORD)&mk);
next_page(0);
} }
#endif #endif
break; break;
@ -1318,11 +1317,11 @@ void TMask::autosave(TRelation& r) const
{ {
// tenta di effettuare il save dei campi Edit hidden: // tenta di effettuare il save dei campi Edit hidden:
// salva il nuovo valore solo se il precedente era blank // salva il nuovo valore solo se il precedente era blank
TEditable_field& e = (TEditable_field&)f; TEditable_field& e = (TEditable_field&)f;
if (e.field() != NULL) { if (e.field() != NULL) {
TString str; TString str;
str = l.field()->read(r); str = l.field()->read(r);
save = str.empty(); save = str.empty();
} }
} }
if (save) if (save)
@ -1877,30 +1876,30 @@ void TMask::set_exchange(
TTimed_box::TTimed_box(const char * header,const char * message,int seconds,short button_id,int x,int y) TTimed_box::TTimed_box(const char * header,const char * message,int seconds,short button_id,int x,int y)
: TMask(header,1,x,y) : TMask(header,1,x,y)
{ {
// costruisce una maschera run time // costruisce una maschera run time
add_memo(FIRST_FIELD, 0, "", 1, 0,-1,-3); add_memo(FIRST_FIELD, 0, "", 1, 0,-1,-3);
set(FIRST_FIELD, message); set(FIRST_FIELD, message);
// setta il timer per l'evento // setta il timer per l'evento
_timer_delay=seconds *1000+1; _timer_delay=seconds *1000+1;
_timer_id=XVT_TIMER_ERROR; _timer_id=XVT_TIMER_ERROR;
_button_id=button_id; _button_id=button_id;
} }
void TTimed_box::start_run() void TTimed_box::start_run()
{ {
if (_timer_id!=XVT_TIMER_ERROR) if (_timer_id!=XVT_TIMER_ERROR)
xvt_timer_destroy(_timer_id); xvt_timer_destroy(_timer_id);
_timer_id=xvt_timer_create(win(),_timer_delay); _timer_id=xvt_timer_create(win(),_timer_delay);
TMask::start_run(); TMask::start_run();
} }
void TTimed_box::handler(WINDOW win, EVENT* ep) void TTimed_box::handler(WINDOW win, EVENT* ep)
{ {
if (ep->type == E_TIMER && ep->v.timer.id==_timer_id) if (ep->type == E_TIMER && ep->v.timer.id==_timer_id)
{ {
send_key(K_SPACE,DLG_OK); send_key(K_SPACE,DLG_OK);
} }
TMask::handler(win, ep); TMask::handler(win, ep);
} }
TTimed_box::~TTimed_box() TTimed_box::~TTimed_box()
@ -1909,8 +1908,8 @@ TTimed_box::~TTimed_box()
TTimed_breakbox::TTimed_breakbox(const char * message,int seconds,int x,int y) TTimed_breakbox::TTimed_breakbox(const char * message,int seconds,int x,int y)
: TTimed_box("Richiesta di interruzione",message,seconds,DLG_OK,x,y) : TTimed_box("Richiesta di interruzione",message,seconds,DLG_OK,x,y)
{ {
add_button(DLG_CANCEL, 0, "Interrompi", -22, -1, 12, 2,"",0); add_button(DLG_CANCEL, 0, "Interrompi", -22, -1, 12, 2,"",0);
add_button(DLG_OK, 0, "Riprova", -12, -1, 12, 2,"",0); add_button(DLG_OK, 0, "Riprova", -12, -1, 12, 2,"",0);
} }
TTimed_breakbox::~TTimed_breakbox() TTimed_breakbox::~TTimed_breakbox()

View File

@ -1,5 +1,5 @@
#ifndef _FLD_MOV_H #ifndef __MOV_H
#define _FLD_MOV_H #define __MOV_H
#define MOV_ANNOES "ANNOES" #define MOV_ANNOES "ANNOES"
#define MOV_ANNOIVA "ANNOIVA" #define MOV_ANNOIVA "ANNOIVA"

View File

@ -10,8 +10,11 @@ extern "C"
#include <config.h> #include <config.h>
#include <controls.h> #include <controls.h>
#include <msksheet.h> #include <msksheet.h>
#include <recarray.h>
#include <relation.h>
#include <urldefid.h> #include <urldefid.h>
#include <utility.h> #include <utility.h>
/////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////
// TSpreadsheet // TSpreadsheet
/////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////
@ -1700,9 +1703,13 @@ void TSpreadsheet::set_back_and_fore_color(COLOR back, COLOR fore, int row)
{ {
if (back != COLOR_INVALID || fore != COLOR_INVALID) if (back != COLOR_INVALID || fore != COLOR_INVALID)
{ {
int first = 0; int first, last;
int last = items()-1; if (row < 0)
if (row > 0) {
first = 0;
last = items()-1;
}
else
first = last = row; first = last = row;
const bool crea = back != NORMAL_BACK_COLOR || fore != NORMAL_COLOR; const bool crea = back != NORMAL_BACK_COLOR || fore != NORMAL_COLOR;
@ -1730,13 +1737,13 @@ void TSpreadsheet::get_back_and_fore_color(COLOR& back, COLOR& fore, int row)
if (prop->_fore != NORMAL_COLOR) if (prop->_fore != NORMAL_COLOR)
fore = prop->_fore; fore = prop->_fore;
} }
/* /*
else else
{ {
back = NORMAL_BACK_COLOR; back = NORMAL_BACK_COLOR;
fore = NORMAL_COLOR; fore = NORMAL_COLOR;
} }
*/ */
} }
// @doc INTERNAL // @doc INTERNAL
@ -2713,34 +2720,34 @@ TRectype * TSheet_field::putkey(const TRelation& r)
// Certified: ...under debug.. // Certified: ...under debug..
bool TSheet_field::autoload_line(int i,TRectype & rec) bool TSheet_field::autoload_line(int i,TRectype & rec)
{ {
TToken_string &row= this->row(i-1); TToken_string &row= this->row(i-1);
row = ""; row = "";
// riempie le colonne dello sheet i cui campi hanno attributo "FIELD" // riempie le colonne dello sheet i cui campi hanno attributo "FIELD"
/*for (int f=FIRST_FIELD; f<=_last_column_id; f++) { /*for (int f=FIRST_FIELD; f<=_last_column_id; f++) {
TFieldref const *dbfield=sheet_mask().field(f).field(); TFieldref const *dbfield=sheet_mask().field(f).field();
if (dbfield) { if (dbfield) {
row.add(dbfield->read(rec),cid2index(f)); row.add(dbfield->read(rec),cid2index(f));
} }
// completa l'operazione con le funzioni definite dall'utente // completa l'operazione con le funzioni definite dall'utente
} */ } */
for (int j = 0; j < sheet_mask().fields(); j++) for (int j = 0; j < sheet_mask().fields(); j++)
{ {
TMask_field& mf = sheet_mask().fld(j); TMask_field& mf = sheet_mask().fld(j);
const short id = mf.dlg(); const short id = mf.dlg();
TFieldref const *dbfield=mf.field(); TFieldref const *dbfield=mf.field();
if (dbfield) { if (dbfield) {
if (id>=FIRST_FIELD && id<=_last_column_id) { if (id>=FIRST_FIELD && id<=_last_column_id) {
row.add(dbfield->read(rec),cid2index(id)); row.add(dbfield->read(rec),cid2index(id));
} else { } else {
mf.set(dbfield->read(rec)); mf.set(dbfield->read(rec));
} }
} }
} }
// completa l'operazione con le funzioni definite dall'utente // completa l'operazione con le funzioni definite dall'utente
if (_userget) if (_userget)
_userget(*this,i); _userget(*this,i);
check_row(i-1); check_row(i-1);
return TRUE; return TRUE;
} }
@ -2751,18 +2758,18 @@ bool TSheet_field::autosave_line(int i,TRectype & rec)
{ {
TMask_field& mf = sheet_mask().fld(j); TMask_field& mf = sheet_mask().fld(j);
const short id = mf.dlg(); const short id = mf.dlg();
TFieldref const *dbfield=mf.field(); TFieldref const *dbfield=mf.field();
if (dbfield) if (dbfield)
{ {
if (id>=FIRST_FIELD && id<=_last_column_id) if (id>=FIRST_FIELD && id<=_last_column_id)
dbfield->write(cell(i-1,cid2index(id)),rec); dbfield->write(cell(i-1,cid2index(id)),rec);
else else
dbfield->write(mf.get(), rec); dbfield->write(mf.get(), rec);
} }
} }
// completa l'operazione con le funzioni definite dall'utente // completa l'operazione con le funzioni definite dall'utente
if (_userput) if (_userput)
_userput(*this,i); _userput(*this,i);
return FALSE; return FALSE;
} }
@ -2811,7 +2818,7 @@ bool TSheet_field::autosave(TRelation& rel)
// trasferisce le linee dallo sheet al record array (ignorando righe vuote alla fine) // trasferisce le linee dallo sheet al record array (ignorando righe vuote alla fine)
int i= items(); int i= items();
while (i >= 1 && row(i-1).empty_items()) while (i >= 1 && row(i-1).empty_items())
i--; i--;
for (; i >= 1; i--) for (; i >= 1; i--)
{ {
TRectype &rec = _linee_rec->row(i, TRUE); TRectype &rec = _linee_rec->row(i, TRUE);

View File

@ -1,20 +1,21 @@
#ifndef __MSKSHEET_H #ifndef __MSKSHEET_H
#define __MSKSHEET_H #define __MSKSHEET_H
#ifndef __ISAM_H
class TLocalisamfile;
class TRectype;
#endif
#ifndef __MASK_H #ifndef __MASK_H
#include <mask.h> #include <mask.h>
#endif #endif
#ifndef __ISAM_H
#include <isam.h>
#endif
#ifndef __RECARRAY_H #ifndef __RECARRAY_H
#include <recarray.h> class TRecord_array;
#endif #endif
#ifndef __RELATION_H #ifndef __RELATION_H
#include <relation.h> class TRelation;
#endif #endif
#define FIRST_FIELD 101 #define FIRST_FIELD 101
@ -55,15 +56,15 @@ class TSheet_field : public TLoadable_field
// @cmember:(INTERNAL) Campi di input sulla maschera (key field ids) // @cmember:(INTERNAL) Campi di input sulla maschera (key field ids)
TToken_string _file_k_ids; TToken_string _file_k_ids;
// @cmember:(INTERNAL) file delle righe // @cmember:(INTERNAL) file delle righe
TLocalisamfile * _sheetfile; TLocalisamfile * _sheetfile;
// @cmember:(INTERNAL) record array delle righe // @cmember:(INTERNAL) record array delle righe
TRecord_array *_linee_rec; TRecord_array* _linee_rec;
// @cmember:(INTERNAL) indicatore di record array gestito esternamente // @cmember:(INTERNAL) indicatore di record array gestito esternamente
bool _external_record; bool _external_record;
// @cmember:(INTERNAL) funzioni utente per get tra record (array) e array righe // @cmember:(INTERNAL) funzioni utente per get tra record (array) e array righe
SHEET_USERGETPUT _userput; SHEET_USERGETPUT _userput;
// @cmember:(INTERNAL) funzioni utente per put tra righe e record (array) // @cmember:(INTERNAL) funzioni utente per put tra righe e record (array)
SHEET_USERGETPUT _userget; SHEET_USERGETPUT _userget;
// @access Protected Member // @access Protected Member
protected: protected:
@ -83,8 +84,8 @@ protected:
// @cmember Legge gli item dello spreadsheet da <p scanner> // @cmember Legge gli item dello spreadsheet da <p scanner>
virtual bool parse_item(TScanner& scanner); virtual bool parse_item(TScanner& scanner);
// @cmember Legge gli input (campi chiave) dello spreadsheet da <p scanner> // @cmember Legge gli input (campi chiave) dello spreadsheet da <p scanner>
void parse_input(TScanner& scanner); void parse_input(TScanner& scanner);
// @cmember Crea lo spreadsheet // @cmember Crea lo spreadsheet
virtual void create(WINDOW parent); virtual void create(WINDOW parent);
// @cmember Setta il focus sul campo // @cmember Setta il focus sul campo
@ -103,29 +104,29 @@ public:
virtual bool is_sheet() const { return TRUE; } virtual bool is_sheet() const { return TRUE; }
// @cmember Legge automaticamente la linea dal record array assegnato // @cmember Legge automaticamente la linea dal record array assegnato
virtual bool autoload_line(int i,TRectype & rec); virtual bool autoload_line(int i,TRectype & rec);
// @cmember Salva automaticamente la linea nel record array assegnato // @cmember Salva automaticamente la linea nel record array assegnato
virtual bool autosave_line(int i,TRectype & rec); virtual bool autosave_line(int i,TRectype & rec);
// @cmember Legge automaticamente lo sheet dal record array assegnato // @cmember Legge automaticamente lo sheet dal record array assegnato
virtual bool autoload(const TRelation& r); virtual bool autoload(const TRelation& r);
// @cmember Salva automaticamente lo sheet nel record array assegnato // @cmember Salva automaticamente lo sheet nel record array assegnato
virtual bool autosave(TRelation& r) ; virtual bool autosave(TRelation& r) ;
// @cmember setta la funzione utente che Legge i campi dello sheet // @cmember setta la funzione utente che Legge i campi dello sheet
void set_userget(SHEET_USERGETPUT handler); void set_userget(SHEET_USERGETPUT handler);
// @cmember setta la funzione utente che scrive i campi dello sheet // @cmember setta la funzione utente che scrive i campi dello sheet
void set_userput(SHEET_USERGETPUT handler); void set_userput(SHEET_USERGETPUT handler);
// @cmember carica le chiavi del record array dello sheet // @cmember carica le chiavi del record array dello sheet
TRectype * putkey(const TRelation& r); TRectype * putkey(const TRelation& r);
// @cmember restituisce il record array assegnato allo sheet // @cmember restituisce il record array assegnato allo sheet
TRecord_array * record() const {return _linee_rec;} TRecord_array * record() const {return _linee_rec;}
// @cmember Imposta un record array esterno che contiene le righe dello sheet // @cmember Imposta un record array esterno che contiene le righe dello sheet
void set_lines_record(TRecord_array &); void set_lines_record(TRecord_array &);
// @cmember Ritorna se il record assegnato è gestito esternamente (read/write/remove) // @cmember Ritorna se il record assegnato è gestito esternamente (read/write/remove)
bool external_record() const {return _external_record;} bool external_record() const {return _external_record;}
// @cmember Ritorna una riga dello spreadsheet // @cmember Ritorna una riga dello spreadsheet
TToken_string& row(int n); TToken_string& row(int n);
// @cmember Ritorna un array con tutte le righe dello spreadsheet // @cmember Ritorna un array con tutte le righe dello spreadsheet
TString_array& rows_array() const; TString_array& rows_array() const;

View File

@ -1,3 +1,6 @@
#ifndef __PAGSCA_H
#define __PAGSCA_H
#define PAGSCA_ANNO "ANNO" #define PAGSCA_ANNO "ANNO"
#define PAGSCA_NRIGA "NRIGA" #define PAGSCA_NRIGA "NRIGA"
#define PAGSCA_NRATA "NRATA" #define PAGSCA_NRATA "NRATA"
@ -28,3 +31,4 @@
#define PAGSCA_CONTOC "CONTOC" #define PAGSCA_CONTOC "CONTOC"
#define PAGSCA_SOTTOCONTC "SOTTOCONTC" #define PAGSCA_SOTTOCONTC "SOTTOCONTC"
#endif

View File

@ -3,6 +3,7 @@
#include <sheet.h> #include <sheet.h>
#include <msksheet.h> #include <msksheet.h>
#include <urldefid.h> #include <urldefid.h>
#include <recarray.h>
#include <relapp.h> #include <relapp.h>
#include <utility.h> #include <utility.h>
@ -465,6 +466,7 @@ int TRelation_application::delete_mode()
if (yesno_box(msg)) if (yesno_box(msg))
{ {
TWait_cursor hourglass; TWait_cursor hourglass;
long skipped = 0; // Record non cancellati perche' protetti
cur->freeze(TRUE); // Congelo il cursore altrimenti si riaggiorna troppo cur->freeze(TRUE); // Congelo il cursore altrimenti si riaggiorna troppo
for (long pos = 0; deleting > 0; pos++) for (long pos = 0; deleting > 0; pos++)
{ {
@ -475,17 +477,20 @@ int TRelation_application::delete_mode()
if (find(1) && modify_mode()) if (find(1) && modify_mode())
{ {
_autodelete = 0x3; _autodelete = 0x3;
if (protected_record(get_relation()->curr())) bool can_delete = !protected_record(get_relation()->curr());
warning_box("Documento non eliminabile");
else
remove();
_autodelete = FALSE; _autodelete = FALSE;
if (can_delete)
remove();
else
skipped++;
query_mode(); query_mode();
} }
deleting--; deleting--;
} }
} }
cur->freeze(FALSE); cur->freeze(FALSE);
if (skipped > 0)
warning_box("%ld documenti non sono stati cancellati in quanto protetti.");
} }
} }
} }

View File

@ -1,5 +1,5 @@
#ifndef _FLD_RMOV_H #ifndef __RMOV_H
#define _FLD_RMOV_H #define __RMOV_H
#define RMV_ANNOES "ANNOES" #define RMV_ANNOES "ANNOES"
#define RMV_NUMREG "NUMREG" #define RMV_NUMREG "NUMREG"

View File

@ -1,5 +1,5 @@
#ifndef _FLD_RMOVIVA_H #ifndef __RMOVIVA_H
#define _FLD_RMOVIVA_H #define __RMOVIVA_H
#define RMI_ANNOES "ANNOES" #define RMI_ANNOES "ANNOES"
#define RMI_NUMREG "NUMREG" #define RMI_NUMREG "NUMREG"