campo-sirio/include/msksheet.h
guy 42bddb770f array.h Tolta riga vuota
assoc.h     Aggiunta macro di iterazione sugli elementi
golem.h     Aggiunta gestione della posta
golem.cpp   Suvvia c'e' la postaa, la posta eletrronicaaa
mailbox.h   Aggiunto vitrtual davanti al distruttore dei TMessage
msksheet.h  Aggiunte macro di iterazione sulle righe
regexp.h    Tolta #define di NULL
strings.cpp Aggiunti metodi a TFilename:
            is_absolute_path, is_relative_path e make_absolute_path
strings.h   Tolta #include <regexp.h> (-1K nel file .mak)


git-svn-id: svn://10.65.10.50/trunk@5626 c028cbd2-c16b-5b4b-a496-9718f37d4682
1997-11-17 10:28:04 +00:00

241 lines
9.4 KiB
C++
Executable File
Raw Blame History

#ifndef __MSKSHEET_H
#define __MSKSHEET_H
#ifndef __ISAM_H
class TLocalisamfile;
class TRectype;
#endif
#ifndef __MASK_H
#include <mask.h>
#endif
#ifndef __RECARRAY_H
class TRecord_array;
#endif
#ifndef __RELATION_H
class TRelation;
#endif
#define FIRST_FIELD 101
#define K_ROWEDIT ( K_CTRL + 'I' )
class TSheet_field;
// @doc EXTERNAL
// @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);
// @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
// @class TSheet_field | Classe per la gestione dei campi di uno spreadsheet
//
// @base public | TMask_field
class TSheet_field : public TLoadable_field
{
// @author:(INTERNAL) Guido
// @cfriend TSpreadsheet
friend class TSpreadsheet;
// @access:(INTERNAL) Private Member
// @cmember:(INTERNAL) Indica se aggiungere a fondo dello spreadsheet o nella riga in cui ti trovi
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
protected:
// @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 Gestisce la chiamata all'handler del campo
virtual bool on_hit();
// @cmember Legge la testata dello spreadsheet da <p scanner>
virtual void parse_head(TScanner& scanner);
// @cmember Legge gli item dello spreadsheet da <p scanner>
virtual bool parse_item(TScanner& scanner);
// @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);
// @cmember Setta il focus sul campo
virtual void highlight() const;
// @cmember Permette di settare il valore del cambio del campo
virtual void exchange(bool show_value, const real& n);
// @cmember Ricopia i campi della maschera nel record <p n>-esimo
virtual void mask2row(int n, TToken_string & rec);
// @cmember Ricopia i campi del record <p n>-esimo nella maschera
virtual void row2mask(int n, TToken_string & rec);
// @cmember Permette di mettere il focus su una cella
void set_focus_cell(int riga, int colonna);
// @access Public Member
public:
// @cmember Gestisce la pressione del tasto (TRUE se la gestione ha avuto successo)
virtual bool on_key(KEY k);
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 <20> gestito esternamente (read/write/remove)
bool external_record() const {return _external_record;}
// @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 <p c>-esimo della riga <p r>
const char* cell(int r, int c)
{ const char*v=row(r).get(c); return v ? v: " "; }
// @cmember Ritorna la prima riga vuota nello spreadsheet
int first_empty() const;
// @cmember Ritorna il numero di righe presenti nello spreadsheet
int items() const;
// @cmember Ritorna il numero della riga corrente
int selected() const;
// @cmember Seleziona la riga <p r> come quella corrente
void select(int r, bool scrollto = FALSE);
// @cmember Vuota tutto lo spreadsheet
virtual void reset();
// @cmember Abilita/disabilita tutto lo spreadsheet (vedi <mf TMask_field::enable>)
virtual void enable(bool on);
// @cmember Ritorna lo stato di abilitazione dello spreadsheet (vedi <mf TMask_field::enabled>)
virtual bool enabled() const;
// @cmember Aggiorna le righe dello spreadsheet con i valori salvati una volta che non ci sono
// piu' processi attivi
void on_idle();
// @cmember Elimina una o tutte le righe
void destroy(int r = -1, bool update_sheet = TRUE);
// @cmember Inserisce una riga
int insert(int r = -1, bool update_sheet = TRUE, bool call_notify = FALSE);
// @cmember Forza l'aggiornamento dei dati della riga sullo schermo
void force_update(int r = -1);
// @cmember Ritorna la maschera corrispondente ad una riga dello spreadsheet
virtual TMask& sheet_mask() const;
// @cmember esegue la maschera di edit dello speadsheet;
virtual KEY run_editmask(int ) { return sheet_mask().run();}
// @cmember Setta il membro <p _notify> della classe <c TSpreadsheet>
void set_notify(SPREADSHEET_NOTIFY n);
// @cmember Trasforma l'identificatore di un campo <p cid> in un numero di colonna logica
int cid2index(short cid) const;
// @cmember Abilita/disabilita una colonna dello spreadsheet (vedi <mf TSpreadsheet::enable_column>)
void enable_column(int col, bool on = TRUE);
// @cmember Abilita/disabilita una cella dello spreadsheet (vedi <mf TSpreadsheet::enable_cell>)
void enable_cell(int row, int column, bool on = TRUE);
// @cmember Disabilta una cella dello spreadsheet (chiama <mf TSheet_field::enable>)
void disable_cell(int row, int column)
{ enable_cell(row, column, FALSE); }
// @cmember Controlla se una cella e' disabilitata (vedi <mf TSpreadsheet::cell_disabled>)
bool cell_disabled(int row, int column) const;
// @cmember Controlla se una colonna e' abilitata (vedi <mf TSpreadsheet::column_enabled>)
bool column_enabled(int column) const;
// @cmember Controlla se una colonna e' disabilitata (vedi <mf TSpreadsheet::column_disabled>)
bool column_disabled(int column) const;
// @cmember Permette di eliminare una colonna dallo spreadsheet
void delete_column( const int col ) const;
// @cmember Sposta la colonna dalla posizione <p fromindex> alla posizione
// <p toindex>
void move_column( const int fromindex, const int toindex ) const;
// @cmember Permette di invertire la posizione di due colonne
void swap_columns(const int fromid, const int toid) const;
// @cmember Permette di invertire la posizione di due righe
void swap_rows( const int fromindex, const int toindex ) ;
// @cmember Setta la larghezza della colonna
void set_column_width( const int col, const int width ) const;
// @cmember Setta il titolo della colonna
void set_column_header( const int col, const TString& header ) const;
// @cmember Setta l'allineamento della colonna
void set_column_justify(int col, bool right);
// @cmember Setta il colore dello sfondo e del testo di una o tutte le righe
void set_back_and_fore_color(COLOR back, COLOR fore, int row);
// @cmember Memorizza la disposizione delle colonne
void save_columns_order();
// @cmember Dispone le colonne come all'atto del caricamento
void reset_columns_order();
// @cmember Setta il member <p _append> con il valore di <p on>
void set_append(bool on = TRUE)
{ _append = on;}
// @cmember Ritorna il valore del membro <p _append>
bool append() const
{ return _append;}
// @cmember Funzione eseguita dopo ogni insert
virtual void post_insert(int) { }
// @cmember Esegue tutti i check iniziali sulla riga <p n>
void check_row(int n);
// @cmember Trasferisce i valori dalla maschera alla riga <p n>
void update_row(int n) { mask2row(n, row(n)); }
// @cmember Costruttore
TSheet_field(TMask* m);
// @cmember Distruttore
virtual ~TSheet_field();
};
#define FOR_EACH_SHEET_ROW(__sheet, __r, __riga) \
FOR_EACH_ARRAY_ROW(__sheet.rows_array(), __r, __riga)
#define FOR_EACH_SHEET_ROW_BACK(__sheet, __r, __riga) \
FOR_EACH_ARRAY_ROW_BACK(__sheet.rows_array(), __r, __riga)
#endif