#ifndef __MSKSHEET_H #define __MSKSHEET_H #ifndef __MASK_H #include #endif class TSheet_field; class TSpreadsheet; typedef bool (*SPREADSHEET_NOTIFY)(TSheet_field& s, int r, KEY k); typedef TMask* (*SPREADSHEET_GETMASK)( int numriga, TMask& fullmask, bool destroy ); class TSheet_field : public TMask_field { TSpreadsheet* _sheet; TToken_string _head; bool _append; protected: virtual word class_id() const; virtual bool on_hit(); virtual bool on_key(KEY k); virtual bool test_focus_change(); virtual void parse_head(TScanner& scanner); virtual bool parse_item(TScanner& scanner); virtual void create(WINDOW parent); virtual void highlight() const; virtual void exchange(bool show_value, const real& n); public: TToken_string& row(int n); // Get/Create a new row TString_array& rows_array() const; // Get all rows const char* cell(int r, int c) { return row(r).get(c); } // Get item c of row r int first_empty() const; // First empty row int items() const; // Number of rows int selected() const; // Number of current row void select(int r); // Select row r as current virtual void reset(); virtual void enable(bool on); void on_idle(); void destroy(int r = -1); // Destroy row void force_update(int r = -1);// Update data/screen TMask& sheet_mask() const; void set_notify(SPREADSHEET_NOTIFY n); void set_getmask(SPREADSHEET_GETMASK n); void enable_column(int col, bool on = TRUE); void enable_cell(int row, int column, bool on = TRUE); void disable_cell(int row, int column) { enable_cell(row, column, FALSE); } bool cell_disabled(int row, int column) const; void delete_column( const int col ) const; void move_column( const int fromindex, const int toindex ) const; void swap_columns(const int fromid, const int toid) const; void swap_rows( const int fromindex, const int toindex ); void set_column_width( const int col, const int width ) const; void set_column_header( const int col, const TString& header ) const; void set_append(bool on = TRUE) { _append = on;} bool append() const { return _append;} TSheet_field(TMask* m); virtual ~TSheet_field(); }; #endif