Files correlati : cg7.exe cg7400c.png cg7400x.png cg7a00a.rep cg7a00a.msk cg7c00a.rep cg7c00a.msk cg7e00b.png cg7h00b.png cg7400a.png cg7400a.rep cg7400a.msk cg7400b.png cg7500a.png cg7600a.png cg7700a.png
cg7700b.png cg7800a.png cg7900a.png cg7900b.png cg7a00a.png cg7b00a.png cg7c00a.png cg7d00a.png cg7e00a.png cg7f00a.png cg7g00a.png cg7g00b.png cg7h00a.png cgmenu.men
Bug :
Commento:
Quadri Dichiarazione IVA 2025
Aggiunto quadro VL
595 lines
24 KiB
C++
Executable File
595 lines
24 KiB
C++
Executable File
#ifndef __MASK_H
|
||
#define __MASK_H
|
||
|
||
#ifndef __MASKFLD_H
|
||
#include <maskfld.h>
|
||
#endif
|
||
|
||
#ifndef __STACK_H
|
||
#include <stack.h>
|
||
#endif
|
||
|
||
// Numero massimo di righe logiche per maschere
|
||
#define MAX_MASK_ROWS 23
|
||
|
||
class TSheet_field;
|
||
class TTree_field;
|
||
class TCurrency;
|
||
class TButton_tool;
|
||
|
||
// @doc EXTERNAL
|
||
|
||
// @type MASK_HANDLER | Prototipo funzione per gestire i tasti speciali all'interno di una maschera.
|
||
typedef bool (*MASK_HANDLER)(TMask& mask, KEY key);
|
||
|
||
// @doc EXTERNAL
|
||
|
||
// @enum Modalita' di utilizzo della maschera corrente
|
||
enum TMaskmode {
|
||
NO_MODE, // @emem Nessun modo
|
||
MODE_QUERY, // @emem Modalita' di richiesta chiave
|
||
MODE_QUERYINS, // @emem Modalita' di richiesta chiave e inserimento dati
|
||
MODE_INS , // @emem Modalita' di inserimento dati
|
||
MODE_MOD // @emem Modalita' di modifca dati
|
||
};
|
||
|
||
//////////////////////////////////////////////////////////
|
||
// TMask scanner
|
||
///////////////////////////////////////////////////////////
|
||
|
||
class TMask_scanner : public TScanner
|
||
{
|
||
TStack _pages;
|
||
|
||
public:
|
||
void push_win(WINDOW w);
|
||
WINDOW peek_win() const;
|
||
RCT peek_rct() const;
|
||
WINDOW pop_win();
|
||
TMask_scanner(const TFilename& n);
|
||
};
|
||
|
||
|
||
// @doc EXTERNAL
|
||
|
||
// @class TMask | Classe per la gestione delle maschere video
|
||
//
|
||
// @base public | TWindow
|
||
class TMask : public TWindow
|
||
{
|
||
// @author:(INTERNAL) Guido
|
||
|
||
// @access Protected Member
|
||
protected:
|
||
// @ccost:(INTERNAL) MAX_PAGES | 16 | Massimo numero di pagine nella maschera
|
||
enum { MAX_PAGES = 16 };
|
||
|
||
// @cmember Gestisce gli eventi della finestra
|
||
virtual long handler(WINDOW win, EVENT* ep);
|
||
|
||
// @access:(INTERNAL) Private Member
|
||
private:
|
||
|
||
// @cmember:(INTERNAL) Windows delle pagine
|
||
WINDOW _toolwin, _notebook, _single, _toolbar;
|
||
WINDOW _pagewin[MAX_PAGES];
|
||
|
||
// @cmember:(INTERNAL) Numero della maschera all'interno del file sorgente
|
||
int _mask_num;
|
||
|
||
// @cmember:(INTERNAL) Numero di pagine della maschera
|
||
int _pages;
|
||
// @cmember:(INTERNAL) Pagina corrente
|
||
int _page;
|
||
|
||
// @cmember:(INTERNAL) Controlla le pagine abilitate
|
||
TBit_array _enabled;
|
||
// @cmember:(INTERNAL) Modalita' di utilizzo della maschera
|
||
int _mode;
|
||
// @cmember:(INTERNAL) Numero di campi della maschera
|
||
TArray _field;
|
||
|
||
// @cmember:(INTERNAL) Primo controllo che deve ricevere il focus
|
||
int _first_focus;
|
||
|
||
// @cmember:(INTERNAL) Numero del controllo con il focus
|
||
int _focus;
|
||
|
||
// @cmember:(INTERNAL) Puntatore allo sheet che contiene la maschera (puo' essere NULL)
|
||
TSheet_field* _sheet;
|
||
|
||
// @cmember:(INTERNAL) Numero della prima riga di selezione nello sheet
|
||
long _sheet_first_selection_row;
|
||
|
||
// @cmember:(INTERNAL) Handler per gestire i tasti speciali nelle maschere
|
||
MASK_HANDLER _handler;
|
||
|
||
// @cmember:(INTERNAL) Nome del file sorgente contenente la maschera
|
||
TFilename _source_file;
|
||
// @cmember:(INTERNAL) Nome del file di salvataggio in cui sono scaricati i valori della maschera
|
||
TFilename _workfile;
|
||
// @cmember:(INTERNAL) Ultimo offset letto nel file di salvataggio
|
||
long _lastpos;
|
||
|
||
// @cmember:(INTERNAL) Array per convertire da id a posizione
|
||
TPointer_array _position;
|
||
|
||
// @cmember:(INTERNAL) Controlla se la maschera deve fare i controlli iniziali di validita' dei campi
|
||
bool _should_check;
|
||
|
||
int _error_severity;
|
||
TString _error_message;
|
||
short _msg_field;
|
||
KEY _msg_key;
|
||
|
||
// @cmember:(INTERNAL) identificatore del campo da testare per l'autopremimento
|
||
short _test_fld;
|
||
// @cmember:(INTERNAL) posizione del campo che per ultimo ha testato l'autopremimento
|
||
int _last_test;
|
||
|
||
// @access Protected Member
|
||
protected:
|
||
TArray& fields_array() { return _field; }
|
||
|
||
// @cmember Legge i controlli relativi ad un campo
|
||
void load_checks() const;
|
||
// @cmember Inizializza la maschera (Chiamata quando la maschera parte)
|
||
virtual void start_run();
|
||
|
||
// @cmember Aggiunge una toolbar alla maschera (top or bottom only)
|
||
void insert_bar(WINDOW bar);
|
||
WINDOW create_book(bool single);
|
||
WINDOW create_bar(int height); // if height < 0 then BottomBar else TopBar
|
||
// @cmember Aggiunge una pagina alla maschera
|
||
void insert_page(WINDOW page, int pos);
|
||
// @cmember Inizializza la maschera
|
||
void init_mask();
|
||
// @cmember Legge la pagina da file
|
||
void read_page(TMask_scanner& scanner, bool toolbar);
|
||
|
||
// @cmember Aggiunge alla maschera tutti i bottoni per la navigazione tra le pagine
|
||
void set_tab_buttons(TToken_string& tabs);
|
||
|
||
// @cmember Ritorna il numero del primo campo attivo della pagina con finestra <p w>
|
||
int find_first_active(WINDOW w) const;
|
||
// @cmember Ritorna il numero della finestra padre del campo <p f>
|
||
int find_parent_page(const TMask_field& f) const;
|
||
// @cmember Esegue i check del campo corrente
|
||
bool check_current_field() const;
|
||
|
||
// @cmember Mostra la prossima/precedente pagina
|
||
virtual void next_page(int p);
|
||
// @cmember Cambia arbitrariamente il nome del file (uso molto raro)
|
||
void set_source_file(const char* name) { _source_file = name; }
|
||
WINDOW notebook() const { return _notebook; }
|
||
// @access Public Member
|
||
public:
|
||
WINDOW create_page(const char* title, int pos); // -1 <= pos < MAX_PAGES
|
||
// @cmember Costruttore (crea la maschera leggendo la descrizione dal file .msk)
|
||
TMask(const char* filename, int num = 0, int max = MAX_PAGES);
|
||
// @cmember Costruttore (crea una maschera vuota con i parametri dati)
|
||
TMask(const char* title, int pages, int cols, int rows, int xpos = -1, int ypos = -1, WINDOW parent = NULL_WIN);
|
||
// @cmember Costruttore (crea una maschera vuota per leggerla con read_mask)
|
||
|
||
TMask();
|
||
|
||
// @cmember Distruttore
|
||
virtual ~TMask();
|
||
|
||
// @cmember Imposta i bit di read_only
|
||
void set_locking(TBit_array & read_only, TToken_string & fields, bool on);
|
||
// @cmember Legge la maschera da file
|
||
void read_mask(const char* name, int num = 0, int max = MAX_PAGES);
|
||
|
||
// @cmember Legge il campo da file
|
||
virtual TMask_field* parse_field(TScanner& scanner);
|
||
// @cmember Legge il bottone della toolbar da file
|
||
virtual TMask_field* parse_tool(TScanner& scanner);
|
||
|
||
// Aggiunge un campo all'array _field
|
||
void add_field(TMask_field* f);
|
||
|
||
// @cmember Ritorna l'identificatore della classe maschera
|
||
virtual word class_id() const;
|
||
|
||
// @cmember Ritorna true se la maschera deriva dalla classe <p c>
|
||
virtual bool is_kind_of(word c) const;
|
||
|
||
// @cmember Ritorna il numero della pagina corrente
|
||
int curr_page() const { return _page; }
|
||
|
||
// @cmember Ritorna la finestra della pagina <p> (Usare con attenzione)
|
||
WINDOW page_win(int p) const;
|
||
// @cmember Ritorna la finestra della pagina corrente
|
||
WINDOW curr_win() const;
|
||
// @cmember Ritorna il nome del file contentente la maschera
|
||
const TFilename& source_file() const { return _source_file; }
|
||
|
||
// @cmember Ritorna il numero della maschera nel file (> 0 se spreadsheet)
|
||
int number() const { return _mask_num; }
|
||
|
||
// @cmember Aggiunge alla maschera tutti i bottoni Pag.n
|
||
void set_default_tab_buttons();
|
||
|
||
// @cmember Aggiunge runtime un campo testo alla maschera
|
||
TMask_field& add_static (short id, int page, const char* prompt, int x, int y, const char* flags = "");
|
||
// @cmember Aggiunge runtime un campo stringa alla maschera
|
||
TEdit_field& add_string (short id, int page, const char* prompt, int x, int y, int dim, const char* flags = "", int width = 0);
|
||
|
||
// @cmember Aggiunge runtime un campo numerico alla maschera
|
||
TReal_field& add_number (short id, int page, const char* prompt, int x, int y, int dim, const char* flags = "", int ndec = 0);
|
||
// @cmember Aggiunge runtime un campo importo alla maschera
|
||
TCurrency_field& add_currency (short id, int page, const char* prompt, int x, int y, int dim, const char* flags = "", short driver = 0);
|
||
// @cmember Aggiunge runtime un campo data alla maschera
|
||
TDate_field& add_date (short id, int page, const char* prompt, int x, int y, const char* flags = "");
|
||
// @cmember Aggiunge runtime un campo bottone alla maschera
|
||
TButton_field& add_button (short id, int page, const char* prompt, int x, int y, int dx = 9, int dy = 1, const char* flags = "", short bmpup = 0, short bmpdn = 0);
|
||
// @cmember Aggiunge runtime un campo boolean alla maschera
|
||
TBoolean_field& add_boolean (short id, int page, const char* prompt, int x, int y, const char* flags = "");
|
||
TCheckbutton_field& add_checkbutton (short id, int page, const char* prompt, int x, int y, int dx = 9, int dy = 1, const char* flags = "", short bmpup = 0, short bmpdn = 0);
|
||
// @cmember Aggiunge runtime un campo radio button alla maschera
|
||
TRadio_field& add_radio(short id, int page, const char* prompt, int x, int y, int dx, const char* codes, const char* items, const char* flags = "");
|
||
// @cmember Aggiunge runtime un campo memo alla maschera
|
||
TMemo_field& add_memo (short id, int page, const char* prompt, int x, int y, int dx = 78, int dy = 4, const char* flags = "");
|
||
// @cmember Aggiunge runtime un campo zoom alla maschera
|
||
TZoom_field& add_zoom (short id, int page, const char* prompt, int x, int y, int dim, const char* flags = "", int width = 0);
|
||
// @cmember Aggiunge runtime un campo lista alla maschera
|
||
TList_field& add_list (short id, int page, const char* prompt, int x, int y, int dim, const char* flags = "", const char* codes = nullptr, const char* items = nullptr, int width = 0);
|
||
// @cmember Aggiunge runtime un campo albero
|
||
TTree_field& add_tree (short id, int page, int x, int y, int dx, int dy, const char* flags = "");
|
||
// @cmember Aggiunge runtime un group box alla maschera
|
||
TGroup_field& add_groupbox (short id, int page, const char* prompt, int x, int y, int dx = 78, int dy = 3, const char* flags = "");
|
||
// @cmember Aggiunge runtime un campo golem alla maschera
|
||
TGolem_field& add_golem(short id, int page, const char* prompt, int x, int y, int dx = 9, int dy = 1, const char* flags = "", bool archive = false, short bmpup = 0, short bmpdn = 0);
|
||
// @cmember Aggiunge runtime un bottone alla toolbar
|
||
TButton_tool& add_button_tool(short id, const char* prompt, short bmpup);
|
||
// @cmember Aggiunge runtime un campo golem alla toolbar
|
||
TGolem_field& add_golem_tool(short id, const char* prompt, const char* flags, bool archive, short bmpup = 0, short bmpdn = 0);
|
||
// @cmember Aggiunge runtime un campo sheet alla maschera
|
||
TSheet_field & add_sheet(short id, int page, const char * prompt, const char * maskname, int maskno,
|
||
const char * head, int x, int y, int width = 0, int height = 0, const char* flags = "");
|
||
// @cmember Aggiunge runtime un campo sheet alla maschera
|
||
void add_item(TMask_field & fld, const char * item);
|
||
|
||
// @cmember Ritorna il numero di campi della maschera
|
||
int fields() const
|
||
{ return _field.items(); }
|
||
// @cmember Ritorna il numero di sheet della maschera
|
||
int sheets() const;
|
||
|
||
// @cmember Setta la modalita' di utilizzo della maschera
|
||
void set_mode(int m)
|
||
{ _mode = m; }
|
||
// @cmember Ritorna la modalita' corrente di utilizzo della maschera
|
||
int mode() const
|
||
{ return _mode; }
|
||
|
||
// @cmember Setta la chiave da testare per l'autopremimento
|
||
void set_test_field(short id)
|
||
{ if (_test_fld < 0) _test_fld = id; }
|
||
|
||
void set_focus_field(short id);
|
||
virtual void notify_focus_field(short id);
|
||
|
||
// @cmember Controlla i campi di una maschera (true se tutti validi)
|
||
bool check_fields();
|
||
// @cmember Esegue il check e i messaggi sul campo <p fld_id> della maschera
|
||
virtual void check_field( short fld_id );
|
||
// @cmember Forza la chiusura della maschera
|
||
virtual bool stop_run(KEY key);
|
||
// @cmember Controlla se la maschera puo' essere chiusa (true se puo' esserlo)
|
||
virtual bool can_be_closed() const;
|
||
|
||
// @cmember Permette di aprire una maschera
|
||
virtual void open();
|
||
// @cmember Permette di chiudere una maschera
|
||
virtual void close();
|
||
// @cmember Permette di attivare/disattivare tutta la pagina
|
||
virtual void activate(bool on = true);
|
||
virtual void set_focus();
|
||
|
||
// @cmember Converte un identificatore di campo nella sua posizione
|
||
int id2pos(short id) const;
|
||
// @cmember Cerca la posizione di un campo per nome
|
||
int field2pos(const char* fieldname) const;
|
||
// @cmember Ritorna il campo i-esimo della maschera
|
||
TMask_field& fld(int i) const
|
||
{ return (TMask_field&)_field[i]; }
|
||
// @cmember Ritorna il campo contraddistinto dall'identificatore passato
|
||
TMask_field& field(short id) const;
|
||
// @cmember Ritorna il campo corrispondente ad id se c'e'
|
||
TMask_field* find_by_id(short id) const;
|
||
// @cmember esiste il campo corrispondente ad id ?
|
||
bool exist(short id) const { return find_by_id(id) != nullptr; }
|
||
// @cmember Ritorna il campo corrispondente al FIELD fieldname
|
||
TMask_field* find_by_fieldname(const char* fieldname) const;
|
||
// @cmember Ritorna il campo corrispondente al FIELD fieldname
|
||
bool exist(const char* fieldname) const { return find_by_fieldname(fieldname) != nullptr; }
|
||
// @cmember Ritorna il campo di edit contraddistinto dall'identificatore passato
|
||
TEdit_field& efield(short id) const;
|
||
// @cmember Ritorna il campo listbox contraddistinto dall'identificatore passato
|
||
TList_field& lfield(short id) const;
|
||
// @cmember Ritorna il campo sheet contraddistinto dall'identificatore passato
|
||
TSheet_field& sfield(short id) const;
|
||
// @cmember Ritorna il campo tree contraddistinto dall'identificatore passato
|
||
TTree_field& tfield(short id) const;
|
||
|
||
// @cmember Setta il campo con una stringa
|
||
virtual void set(short fld_id, const char* str, byte hit=0x0);
|
||
// @cmember Setta il campo con un reale
|
||
virtual void set(short fld_id, const real& num, byte hit=0x0);
|
||
// @cmember Setta il campo con una data
|
||
virtual void set(short fld_id, const TDate& day, byte hit=0x0);
|
||
// @cmember Setta il campo con un valore
|
||
virtual void set(short fld_id, long num, byte hit=0x0);
|
||
// @cmember Setta il campo con un currency
|
||
virtual void set(short fld_id, const TCurrency& num, byte hit=0x0);
|
||
// @cmember Setta una tutti i campi che hanno come FIELD <p fld_id>
|
||
void set(const char* fld_id, const char* str, byte hit=0x0);
|
||
|
||
// @cmember Aggiunge un intero al campo
|
||
void add(short fld_id, long num, byte hit = 0x0);
|
||
// @cmember Aggiunge un reale al campo
|
||
void add(short fld_id, const real& num, byte hit = 0x0);
|
||
// @cmember Aggiunge un currency al campo
|
||
void add(short fld_id, const TCurrency& num, byte hit = 0x0);
|
||
// @cmember Sottrae un intero al campo
|
||
void sub(short fld_id, const long num, byte hit = 0x0) { add(fld_id, -num, hit); }
|
||
// @cmember Sottrae un reale al campo
|
||
void sub(short fld_id, const real& num, byte hit = 0x0) { add(fld_id, -num, hit); }
|
||
// @cmember Sottrae un currency al campo
|
||
void sub(short fld_id, const TCurrency& num, byte hit = 0x0);
|
||
// @cmember Moltiplica per un intero al campo
|
||
void mul(short fld_id, long num, byte hit = 0x0);
|
||
// @cmember Moltiplica per un reale al campo
|
||
void mul(short fld_id, const real& num, byte hit = 0x0);
|
||
// @cmember Moltiplica per un currency al campo
|
||
void mul(short fld_id, const TCurrency& num, byte hit = 0x0);
|
||
// @cmember Divide per un intero al campo
|
||
void div(short fld_id, const long num, byte hit = 0x0) { div(fld_id, 1/num, hit); }
|
||
// @cmember Divide per un reale al campo
|
||
void div(short fld_id, const real& num, byte hit = 0x0) { div(fld_id, UNO/num, hit); }
|
||
// @cmember Divide per un currency al campo
|
||
void div(short fld_id, const TCurrency& num, byte hit = 0x0);
|
||
|
||
// @cmember Ritorna il contenuto del campo <p fld_id> sotto forma di stringa
|
||
virtual const TString& get(short fld_id) const;
|
||
// @cmember Ritorna il contenuto del campo <p fld_id> sotto forma di long
|
||
long get_long(short fld_id) const;
|
||
// @cmember Ritorna il contenuto del campo <p fld_id> sotto forma di int
|
||
// (chiama <mf TMask::get_long>)
|
||
int get_int(short fld_id) const
|
||
{ return (int)get_long(fld_id); }
|
||
// @cmember Ritorna il contenuto del campo <p fld_id> sotto forma di bool
|
||
bool get_bool(short fld_id) const;
|
||
// @cmember Ritorna il contenuto del campo <p fld_id> sotto forma di real
|
||
real get_real(short fld_id) const;
|
||
// @cmember Ritorna il contenuto del campo <p fld_id> sotto forma di data
|
||
TDate get_date(short fld_id) const;
|
||
// @cmember Ritorna il contenuto del campo <p fld_id> sotto forma di currency
|
||
TCurrency& get_currency(short fld_id, TCurrency& curr) const;
|
||
|
||
// @cmember Ritorna il contenuto del primo campo attivo campo che ha come FIELD <p fld_id>
|
||
const TString& get(const char * fld_id) const;
|
||
// @cmember Indica quale campo deve ricevere per primo il focus nella maschera
|
||
int first_focus(short id, bool dirty = true);
|
||
|
||
// @cmember Ritorna il numero del controllo che possiede il focus
|
||
TOperable_field& focus_field() const;
|
||
|
||
// @cmember Disabilita la lettura dei check della maschera
|
||
void disable_starting_check()
|
||
{ _should_check = false;}
|
||
|
||
// @cmember Evita che venga chiamata la TWindow
|
||
virtual void on_button(short);
|
||
|
||
// @cmember Assegna una azione al tasto non standard
|
||
virtual bool on_key(KEY key);
|
||
// @cmember Aggiorna i campi con i valori salvati una volta che non ci sono processi attivi
|
||
virtual void on_idle();
|
||
// @cmember Aggiorna in tutti campi della maschera, che fanno riferimento ad una ditta,
|
||
// con il riferimento alla ditta attuale
|
||
virtual void on_firm_change();
|
||
|
||
// @cmember Abilita/disabilita un campo
|
||
virtual void enable(short fld_id, bool on = true);
|
||
// @cmember Disabilita un campo (chiama <mf TMask::enable>)
|
||
void disable(short fld_id)
|
||
{ enable(fld_id, false); }
|
||
// @cmember Riporta il cmpo allo stato di abilitazione iniziale
|
||
void enable_default(short fld_id = 0);
|
||
|
||
// @cmember Forza la visualizzazione della pagina p
|
||
void show_page(int p);
|
||
// @cmember Abilita/disabilita una pagina e tutte le successive
|
||
void enable_page(byte p, bool on = true);
|
||
// @cmember Disabilita una pagina e tutte le successive (chiama <mf TMask::enable_page>)
|
||
void disable_page(byte p)
|
||
{ enable_page(p, false); }
|
||
// @cmember Controlla se una pagina e' disabilitata (true se disabilitata)
|
||
bool page_enabled(byte p) const;
|
||
|
||
// @cmember Ritorna il numero di chiavi utilizzate nei campi della maschera
|
||
word num_keys() const;
|
||
// @cmember Abilita/disabilita i campi di una chiave sulla maschera
|
||
void enable_key(word key, bool on = true);
|
||
// @cmember Disabilita i campi di una chiave sulla maschera (chiama <mf TMask::enable_key>)
|
||
void disable_key(word key)
|
||
{ enable_key(key, false); }
|
||
// @cmember Ritorna il l'identificatore di un campo della chiave <p key>
|
||
TEditable_field* get_key_field(word key, bool first) const;
|
||
// @cmember Controlla se la chiave <p key> ha un valore significativo
|
||
// (true se il valore e' valido)
|
||
bool key_valid(word key) const;
|
||
|
||
// @cmember Permette di mostrare/nascondere un campo (chiama <mf TMask_field::show>)
|
||
virtual void show(short fld_id = -1, bool on = true);
|
||
// @cmember Permette di nascondere un campo (chiama <mf TMask::show>)
|
||
void hide(short fld_id = 0)
|
||
{ show(fld_id, false); }
|
||
// @cmember Rimette lo stato di default del campo
|
||
void show_default(short fld_id = 0);
|
||
|
||
// @cmember Azzera il campo
|
||
virtual void reset(short fld_id = 0);
|
||
// @cmember il campo <20> vuoto ?
|
||
bool empty(short fld_id) { return field(fld_id).empty(); }
|
||
// @cmember il campo non <20> vuoto ?
|
||
bool full(short fld_id) { return field(fld_id).full(); }
|
||
// @cmember il campo <20> attivo ?
|
||
bool active(short fld_id) { return field(fld_id).active(); }
|
||
// @cmember Azzera il campo
|
||
void reset(const char* fld_id) { set(fld_id, ""); }
|
||
|
||
// @cmember Legge, dalla relazione <p TRelation>, i valori del campo con specifica FIELD
|
||
virtual void autoload(const TRelation& r);
|
||
// @cmember Scrive, dalla relazione <p TRelation>, i valori del campo con specifica FIELD
|
||
virtual void autosave(TRelation& r) const;
|
||
|
||
// @cmember Permette di mandare un tasto ad un campo
|
||
void send_key(KEY key, short id, TMask_field* from = NULL);
|
||
// @cmember Permette di mandare un handler ad un controllo
|
||
virtual void set_handler(short fld_id, CONTROL_HANDLER handler);
|
||
// @cmember Permette di mandare un handler ad una maschera
|
||
void set_handler(MASK_HANDLER handler);
|
||
// @cmember Permette di settare il nome del file di salvataggio
|
||
void set_workfile(const char* workfile)
|
||
{ _workfile = workfile; _lastpos = 0L;}
|
||
// @cmember Salva i valori dei campi della maschera sul file di salvataggio
|
||
bool save(const TFilename & fname = EMPTY_STRING, bool append = false, bool save_sheets = true) const;
|
||
// @cmember Legge i valori dei campi della maschera da file di salvataggio
|
||
bool load(const TFilename & fname = EMPTY_STRING, bool reset = false);
|
||
// @cmember Copia i valori dei campi dalla maschera <p m>
|
||
void copy_values(const TMask &m);
|
||
|
||
// @cmember Crea il nome del file dei profili in <p f>
|
||
bool make_profile_name(TFilename& f) const;
|
||
// @cmember Salva il profilo <p num>
|
||
int save_profile(int num = 0, const char* desc = NULL) const;
|
||
// @cmember Carica il profilo <p num>
|
||
int load_profile(int num = 0, bool reset = true);
|
||
// @cmember Carica il profilo <p name>
|
||
int TMask::load_profile(const char * profname, bool reset = true);
|
||
// @cmember Elimina il profilo <p num>
|
||
bool kill_profile(int num);
|
||
|
||
// @cmember Carica il defaults dei campi
|
||
virtual void load_defaults();
|
||
|
||
// @cmember Ritorna il primo campo dirty
|
||
short dirty() const;
|
||
|
||
// @cmember azzera il flag dirty dei campi
|
||
void reset_dirty();
|
||
|
||
// @cmember Setta lo sheet di cui la maschera gestisce le righe
|
||
void set_sheet(TSheet_field* s) { _sheet = s; }
|
||
|
||
// @cmember Ritorna lo sheet che gestisce la maschera
|
||
TSheet_field* get_sheet() const
|
||
{ return _sheet; }
|
||
|
||
// @cmember Ritorna se la maschera e' contenuta in uno sheet (true se contenuta)
|
||
bool is_sheetmask() const
|
||
{ return _sheet != NULL; }
|
||
|
||
// @cmember Ritorna true se la maschera non ha modalita' di utilizzo (vedi <t TMaskmode>)
|
||
bool no_mode() const
|
||
{ return _mode == NO_MODE; }
|
||
// @cmember Ritorna true se la maschera e' in modalita' di richiesta (vedi <t TMaskmode>)
|
||
bool query_mode() const
|
||
{ return _mode == MODE_QUERY || _mode == MODE_QUERYINS; }
|
||
// @cmember Ritorna true se la maschera e' in modalita' di modifica (vedi <t TMaskmode>)
|
||
bool edit_mode() const
|
||
{ return _mode == MODE_MOD; }
|
||
// @cmember Ritorna true se la maschera e' in modalita' di inserimento (vedi <t TMaskmode>)
|
||
bool insert_mode() const
|
||
{ return _mode == MODE_QUERYINS || _mode == MODE_INS; }
|
||
|
||
// @cmember Ritorna il titolo della maschera
|
||
virtual const char* get_caption(TString& str) const;
|
||
// @cmember Setta il titolo della maschera
|
||
virtual void set_caption(const char* c);
|
||
|
||
// @cmember Mostra un messaggio d'errore appena possibile
|
||
void post_error_message(const char* msg, int severity);
|
||
|
||
// @cmember Viene eseguita se il campo viene modificato
|
||
virtual bool on_dirty(TMask_field& c);
|
||
|
||
// @cmember Ritorna l'ultima pagina
|
||
int last_page() const { return _pages - 1; }
|
||
// @cmember Ritorna la pagina identificata da <p w>
|
||
int win2page(WINDOW p) const ;
|
||
// @cmember Ritorna la finestra della toolbar
|
||
WINDOW toolwin() const
|
||
{ return _toolwin; }
|
||
WINDOW toolbar() const
|
||
{ return _toolbar; }
|
||
// @cmember verifica la maschera senza eseguirla
|
||
KEY check_mask();
|
||
// @cmember ritorna la posizione del primo campo di una cella di uno sheet
|
||
int first_cell_fldpos(int & cid);
|
||
// @cmember ritorna la posizione del campo successivo di una cella di uno sheet
|
||
int next_cell_fldpos(int & cid);
|
||
};
|
||
|
||
// @doc EXTERNAL
|
||
|
||
// @class TTimed_box | Classe per la gestione dei box di richiesta temporizzati
|
||
//
|
||
// @base public | TMask
|
||
class TTimed_box: public TMask
|
||
{
|
||
long _timer_delay;
|
||
long _timer_id;
|
||
short _button_id;
|
||
|
||
protected:
|
||
virtual long handler(WINDOW win, EVENT* ep);
|
||
virtual void start_run();
|
||
|
||
public:
|
||
TTimed_box(const char * header,const char * message,int seconds,short button_id,int x,int y);
|
||
~TTimed_box();
|
||
};
|
||
|
||
|
||
// @doc EXTERNAL
|
||
|
||
// @class TTimed_breakbox | Classe per la gestione dei box di richiesta interruzione
|
||
//
|
||
// @base public | TTimed_box
|
||
class TTimed_breakbox: public TTimed_box
|
||
{
|
||
public:
|
||
TTimed_breakbox(const char * message,int seconds,int x=40,int y=10);
|
||
~TTimed_breakbox();
|
||
};
|
||
|
||
class TYesnoallnone_box: public TMask
|
||
{
|
||
public:
|
||
TYesnoallnone_box(const char * message, int default_key = K_YES);
|
||
~TYesnoallnone_box();
|
||
};
|
||
|
||
#define FOR_EACH_MASK_FIELD(__m, __i, __f) \
|
||
TMask_field* __f = NULL; \
|
||
for (int __i = 0; __i < (__m).fields() && (__f=&(__m).fld(__i))!=NULL; __i++)
|
||
|
||
#define FOR_EACH_MASK_SHEET(__m, __i, __s) \
|
||
TSheet_field* __s = NULL; \
|
||
for (int __i = 0; __i < (__m).fields() && (__s=(TSheet_field*)&(__m).fld(__i))!= NULL; __i++) if ((__m).fld(__i).is_sheet())
|
||
|
||
void enable_iban_fields(TMask & mask, short fldbban, short fldbcin,
|
||
short fldabi, short fldcab, short fldcc,
|
||
short flddes, const bool italy, bool pres, int nrow = -1);
|
||
void set_iban_fields(const char * iban, TMask & mask,
|
||
short fldbban, short fldiso, short fldcin,
|
||
short fldbcin, short fldabi, short fldcab,
|
||
short fldcc, short flddes, bool pres);
|
||
|
||
#endif // __MASK_H
|