campo-sirio/include/msksheet.h
guy bf819df0be PORTING alla versione 4.56 di XVT piu' altre f...te
applicat.cpp  Aggiornata alla 4.5 la gestione dei 3d controls,
              corretto routing di certi E_COMMAND
              corretta gestione title di XVT_CONFIG
controls.cpp  Intercettati eventi XIE_COLMOVE e XIE_COLSIZE
              intrappolato bottone sinistro del mouse e ignorati gli altri
config.cpp    Migliorata gestione paragrafi con righe vuote
              probabile ottimizzazione del reperimento delle variabili
config.h      Tolto un CAZZ di Ferdinando
colors.cpp    Creato per gestire scelta colori
colors.h      Aggiunta funzione di conversione colori
mask.cpp      Gestione popup menu
sheet.cpp     Salvataggio colonne
msksheet.cpp  Salvataggio colonne e colorazione righe
printer.cpp   Migliorato riconoscimento fax e calcolo dimensioni foglio
tabapp.cpp    Ora prima creo la relazione e poi la maschera principale
xvtility.cpp  Aggiornata la gestione dei controlli 3D di Windows
mask.h        Aggiunto metodo per avere il numero della sottomaschera


git-svn-id: svn://10.65.10.50/trunk@3890 c028cbd2-c16b-5b4b-a496-9718f37d4682
1996-11-12 14:53:09 +00:00

165 lines
6.2 KiB
C++
Executable File

#ifndef __MSKSHEET_H
#define __MSKSHEET_H
#ifndef __MASK_H
#include <mask.h>
#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);
// @doc EXTERNAL
// @class TSheet_field | Classe per la gestione dei campi di uno spreadsheet
//
// @base public | TMask_field
class TSheet_field : public TOperable_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;
// @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 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);
// @access Public Member
public:
// @cmember Gestisce la pressione del tasto (TRUE se la gestione ha avuto successo)
virtual bool on_key(KEY k);
// @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 Ritrna l'elemento <p c>-esimo della riga <p r>
const char* cell(int r, int c)
{ return row(r).get(c); }
// @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 riga
void destroy(int r = -1, bool update_sheet = TRUE);
// @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 mebro <p _append>
bool append() const
{ return _append;}
// @cmember Funzione eseguita dopo ogni insert
virtual void post_insert(int) { }
// @cmember Costruttore
TSheet_field(TMask* m);
// @cmember Distruttore
virtual ~TSheet_field();
};
#endif