Impostate le costanti MAX_COLS per il numero colonne
Aggiunte le funzioni per l'autoload e l'autosave git-svn-id: svn://10.65.10.50/trunk@4385 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
376e29b47c
commit
5aa55da39e
@ -11,7 +11,7 @@ extern "C"
|
|||||||
#include <controls.h>
|
#include <controls.h>
|
||||||
#include <msksheet.h>
|
#include <msksheet.h>
|
||||||
#include <urldefid.h>
|
#include <urldefid.h>
|
||||||
|
#include <utility.h>
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
// TSpreadsheet
|
// TSpreadsheet
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
@ -30,6 +30,9 @@ class TSpreadsheet : public TControl
|
|||||||
friend class TSheet_field;
|
friend class TSheet_field;
|
||||||
|
|
||||||
// @access:(INTERNAL) Private Member
|
// @access:(INTERNAL) Private Member
|
||||||
|
// @cmember:(INTERNAL) costanti
|
||||||
|
enum {NUMBER_WIDTH=3};
|
||||||
|
enum {MAX_COL=48};
|
||||||
|
|
||||||
// @cmember:(INTERNAL) Array di TToken_strings contenenti le righe
|
// @cmember:(INTERNAL) Array di TToken_strings contenenti le righe
|
||||||
TString_array _str;
|
TString_array _str;
|
||||||
@ -78,7 +81,7 @@ class TSpreadsheet : public TControl
|
|||||||
// @cmember:(INTERNAL) Numero della riga a cui saltare appena possibile
|
// @cmember:(INTERNAL) Numero della riga a cui saltare appena possibile
|
||||||
int _selection_posted;
|
int _selection_posted;
|
||||||
// @cmember:(INTERNAL) Dimensioni delle colonne
|
// @cmember:(INTERNAL) Dimensioni delle colonne
|
||||||
int _default_width[32]; // 32 = MAX_COLS
|
int _default_width[MAX_COL];
|
||||||
// @cmember:(INTERNAL) Bisogna salvare l'ordien delle colonne
|
// @cmember:(INTERNAL) Bisogna salvare l'ordien delle colonne
|
||||||
bool _save_columns_order;
|
bool _save_columns_order;
|
||||||
|
|
||||||
@ -294,8 +297,6 @@ TSpreadsheet::TSpreadsheet(
|
|||||||
_row_dirty(FALSE), _cell_dirty(FALSE), _check_enabled(TRUE),
|
_row_dirty(FALSE), _cell_dirty(FALSE), _check_enabled(TRUE),
|
||||||
_needs_update(-1), _selection_posted(-1), _save_columns_order(FALSE)
|
_needs_update(-1), _selection_posted(-1), _save_columns_order(FALSE)
|
||||||
{
|
{
|
||||||
const int NUMBER_WIDTH = 3;
|
|
||||||
const int MAX_COL = 32;
|
|
||||||
int m_width[MAX_COL], v_width[MAX_COL];
|
int m_width[MAX_COL], v_width[MAX_COL];
|
||||||
int fixed_columns = 1; // Number of fixed columns
|
int fixed_columns = 1; // Number of fixed columns
|
||||||
|
|
||||||
@ -1268,17 +1269,19 @@ bool TSpreadsheet::event_handler(XI_OBJ* itf, XI_EVENT *xiev)
|
|||||||
_check_enabled = TRUE; // Re-enable checks
|
_check_enabled = TRUE; // Re-enable checks
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case K_CTRL + '-':
|
case K_CTRL + '-': // ********* delete line
|
||||||
{
|
{
|
||||||
if (owner().mask().id2pos(DLG_DELREC) && notify(_cur_rec, K_DEL))
|
//if (owner().mask().id2pos(DLG_DELREC)>=0 && notify(_cur_rec, K_DEL))
|
||||||
{
|
if (sheet_mask().id2pos(DLG_DELREC)>=0 && sheet_mask().field(DLG_DELREC).enabled() && notify(_cur_rec, K_DEL))
|
||||||
|
{
|
||||||
int rec = _cur_rec;
|
int rec = _cur_rec;
|
||||||
_row_dirty = FALSE;
|
_row_dirty = FALSE;
|
||||||
destroy(rec);
|
destroy(rec);
|
||||||
if (rec < items())
|
if (rec < items())
|
||||||
str2mask(rec);
|
str2mask(rec);
|
||||||
notify(rec, K_CTRL+K_DEL); // Notifica l'avvenuta cancellazione
|
notify(rec, K_CTRL+K_DEL); // Notifica l'avvenuta cancellazione
|
||||||
if (rec >= items())
|
set_dirty();
|
||||||
|
if (rec >= items())
|
||||||
rec = items() - 1;
|
rec = items() - 1;
|
||||||
if (rec >= 0)
|
if (rec >= 0)
|
||||||
select(rec, FALSE);
|
select(rec, FALSE);
|
||||||
@ -1286,7 +1289,7 @@ bool TSpreadsheet::event_handler(XI_OBJ* itf, XI_EVENT *xiev)
|
|||||||
refused = TRUE;
|
refused = TRUE;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case K_CTRL+'+':
|
case K_CTRL + '+': // ********* insert line
|
||||||
if (test_focus_change())
|
if (test_focus_change())
|
||||||
{
|
{
|
||||||
insert(-1, TRUE, TRUE);
|
insert(-1, TRUE, TRUE);
|
||||||
@ -2023,6 +2026,7 @@ KEY TSpreadsheet::edit(int n)
|
|||||||
if (n < items())
|
if (n < items())
|
||||||
str2mask(n);
|
str2mask(n);
|
||||||
notify(n, K_CTRL+K_DEL); // Notifica l'avvenuta cancellazione
|
notify(n, K_CTRL+K_DEL); // Notifica l'avvenuta cancellazione
|
||||||
|
set_dirty();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -2040,9 +2044,12 @@ KEY TSpreadsheet::edit(int n)
|
|||||||
// TSheet_field
|
// TSheet_field
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
// Certified 100%
|
// Certified 100%
|
||||||
TSheet_field::TSheet_field(TMask* m)
|
TSheet_field::TSheet_field(TMask* m)
|
||||||
: TOperable_field(m), _append(TRUE)
|
: TLoadable_field(m), _append(TRUE),
|
||||||
|
_enable_autoload(FALSE),_sheetfile(NULL),_linee_rec(NULL),_external_record(FALSE),
|
||||||
|
_userput(NULL),_userget(NULL)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2058,6 +2065,11 @@ bool TSheet_field::is_kind_of(word cid) const
|
|||||||
// Certified 100%
|
// Certified 100%
|
||||||
TSheet_field::~TSheet_field()
|
TSheet_field::~TSheet_field()
|
||||||
{
|
{
|
||||||
|
if (_sheetfile!=NULL)
|
||||||
|
delete _sheetfile;
|
||||||
|
if (_linee_rec!=NULL && !_external_record)
|
||||||
|
delete _linee_rec;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Certified 100%
|
// Certified 100%
|
||||||
@ -2094,17 +2106,85 @@ void TSheet_field::parse_head(TScanner& scanner)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Certified 100%
|
// Certified: ...under debug...
|
||||||
bool TSheet_field::parse_item(TScanner& scanner)
|
bool TSheet_field::parse_item(TScanner& scanner)
|
||||||
{
|
{
|
||||||
if (scanner.key() == "IT")
|
if (scanner.key() == "IT") // ITEM
|
||||||
{
|
{
|
||||||
_ctl_data._park.add(scanner.string());
|
_ctl_data._park.add(scanner.string());
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (scanner.key() == "FL") // FLAGS
|
||||||
|
{
|
||||||
|
_enable_autoload=scanner.string()=="A";
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
if (scanner.key() == "US") // USE
|
||||||
|
{
|
||||||
|
int key = 1;
|
||||||
|
|
||||||
|
const int logicnum = scanner.integer();
|
||||||
|
|
||||||
|
if (logicnum > 0)
|
||||||
|
{
|
||||||
|
TDir d; d.get(logicnum);
|
||||||
|
if (fexist(d.filename())) // Controlla l'esistenza del file
|
||||||
|
{
|
||||||
|
_sheetfile = new TLocalisamfile(logicnum);
|
||||||
|
TString s = scanner.pop();
|
||||||
|
|
||||||
|
// cerca l'indicazione del campo di numerazione
|
||||||
|
if (s == "KE")
|
||||||
|
{
|
||||||
|
s = scanner.pop();
|
||||||
|
_linee_rec= new TRecord_array(logicnum, s);// alloca i record
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
NFCHECK("Manca la definizione del campo di autonumerazione nel campo %d",
|
||||||
|
(int)dlg());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (scanner.key() == "IN") // input (definisce la chiave)
|
||||||
|
{
|
||||||
|
parse_input(scanner);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
return TMask_field::parse_item(scanner);
|
return TMask_field::parse_item(scanner);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TSheet_field::parse_input(TScanner& scanner)
|
||||||
|
{
|
||||||
|
|
||||||
|
const char* s = scanner.pop();
|
||||||
|
_file_k_names.add(s);
|
||||||
|
|
||||||
|
s = scanner.pop();
|
||||||
|
if (*s == '"') // Constant string
|
||||||
|
{
|
||||||
|
scanner.push();
|
||||||
|
TString& str = scanner.line();
|
||||||
|
_file_k_ids.add(str);
|
||||||
|
|
||||||
|
}
|
||||||
|
else // Field on the mask
|
||||||
|
{
|
||||||
|
CHECKS(_file_k_ids.get_pos(s) < 0, "Duplicate input field ", s);
|
||||||
|
_file_k_ids.add(s);
|
||||||
|
if (scanner.popkey() == "SE") _file_k_ids << '@'; // Special FILTERing field
|
||||||
|
else scanner.push();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Certified 100%
|
// Certified 100%
|
||||||
void TSheet_field::create(WINDOW parent)
|
void TSheet_field::create(WINDOW parent)
|
||||||
{
|
{
|
||||||
@ -2393,7 +2473,7 @@ void TSheet_field::exchange(bool show_value, const real& nuo)
|
|||||||
|
|
||||||
if (vec != nuo)
|
if (vec != nuo)
|
||||||
{
|
{
|
||||||
TBit_array valuta(32);
|
TBit_array valuta(TSpreadsheet::MAX_COL);
|
||||||
int i = 0;
|
int i = 0;
|
||||||
for (int f = FIRST_FIELD; ;f++, i++)
|
for (int f = FIRST_FIELD; ;f++, i++)
|
||||||
{
|
{
|
||||||
@ -2571,3 +2651,130 @@ void TSheet_field::check_row(int n)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Certified: ...under debug..
|
||||||
|
void TSheet_field::set_lines_record(TRecord_array & r_a)
|
||||||
|
{
|
||||||
|
if (_linee_rec && !_external_record)
|
||||||
|
delete _linee_rec;
|
||||||
|
_linee_rec= & r_a;
|
||||||
|
_external_record=TRUE; // il record attuale è esterno...
|
||||||
|
}
|
||||||
|
|
||||||
|
// Certified: ...under debug..
|
||||||
|
TRectype * TSheet_field::putkey(const TRelation& r)
|
||||||
|
{
|
||||||
|
if (_sheetfile) {
|
||||||
|
// *******
|
||||||
|
// costruisce la chiave per il record array
|
||||||
|
_sheetfile->zero();
|
||||||
|
_file_k_names.restart();
|
||||||
|
_file_k_ids.restart();
|
||||||
|
TString dbfieldname;
|
||||||
|
while ((dbfieldname=_file_k_names.get())!="") {
|
||||||
|
TMask_field & f= mask().field(atoi(_file_k_ids.get()));
|
||||||
|
((TLoadable_field&)f).autoload(r);
|
||||||
|
_sheetfile->put(dbfieldname, f.get());
|
||||||
|
}
|
||||||
|
return &_sheetfile->curr();
|
||||||
|
}
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Certified: ...under debug..
|
||||||
|
bool TSheet_field::autoload_line(int i,TRectype & rec)
|
||||||
|
{
|
||||||
|
TToken_string &row= this->row(i-1);
|
||||||
|
|
||||||
|
row = "";
|
||||||
|
// riempie le colonne dello sheet i cui campi hanno attributo "FIELD"
|
||||||
|
for (int f=FIRST_FIELD; f<=_last_column_id; f++) {
|
||||||
|
TFieldref const *dbfield=sheet_mask().field(f).field();
|
||||||
|
if (dbfield) {
|
||||||
|
row.add(dbfield->read(rec),cid2index(f));
|
||||||
|
}
|
||||||
|
// completa l'operazione con le funzioni definite dall'utente
|
||||||
|
}
|
||||||
|
if (_userget)
|
||||||
|
_userget(*this,i);
|
||||||
|
check_row(i-1);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Certified: ...under debug..
|
||||||
|
bool TSheet_field::autosave_line(int i,TRectype & rec)
|
||||||
|
{
|
||||||
|
for (int f=FIRST_FIELD; f<=_last_column_id; f++) {
|
||||||
|
TFieldref const *dbfield=sheet_mask().field(f).field();
|
||||||
|
if (dbfield)
|
||||||
|
dbfield->write(cell(i-1,cid2index(f)),rec);
|
||||||
|
}
|
||||||
|
// completa l'operazione con le funzioni definite dall'utente
|
||||||
|
if (_userput)
|
||||||
|
_userput(*this,i);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Certified: ...under debug..
|
||||||
|
bool TSheet_field::autoload(const TRelation& rel)
|
||||||
|
{
|
||||||
|
if (_enable_autoload)
|
||||||
|
{
|
||||||
|
CHECK(_linee_rec !=NULL, "Iu ev forgotten tu declare de Record array for de scit");
|
||||||
|
// *******
|
||||||
|
// trasferisce le linee dal record array allo sheet
|
||||||
|
destroy(); // cancella lo sheet
|
||||||
|
const int last_line = _linee_rec->last_row();
|
||||||
|
for (int i= 1; i <= last_line; i++)
|
||||||
|
{
|
||||||
|
autoload_line(i,_linee_rec->row(i, TRUE));
|
||||||
|
}
|
||||||
|
|
||||||
|
return(0);
|
||||||
|
}
|
||||||
|
return _enable_autoload;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Certified: ...under debug..
|
||||||
|
bool TSheet_field::autosave(TRelation& rel)
|
||||||
|
{
|
||||||
|
if (_enable_autoload)
|
||||||
|
{
|
||||||
|
CHECK(_linee_rec !=NULL, "Iu ev forgotten tu declare de Record array for de scit");
|
||||||
|
_linee_rec->destroy_rows();
|
||||||
|
if (_sheetfile)
|
||||||
|
{
|
||||||
|
// trasferisce dal file locale
|
||||||
|
if (mask().insert_mode()) {
|
||||||
|
// rinumera la chiave
|
||||||
|
_file_k_names.restart();
|
||||||
|
_file_k_ids.restart();
|
||||||
|
TString dbfieldname;
|
||||||
|
while ((dbfieldname=_file_k_names.get())!="") {
|
||||||
|
TMask_field & f= mask().field(atoi(_file_k_ids.get()));
|
||||||
|
_linee_rec->renum_key(dbfieldname, f.get());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// *******
|
||||||
|
// trasferisce le linee dallo sheet al record array
|
||||||
|
for (int i= 1; i <= items(); i++)
|
||||||
|
{
|
||||||
|
autosave_line(i,_linee_rec->row(i, TRUE));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return _enable_autoload;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Certified: ...under debug..
|
||||||
|
void TSheet_field::set_userget(SHEET_USERGETPUT handler)
|
||||||
|
{
|
||||||
|
_userget = handler;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Certified: ...under debug..
|
||||||
|
void TSheet_field::set_userput(SHEET_USERGETPUT handler)
|
||||||
|
{
|
||||||
|
_userput = handler;
|
||||||
|
}
|
||||||
|
|
||||||
|
@ -5,6 +5,18 @@
|
|||||||
#include <mask.h>
|
#include <mask.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef __ISAM_H
|
||||||
|
#include <isam.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef __RECARRAY_H
|
||||||
|
#include <recarray.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef __RELATION_H
|
||||||
|
#include <relation.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#define FIRST_FIELD 101
|
#define FIRST_FIELD 101
|
||||||
#define K_ROWEDIT ( K_CTRL + 'I' )
|
#define K_ROWEDIT ( K_CTRL + 'I' )
|
||||||
|
|
||||||
@ -16,12 +28,15 @@ class TSheet_field;
|
|||||||
// @type SPREADSHEET_NOTIFY | Prototipo funzione che gestisce l'ingresso, l'uscita e la modifica da una riga dello sheet
|
// @type SPREADSHEET_NOTIFY | Prototipo funzione che gestisce l'ingresso, l'uscita e la modifica da una riga dello sheet
|
||||||
typedef bool (*SPREADSHEET_NOTIFY)(TSheet_field& s, int r, KEY k);
|
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);
|
||||||
|
|
||||||
// @doc EXTERNAL
|
// @doc EXTERNAL
|
||||||
|
|
||||||
// @class TSheet_field | Classe per la gestione dei campi di uno spreadsheet
|
// @class TSheet_field | Classe per la gestione dei campi di uno spreadsheet
|
||||||
//
|
//
|
||||||
// @base public | TMask_field
|
// @base public | TMask_field
|
||||||
class TSheet_field : public TOperable_field
|
class TSheet_field : public TLoadable_field
|
||||||
{
|
{
|
||||||
// @author:(INTERNAL) Guido
|
// @author:(INTERNAL) Guido
|
||||||
|
|
||||||
@ -31,7 +46,24 @@ class TSheet_field : public TOperable_field
|
|||||||
// @access:(INTERNAL) Private Member
|
// @access:(INTERNAL) Private Member
|
||||||
|
|
||||||
// @cmember:(INTERNAL) Indica se aggiungere a fondo dello spreadsheet o nella riga in cui ti trovi
|
// @cmember:(INTERNAL) Indica se aggiungere a fondo dello spreadsheet o nella riga in cui ti trovi
|
||||||
bool _append;
|
bool _append;
|
||||||
|
|
||||||
|
// @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:
|
protected:
|
||||||
@ -50,7 +82,9 @@ protected:
|
|||||||
virtual void parse_head(TScanner& scanner);
|
virtual void parse_head(TScanner& scanner);
|
||||||
// @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 Crea lo spreadsheet
|
// @cmember Legge gli input (campi chiave) dello spreadsheet da <p scanner>
|
||||||
|
void parse_input(TScanner& scanner);
|
||||||
|
// @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
|
||||||
@ -67,11 +101,35 @@ public:
|
|||||||
// @cmember Gestisce la pressione del tasto (TRUE se la gestione ha avuto successo)
|
// @cmember Gestisce la pressione del tasto (TRUE se la gestione ha avuto successo)
|
||||||
virtual bool on_key(KEY k);
|
virtual bool on_key(KEY k);
|
||||||
|
|
||||||
// @cmember Ritorna una riga dello spreadsheet
|
virtual bool is_sheet() const { return TRUE; }
|
||||||
|
|
||||||
|
// @cmember Legge automaticamente la linea dal record array assegnato
|
||||||
|
virtual bool autoload_line(int i,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 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;
|
||||||
// @cmember Ritrna l'elemento <p c>-esimo della riga <p r>
|
// @cmember Ritorna l'elemento <p c>-esimo della riga <p r>
|
||||||
const char* cell(int r, int c)
|
const char* cell(int r, int c)
|
||||||
{ return row(r).get(c); }
|
{ return row(r).get(c); }
|
||||||
|
|
||||||
@ -153,7 +211,7 @@ public:
|
|||||||
// @cmember Setta il member <p _append> con il valore di <p on>
|
// @cmember Setta il member <p _append> con il valore di <p on>
|
||||||
void set_append(bool on = TRUE)
|
void set_append(bool on = TRUE)
|
||||||
{ _append = on;}
|
{ _append = on;}
|
||||||
// @cmember Ritorna il valore del mebro <p _append>
|
// @cmember Ritorna il valore del membro <p _append>
|
||||||
bool append() const
|
bool append() const
|
||||||
{ return _append;}
|
{ return _append;}
|
||||||
// @cmember Funzione eseguita dopo ogni insert
|
// @cmember Funzione eseguita dopo ogni insert
|
||||||
@ -162,6 +220,7 @@ public:
|
|||||||
// @cmember Esegue Tutti i check iniziali sulla riga <p n>
|
// @cmember Esegue Tutti i check iniziali sulla riga <p n>
|
||||||
void check_row(int n);
|
void check_row(int n);
|
||||||
|
|
||||||
|
|
||||||
// @cmember Costruttore
|
// @cmember Costruttore
|
||||||
TSheet_field(TMask* m);
|
TSheet_field(TMask* m);
|
||||||
// @cmember Distruttore
|
// @cmember Distruttore
|
||||||
|
Loading…
x
Reference in New Issue
Block a user