Files correlati : ba1.exe Ricompilazione Demo : [ ] Commento : 0001036: installazione cd patch 180 Installando ex novo ed indicando una società esistente di dati su una cartella diversa viene segnalato l'errore ba1.exe in fase di conversione archivi, richiamando da manutenzione archivi la conversione vengono generati gli errori allegati. Nell'area ftp di Aga, cartella Ilaria allego l'area dati SIDA per il test. git-svn-id: svn://10.65.10.50/trunk@17971 c028cbd2-c16b-5b4b-a496-9718f37d4682
505 lines
20 KiB
C++
Executable File
505 lines
20 KiB
C++
Executable File
#ifndef __MASK_H
|
|
#define __MASK_H
|
|
|
|
#ifndef __MASKFLD_H
|
|
#include <maskfld.h>
|
|
#endif
|
|
|
|
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
|
|
};
|
|
|
|
// @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 void 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) 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);
|
|
WINDOW create_page(const char* title, int pos); // -1 <= pos < MAX_PAGES
|
|
// @cmember Inizializza la maschera
|
|
void init_mask();
|
|
// @cmember Legge la pagina da file
|
|
void read_page(TScanner& 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:
|
|
// @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, int max);
|
|
|
|
// @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 = NULL, const char* items = NULL);
|
|
// @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 bottone alla toolbar
|
|
TButton_tool& add_button_tool(short id, const char* prompt, short bmpup);
|
|
|
|
// @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 Ritorna il campo corrispondente al FIELD fieldname
|
|
TMask_field* find_by_fieldname(const char* fieldname) const;
|
|
// @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
|
|
void set(short fld_id, const real& num, byte hit=0x0);
|
|
// @cmember Setta il campo con una data
|
|
void set(short fld_id, const TDate& day, byte hit=0x0);
|
|
// @cmember Setta il campo con un valore
|
|
void set(short fld_id, long num, byte hit=0x0);
|
|
// @cmember Setta il campo con un currency
|
|
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 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
|
|
void reset(short fld_id = 0);
|
|
// @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
|
|
void autoload(const TRelation& r);
|
|
// @cmember Scrive, dalla relazione <p Trelation>, i valori del campo con specifica FIELD
|
|
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(bool append = false) const;
|
|
// @cmember Legge i valori dei campi della maschera da file di salvataggio
|
|
bool load(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 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 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 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; }
|
|
};
|
|
|
|
// @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 void 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())
|
|
|
|
|
|
#endif // __MASK_H
|