From 2cd2de17dd3e5241150a118ede839d5e395453be Mon Sep 17 00:00:00 2001 From: AlexBonazzi Date: Mon, 27 May 2019 18:05:00 +0200 Subject: [PATCH] Patch level : 12.0 800 Files correlati : cg5.exe Commento : Spostata la colonna iva a credito o debito nella seconda colonna nella visualizzazione liquidazione --- src/include/msksheet.cpp | 70 ++++++++++++++ src/include/msksheet.h | 198 ++++++++++++++++++++++----------------- 2 files changed, 180 insertions(+), 88 deletions(-) diff --git a/src/include/msksheet.cpp b/src/include/msksheet.cpp index c02199282..c8a133b7a 100755 --- a/src/include/msksheet.cpp +++ b/src/include/msksheet.cpp @@ -18,6 +18,11 @@ extern "C" #include #include +int cid2index(short cid) +{ + return xvtil_cid2index(cid); +} + class TCell_property : public TObject { COLOR _back, _fore; @@ -3064,6 +3069,71 @@ const char* TSheet_field::cell(int r, int c) const return v ? v : " "; } +int TSheet_field::set_row_cell(short id, const char * value, int nrow) +{ + if (nrow < 0) + nrow = first_empty(); + set_row_cell(row(nrow), id, value); +#ifdef DBG + const TToken_string & r = row(nrow); +#endif + return nrow; +} + +int TSheet_field::set_row_cell(short id, char value, int nrow) +{ + if (nrow < 0) + nrow = first_empty(); + set_row_cell(row(nrow), id, value); +#ifdef DBG + const TToken_string & r = row(nrow); +#endif + return nrow; +} + +int TSheet_field::set_row_cell(short id, long value, int nrow) +{ + if (nrow < 0) + nrow = first_empty(); + set_row_cell(row(nrow), id, value); +#ifdef DBG + const TToken_string & r = row(nrow); +#endif + return nrow; +} + +int TSheet_field::set_row_cell(short id, int value, int nrow) +{ + if (nrow < 0) + nrow = first_empty(); + set_row_cell(row(nrow), id, value); +#ifdef DBG + const TToken_string & r = row(nrow); +#endif + return nrow; +} + +int TSheet_field::set_row_cell(short id, const real& value, int nrow) +{ + if (nrow < 0) + nrow = first_empty(); + set_row_cell(row(nrow), id, value); +#ifdef DBG + const TToken_string & r = row(nrow); +#endif + return nrow; +} + +int TSheet_field::set_row_cell(short id, const TDate& value, int nrow) +{ + if (nrow < 0) + nrow = first_empty(); + set_row_cell(row(nrow), id, value); +#ifdef DBG + const TToken_string & r = row(nrow); +#endif + return nrow; +} // Certified 100% // Ritorna l'indice della prima riga vuota dello sheet diff --git a/src/include/msksheet.h b/src/include/msksheet.h index 06a65d0fb..283174cc5 100755 --- a/src/include/msksheet.h +++ b/src/include/msksheet.h @@ -18,6 +18,7 @@ class TRecord_array; class TRelation; #endif + #define FIRST_FIELD 101 #define K_ROWEDIT ( K_CTRL + 'I' ) @@ -35,6 +36,7 @@ typedef bool (*SPREADSHEET_NOTIFY)(TSheet_field& s, int r, KEY k); // @type SHEET_USERGETPUT| Prototipo funzione utente che gestisce il caricamento/salvataggio dei dati dello sheet typedef void (*SHEET_USERGETPUT)(TSheet_field &fld_righe, int item); +int cid2index(short cid); // @doc EXTERNAL // @class TSheet_field | Classe per la gestione dei campi di uno spreadsheet @@ -42,113 +44,133 @@ typedef void (*SHEET_USERGETPUT)(TSheet_field &fld_righe, int item); // @base public | TMask_field class TSheet_field : public TLoadable_field { - // @author:(INTERNAL) Guido + // @author:(INTERNAL) Guido - // @cfriend TSpreadsheet - friend class TSpreadsheet; + // @cfriend TSpreadsheet + friend class TSpreadsheet; - // @access:(INTERNAL) Private Member + // @access:(INTERNAL) Private Member - // @cmember:(INTERNAL) Indica se aggiungere a fondo dello spreadsheet o nella riga in cui ti trovi - bool _append; + // @cmember:(INTERNAL) Indica se aggiungere a fondo dello spreadsheet o nella riga in cui ti trovi + bool _append; - // @cmember:(INTERNAL) Separatore delle TToken_string - char _separator; + // @cmember:(INTERNAL) Separatore delle TToken_string + char _separator; - // @cmember:(INTERNAL) Flag di autoload - bool _enable_autoload; - // @cmember:(INTERNAL) Campi di input sulla maschera (key field names) - TToken_string _file_k_names; - // @cmember:(INTERNAL) Campi di input sulla maschera (key field ids) - TToken_string _file_k_ids; - // @cmember:(INTERNAL) file delle righe - TLocalisamfile * _sheetfile; - // @cmember:(INTERNAL) record array delle righe - TRecord_array* _linee_rec; - // @cmember:(INTERNAL) indicatore di record array gestito esternamente - bool _external_record; - // @cmember:(INTERNAL) funzioni utente per get tra record (array) e array righe - SHEET_USERGETPUT _userput; - // @cmember:(INTERNAL) funzioni utente per put tra righe e record (array) - SHEET_USERGETPUT _userget; + // @cmember:(INTERNAL) Flag di autoload + bool _enable_autoload; + // @cmember:(INTERNAL) Campi di input sulla maschera (key field names) + TToken_string _file_k_names; + // @cmember:(INTERNAL) Campi di input sulla maschera (key field ids) + TToken_string _file_k_ids; + // @cmember:(INTERNAL) file delle righe + TLocalisamfile * _sheetfile; + // @cmember:(INTERNAL) record array delle righe + TRecord_array* _linee_rec; + // @cmember:(INTERNAL) indicatore di record array gestito esternamente + bool _external_record; + // @cmember:(INTERNAL) funzioni utente per get tra record (array) e array righe + SHEET_USERGETPUT _userput; + // @cmember:(INTERNAL) funzioni utente per put tra righe e record (array) + SHEET_USERGETPUT _userget; - // @access Protected Member + // @access Protected Member protected: - // @cmember:(INTERNAL) Identificatore dell' ultima colonna dello sheet - short _last_column_id; + // @cmember:(INTERNAL) Identificatore dell' ultima colonna dello sheet + short _last_column_id; - // @cmember Ritorna l'identificatore della classe - virtual word class_id() const; - - virtual bool is_kind_of(word cid) const; + // @cmember Ritorna l'identificatore della classe + virtual word class_id() const; - // @cmember Gestisce la chiamata all'handler del campo - virtual bool on_hit(); - - // @cmember Legge la testata dello spreadsheet da

- virtual void parse_head(TScanner& scanner); - // @cmember Legge gli item dello spreadsheet da

- virtual bool parse_item(TScanner& scanner); - // @cmember Legge gli input (campi chiave) dello spreadsheet da

- void parse_input(TScanner& scanner); - // @cmember Crea lo spreadsheet - virtual void create(WINDOW parent); + virtual bool is_kind_of(word cid) const; - // @cmember Setta il focus sul campo - virtual void highlight() const; - // @cmember Ricopia i campi della maschera nel record

-esimo - virtual void mask2row(int n, TToken_string & rec); - // @cmember Ricopia i campi del record

-esimo nella maschera - virtual void row2mask(int n, TToken_string & rec, int mode = 0x3); - // @cmember Permette di mettere il focus su una cella - bool set_focus_cell(int riga, int colonna); + // @cmember Gestisce la chiamata all'handler del campo + virtual bool on_hit(); - //Copy Costructor per impedire la duplicazione accidentale degli sheet - TSheet_field(const TSheet_field& s): TLoadable_field(&s.mask()){CHECK(false, "Can't duplicate TSheet_field");} + // @cmember Legge la testata dello spreadsheet da

+ virtual void parse_head(TScanner& scanner); + // @cmember Legge gli item dello spreadsheet da

+ virtual bool parse_item(TScanner& scanner); + // @cmember Legge gli input (campi chiave) dello spreadsheet da

+ void parse_input(TScanner& scanner); + // @cmember Crea lo spreadsheet + virtual void create(WINDOW parent); - // @access Public Member + // @cmember Setta il focus sul campo + virtual void highlight() const; + // @cmember Ricopia i campi della maschera nel record

-esimo + virtual void mask2row(int n, TToken_string & rec); + // @cmember Ricopia i campi del record

-esimo nella maschera + virtual void row2mask(int n, TToken_string & rec, int mode = 0x3); + // @cmember Permette di mettere il focus su una cella + bool set_focus_cell(int riga, int colonna); + //Copy Costructor per impedire la duplicazione accidentale degli sheet + TSheet_field(const TSheet_field& s) : TLoadable_field(&s.mask()) { CHECK(false, "Can't duplicate TSheet_field"); } + + // @access Public Member public: // @cmember Permette di mettere il focus su una cella - bool set_focus_cell_id(long rec, short cid); + bool set_focus_cell_id(long rec, short cid); - // @cmember Gestisce la pressione del tasto (true se la gestione ha avuto successo) - virtual bool on_key(KEY k); + // @cmember Gestisce la pressione del tasto (true se la gestione ha avuto successo) + virtual bool on_key(KEY k); - // @cmember Si, sono uno spreadsheet - virtual bool is_sheet() const { return true; } - virtual bool empty() const { return items() == 0; } + // @cmember Si, sono uno spreadsheet + virtual bool is_sheet() const { return true; } + virtual bool empty() const { return items() == 0; } - // @cmember Legge automaticamente la linea dal record array assegnato - virtual bool autoload_line(int i,const TRectype & rec); - // @cmember Salva automaticamente la linea nel record array assegnato - virtual bool autosave_line(int i,TRectype & rec); + // @cmember Legge automaticamente la linea dal record array assegnato + virtual bool autoload_line(int i, const TRectype & rec); + // @cmember Salva automaticamente la linea nel record array assegnato + virtual bool autosave_line(int i, TRectype & rec); - // @cmember Legge automaticamente lo sheet dal record array assegnato - virtual bool autoload(const TRelation& r); - // @cmember Salva automaticamente lo sheet nel record array assegnato - virtual bool autosave(TRelation& r) ; - // @cmember setta la funzione utente che Legge i campi dello sheet - void set_userget(SHEET_USERGETPUT handler); - // @cmember setta la funzione utente che scrive i campi dello sheet - void set_userput(SHEET_USERGETPUT handler); - // @cmember carica le chiavi del record array dello sheet - TRectype * putkey(const TRelation& r); - // @cmember restituisce il record array assegnato allo sheet - TRecord_array * record() const {return _linee_rec;} - // @cmember Imposta un record array esterno che contiene le righe dello sheet - void set_lines_record(TRecord_array &); - // @cmember Ritorna se il record assegnato è gestito esternamente (read/write/remove) - bool external_record() const {return _external_record;} - // @cmember Gestisce i campi della chiave - void restart_key(); - TMask_field *get_key(TString & dbfieldname); + // @cmember Legge automaticamente lo sheet dal record array assegnato + virtual bool autoload(const TRelation& r); + // @cmember Salva automaticamente lo sheet nel record array assegnato + virtual bool autosave(TRelation& r); + // @cmember setta la funzione utente che Legge i campi dello sheet + void set_userget(SHEET_USERGETPUT handler); + // @cmember setta la funzione utente che scrive i campi dello sheet + void set_userput(SHEET_USERGETPUT handler); + // @cmember carica le chiavi del record array dello sheet + TRectype * putkey(const TRelation& r); + // @cmember restituisce il record array assegnato allo sheet + TRecord_array * record() const { return _linee_rec; } + // @cmember Imposta un record array esterno che contiene le righe dello sheet + void set_lines_record(TRecord_array &); + // @cmember Ritorna se il record assegnato è gestito esternamente (read/write/remove) + bool external_record() const { return _external_record; } + // @cmember Gestisce i campi della chiave + void restart_key(); + TMask_field *get_key(TString & dbfieldname); - // @cmember Ritorna una riga dello spreadsheet - TToken_string& row(int n); - // @cmember Ritorna un array con tutte le righe dello spreadsheet - TString_array& rows_array() const; - // @cmember Ritorna l'elemento

-esimo della riga

- const char* cell(int r, int c) const; + // @cmember Ritorna una riga dello spreadsheet + TToken_string& row(int n); + // @cmember Ritorna un array con tutte le righe dello spreadsheet + TString_array& rows_array() const; + // @cmember Ritorna l'elemento

-esimo della riga

+ const char* cell(int r, int c) const; + + virtual void set_row_cell(TToken_string & row, short id, const char * value) { row.add(value, cid2index(id)); } + virtual void set_row_cell(TToken_string & row, short id, char value) { row.add(value, cid2index(id)); } + virtual void set_row_cell(TToken_string & row, short id, long value) { row.add(value, cid2index(id)); } + virtual void set_row_cell(TToken_string & row, short id, int value) { row.add(value, cid2index(id)); } + virtual void set_row_cell(TToken_string & row, short id, const real& value) { row.add(value, cid2index(id)); } + virtual void set_row_cell(TToken_string & row, short id, const TDate& value) { row.add(value, cid2index(id)); } + + virtual int set_row_cell(short id, const char * value, int nrow = -1); + virtual int set_row_cell(short id, char value, int nrow = -1); + virtual int set_row_cell(short id, long value, int nrow = -1); + virtual int set_row_cell(short id, int value, int nrow = -1); + virtual int set_row_cell(short id, const real& value, int nrow = -1); + virtual int set_row_cell(short id, const TDate& value, int nrow = -1); + + virtual const char * get_str_row_cell(int nrow, short id) { return row(nrow).get(); } + virtual char get_char_row_cell(int nrow, short id) { return row(nrow).get_char(); } + virtual long get_long_row_cell(int nrow, short id) { return row(nrow).get_long(); } + virtual int get_int_row_cell(int nrow, short id) { return row(nrow).get_int(); } + virtual real get_real_row_cell(int nrow, short id) { return real(row(nrow).get()); } + virtual TDate get_date_row_cell(int nrow, short id) { return TDate(row(nrow).get()); } char separator() const { return _separator; }