Aggiunta documentazione in linea
git-svn-id: svn://10.65.10.50/trunk@1633 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
9411b75057
commit
1fada2786c
@ -12,7 +12,7 @@
|
||||
// @base public | TObject
|
||||
class THash_object : public TObject
|
||||
{
|
||||
// @friend class TAssoc_array
|
||||
// @cfriend TAssoc_array
|
||||
friend class TAssoc_array;
|
||||
|
||||
// @access Private Member
|
||||
@ -49,7 +49,7 @@ class TAssoc_array : public TObject
|
||||
|
||||
//@access Private Member
|
||||
|
||||
// @cmember Dimensione della tabella hash
|
||||
// @ccost HASH_SIZE | 113 | Dimensione della tabella hash
|
||||
enum { HASH_SIZE = 113 };
|
||||
// @cmember Numero di oggetti contenuti nella tabella
|
||||
word _cnt;
|
||||
@ -94,8 +94,7 @@ public:
|
||||
// @cmember Controlla l'esistenza di una chiave
|
||||
bool is_key(const char* key);
|
||||
|
||||
// @cmember Ritorna l'indice del oggetto con chiave key (pi— intuitivo di
|
||||
// <mf TAssoc_array::find>
|
||||
// @cmember Ritorna l'indice del oggetto con chiave key (piu' intuitivo di <mf TAssoc_array::find>)
|
||||
TObject& operator[] (const char* key)
|
||||
{ return find(key); }
|
||||
|
||||
|
@ -33,6 +33,7 @@ int fatal_box(
|
||||
// (il formato e' come nella printf del C)
|
||||
|
||||
|
||||
|
||||
// @comm Se si opera in ambiente Windows crea la finestra con il bottone OK
|
||||
// Il programma viene interrotto al momento in cui si e' verificato
|
||||
// l'errore.
|
||||
@ -64,8 +65,9 @@ int fatal_box(
|
||||
|
||||
// @msg error_box | Crea una finestra di ERRORE con il relativo messaggio
|
||||
int error_box(
|
||||
const char* fmt, ...) // @parm Messaggio da stampare nella finestra
|
||||
// (il formato e' come nella printf del C)
|
||||
const char* fmt, // @parm Messaggio da stampare nella finestra
|
||||
...) // @parmvar Uno o piu' parametri corrispondenti ai codici in <p fmt>
|
||||
|
||||
|
||||
// @comm Se si opera in ambiente Windows crea la finestra con il bottone OK
|
||||
// e l'icona punto esclamativo.
|
||||
@ -91,8 +93,8 @@ int error_box(
|
||||
|
||||
// @msg warning_box | Crea una finestra di ATTENZIONE con il relativo messaggio
|
||||
int warning_box(
|
||||
const char* fmt, ...) // @parm Messaggio da stampare nella finestra
|
||||
// (il formato e' come nella printf del C)
|
||||
const char* fmt, // @parm Messaggio da stampare nella finestra
|
||||
...) // @parmvar Uno o piu' parametri corrispondenti ai codici in <p fmt>
|
||||
|
||||
// @comm Se si opera in ambiente Windows crea la finestra con il bottone OK
|
||||
// e l'icona punto di domanda.
|
||||
@ -113,8 +115,8 @@ int warning_box(
|
||||
|
||||
// @msg message_box | Crea una finestra di INFORMAZIONE con relativo il messaggio
|
||||
int message_box(
|
||||
const char* fmt, ...) // @parm Messaggio da stampare nella finestra
|
||||
// (il formato e' come nella printf del C)
|
||||
const char* fmt, // @parm Messaggio da stampare nella finestra
|
||||
...) // @parmvar Uno o piu' parametri corrispondenti ai codici in <p fmt>
|
||||
|
||||
// @comm Se si opera in ambiente Windows crea la finestra con il bottone OK
|
||||
// e l'icona informazioni.
|
||||
@ -133,8 +135,8 @@ int message_box(
|
||||
|
||||
// @msg sorry_box | Crea una finestra di SCUSE con il relativo messaggio
|
||||
int sorry_box(
|
||||
const char* fmt, ...) // @parm Messaggio da stampare nella finestra
|
||||
// (il formato e' come nella printf del C)
|
||||
const char* fmt, // @parm Messaggio da stampare nella finestra
|
||||
...) // @parmvar Uno o piu' parametri corrispondenti ai codici in <p fmt>
|
||||
|
||||
// @comm Se si opera in ambiente Windows crea la finestra con il bottone OK
|
||||
// e l'icona informazioni.
|
||||
@ -153,8 +155,8 @@ int sorry_box(
|
||||
|
||||
// @msg yesno_box | Crea una finestra di RICHIESTA con il relativo messaggio
|
||||
int yesno_box(
|
||||
const char* fmt, ...) // @parm Messaggio da stampare nella finestra
|
||||
// (il formato e' come nella printf del C)
|
||||
const char* fmt, // @parm Messaggio da stampare nella finestra
|
||||
...) // @parmvar Uno o piu' parametri corrispondenti ai codici in <p fmt>
|
||||
|
||||
|
||||
// @comm Se si opera in ambiente Windows crea la finestra con i bottni SI e NO
|
||||
@ -182,8 +184,8 @@ int yesno_box(
|
||||
// @msg yesnofatal_box | Crea una finestra di RICHIESTA con il relativo
|
||||
// messaggio, ma permette di terminare il programma
|
||||
int yesnofatal_box(
|
||||
const char* fmt, ...) // @parm Messaggio da stampare nella finestra
|
||||
// (il formato e' come nella printf del C)
|
||||
const char* fmt, // @parm Messaggio da stampare nella finestra
|
||||
...) // @parmvar Uno o piu' parametri corrispondenti ai codici in <p fmt>
|
||||
|
||||
// @comm Se si opera in ambiente Windows crea la finestra con i bottoni SI e NO
|
||||
// e l'icona col punto di domanda.
|
||||
@ -213,8 +215,8 @@ int yesnofatal_box(
|
||||
|
||||
// @msg yesnocancel_box | Crea una finestra di RICHIESTA con il relativo messaggio
|
||||
int yesnocancel_box(
|
||||
const char* fmt, ...) // @parm Messaggio da stampare nella finestra
|
||||
// (il formato e' come nella printf del C)
|
||||
const char* fmt, // @parm Messaggio da stampare nella finestra
|
||||
...) // @parmvar Uno o piu' parametri corrispondenti ai codici in <p fmt>
|
||||
|
||||
// @comm Se si opera in ambiente Windows crea la finestra con i bottoni SI e NO
|
||||
// e l'icona col punto di domanda.
|
||||
@ -250,8 +252,8 @@ int yesnocancel_box(
|
||||
|
||||
// @msg __trace | Permette di mandare dei messaggi nel file trace.log
|
||||
int __trace(
|
||||
const char* fmt, ...) // @parm Messaggio da stampare
|
||||
// (il formato e' come nella printf del C)
|
||||
const char* fmt, // @parm Messaggio da stampare
|
||||
...) // @parmvar Uno o piu' parametri corrispondenti ai codici in <p fmt>
|
||||
|
||||
// @comm Usato in fase di debug, permette di vedere se il programma ha
|
||||
// fatto certe operazioni (deve essere definito il simbolo TRC in
|
||||
|
@ -35,9 +35,12 @@ enum TDate_mgafmt {
|
||||
// @base public | TObject
|
||||
class TDate : public TObject
|
||||
{
|
||||
// @access Private Member
|
||||
|
||||
// @cmember Valore data in formato packed
|
||||
long _val;
|
||||
|
||||
// @access Protected Member
|
||||
protected:
|
||||
|
||||
// @cmember Controlla se una data e' minore di un'altra
|
||||
@ -52,13 +55,17 @@ protected:
|
||||
friend bool operator ==(const TDate& a, const TDate& b);
|
||||
// @cmember Controlla se una 2 date sono diverse
|
||||
friend bool operator !=(const TDate& a, const TDate& b);
|
||||
long makedata(int day, int month, int year) const { return (10000L * year) + ( 100L * month) + day; }
|
||||
// @cmember Costruisce la data in formato packed
|
||||
long makedata(int day, int month, int year) const
|
||||
{ return (10000L * year) + ( 100L * month) + day; }
|
||||
|
||||
// @access Public Member
|
||||
public:
|
||||
// @cmember Ritorna la data in formato di stringa (anche in formato ANSI)
|
||||
char* string(TDate_mgafmt year = full, char sep = '-', TDate_mgafmt day = full, TDate_mgafmt month = full, TDate_order ord = gma_date) const ;
|
||||
// @cmember Trasforma la data da odierna ??? a ???
|
||||
long date2julian() const;
|
||||
// @cmember Trasforma la data da ??? a ???
|
||||
long julian2date(long julian) const;
|
||||
|
||||
// @cmember Ritorna il giorno
|
||||
@ -141,21 +148,38 @@ public:
|
||||
TDate(int day, int month, int year);
|
||||
};
|
||||
|
||||
// @class TFormatted_date | Classe per la definizione di date con un formato
|
||||
//
|
||||
// @base public | TDate
|
||||
class TFormatted_date : public TDate
|
||||
{
|
||||
// @access Private Member
|
||||
|
||||
// @cmember Formato per tutti i pezzettini
|
||||
char _format[5];
|
||||
|
||||
// @access Public Member
|
||||
public:
|
||||
// @cmember Permette di stabilire il criterio di formattazione delle date
|
||||
void set_format(const char* f);
|
||||
// @cmember Ritorna la data in formato di stringa (vedi <mf TDate::string>)
|
||||
const char* string() const;
|
||||
|
||||
TFormatted_date& operator =(const char* s) { TDate::operator =(s); return *this; }
|
||||
TFormatted_date& operator =(const TDate& d) { TDate::operator =(d); return *this; }
|
||||
TFormatted_date& operator =(const TFormatted_date& d) { TDate::operator =(d); set_format(d._format); return *this; }
|
||||
// @cmember Controlla se due stringhe contenenti date coincidono (TRUE se uguali)
|
||||
TFormatted_date& operator =(const char* s)
|
||||
{ TDate::operator =(s); return *this; }
|
||||
// @cmember Controlla se due oggetti TDate coincidono (TRUE se uguali)
|
||||
TFormatted_date& operator =(const TDate& d)
|
||||
{ TDate::operator =(d); return *this; }
|
||||
// @cmember Controlla se due oggetti TFormatted_date coincidono (TRUE se uguali)
|
||||
TFormatted_date& operator =(const TFormatted_date& d)
|
||||
{ TDate::operator =(d); set_format(d._format); return *this; }
|
||||
|
||||
// @cmember Costruttore (accetta la definizione di giorno, mese e anno)
|
||||
TFormatted_date(int day = 0, int month = 0, int year = 0, const char* f = "1444-");
|
||||
// @cmember Costruttore (accetta una TDate)
|
||||
TFormatted_date(const TDate& d, const char* f = "1444-");
|
||||
// @cmember Costruttore
|
||||
TFormatted_date(const TFormatted_date& d);
|
||||
};
|
||||
|
||||
|
@ -16,11 +16,11 @@
|
||||
// @base public | TObject
|
||||
class TMessage : public TObject
|
||||
{
|
||||
// @access Private Member
|
||||
|
||||
// @friend class TMailbox
|
||||
// @cfriend TMailbox
|
||||
friend class TMailbox;
|
||||
|
||||
// @access Private Member
|
||||
|
||||
// @cmember Applicazione che lancia il messaggio
|
||||
TString16 _from;
|
||||
// @cmember Applicazione che deve ricevere il messaggio
|
||||
|
354
include/mask.cpp
354
include/mask.cpp
@ -19,8 +19,16 @@ HIDDEN const char* const MASK_EXT = "msk";
|
||||
|
||||
HIDDEN bool moving_focus = FALSE;
|
||||
|
||||
// @mfunc Controlla se e' possibile dare il focus alla finestra <p next>
|
||||
//
|
||||
// @rdesc Ritorna la possibilita' di lasciare il focus
|
||||
//
|
||||
// @flag TRUE | Se e' possibile cedere il focus a <p next>
|
||||
// @flag FALSE | Se non e' possibile cedere il focus a <p next>
|
||||
bool TMask::test_focus_change(
|
||||
WINDOW next) // @parm Finestra che dovrebbe ricevere il focus
|
||||
|
||||
bool TMask::test_focus_change(WINDOW next)
|
||||
// @comm Controlla se il contenuto del campo attuale e' valido e quindi puo' perdere il focus
|
||||
{
|
||||
bool ok = TRUE;
|
||||
|
||||
@ -215,8 +223,15 @@ TMask::TMask(const char* title, int pages, int cols, int rows, int xpos,
|
||||
add_buttons();
|
||||
}
|
||||
|
||||
// @doc INTERNAL
|
||||
|
||||
void TMask::read_mask(const char* name, int num, int max)
|
||||
// @mfunc Legge la maschera da file
|
||||
void TMask::read_mask(
|
||||
const char* name, // @parm Nome della maschera da leggere (senza estensione)
|
||||
int num, // @parm Numero della maschera da leggere all'interno del file
|
||||
int max) // @parm Numero massimo di pagine che deve avere la maschera
|
||||
|
||||
// @comm Permette di aggiornare i tempi di caricamento della maschera stessa
|
||||
{
|
||||
if (max <= 0) max = MAX_PAGES;
|
||||
|
||||
@ -430,8 +445,13 @@ void TMask::load_checks() const
|
||||
}
|
||||
}
|
||||
|
||||
// Dis/abilita una pagina e tutte le successive
|
||||
void TMask::enable_page(byte page, bool on)
|
||||
// @mfunc Abilita/disabilita una pagina e tutte le successive
|
||||
void TMask::enable_page(
|
||||
byte page, // @parm Pagina da abilitare/disabilitare
|
||||
bool on) // @parm Operazione da svolgere:
|
||||
//
|
||||
// @flag TRUE | Abilita la pagina <p p> (default)
|
||||
// @flag FALSE | Disabilita la pagina <p p>
|
||||
{
|
||||
CHECK(page > 0, "Can't enable/disable first page");
|
||||
|
||||
@ -550,7 +570,14 @@ void TMask::get_mask_fields()
|
||||
}
|
||||
|
||||
|
||||
int TMask::id2pos(short id) const
|
||||
// @mfunc Converte un identificatore di campo nella sua posizione
|
||||
//
|
||||
// @rdesc Ritorna la posizione del campo nella maschera (-1 se non lo trova)
|
||||
int TMask::id2pos(
|
||||
short id) const // @parm Identificatore del campo del quale trovare la posizione
|
||||
|
||||
// @comm Cerca nella maschera il campo con identificatore <p id> e ne ritorna il numero ordinale
|
||||
// (es. il campo 120 e' il quarto della maschera)
|
||||
{
|
||||
const int MAX_FIELDS = 256;
|
||||
static byte positions[MAX_FIELDS]; // 100 <= id < MAX_FIELDS
|
||||
@ -624,7 +651,16 @@ int TMask::find_field_win(WINDOW win) const
|
||||
}
|
||||
|
||||
|
||||
void TMask::set_focus_win(WINDOW win, bool force)
|
||||
// @mfunc Setta il focus al campo la cui finestra e' <p win>
|
||||
void TMask::set_focus_win(
|
||||
WINDOW win, // @parm Finestra del controllo che riceve il focus
|
||||
bool force) // @parm Forza la chiamata alla <mf TMask::set_focus>
|
||||
|
||||
// @comm Il parametro <p force> puo' assumere i seguenti valori:
|
||||
//
|
||||
// @flag TRUE | Se occorre attivare il focus interno (quello di Windows e' automatico)
|
||||
// @flag FALSE | Se non occorre attivare il focus interno (e' possibile conoscere il focus
|
||||
// interno della classe)
|
||||
{
|
||||
_focus = find_field_win(win);
|
||||
if (force) set_focus();
|
||||
@ -639,8 +675,18 @@ int TMask::find_parent_page(const TMask_field& f) const
|
||||
return MAX_PAGES; // Toolbar button
|
||||
}
|
||||
|
||||
// @mfunc Ritorna il prossimo campo attivabile
|
||||
//
|
||||
// @rdesc Riorna il numero del campo cercato
|
||||
int TMask::find_active_field(
|
||||
int first, // @parm Campo da cui cominciare la ricerca
|
||||
int dir) const // @parm Direzione della ricerca. Puo assumere i valori:
|
||||
//
|
||||
// @flag +1 | Ricerca in avanti
|
||||
// @flag -1 | Ricerca in dietro
|
||||
|
||||
int TMask::find_active_field(int first, int dir) const
|
||||
// @comm Serve per la ricerca del campo attivabil al momento della pressione dei tasti
|
||||
// TAB (o ENTER) e SHIFT+TAB
|
||||
{
|
||||
const int max = fields()-1;
|
||||
WINDOW w, old = fld(_focus).parent();
|
||||
@ -694,8 +740,17 @@ void TMask::set_focus()
|
||||
}
|
||||
|
||||
|
||||
// Move the focus to the next (+1) or previous(-1) valid control
|
||||
void TMask::move_focus_field(int d)
|
||||
// @mfunc Muove il focus al prossimo o al precedente controllo valido
|
||||
void TMask::move_focus_field(
|
||||
int d) // @parm Indica lo spostamento relativo del focus rispetto
|
||||
// al campo attuale:
|
||||
//
|
||||
// @flag +1 | Si sposta sul campo successivo
|
||||
// @flag -1 | Si sposta sul campo precedente
|
||||
//
|
||||
// @comm E' possibile che il parametro <p d> assuma valori diversi da -1 o +1. In questo caso
|
||||
// sposta il focus di piu' di una posizione.
|
||||
|
||||
{
|
||||
|
||||
TMask_field& f = fld(_focus);
|
||||
@ -719,7 +774,17 @@ void TMask::move_focus_field(int d)
|
||||
set_focus();
|
||||
}
|
||||
|
||||
bool TMask::stop_run(KEY key)
|
||||
// @mfunc Forza la chiusura della maschera
|
||||
//
|
||||
// @rdesc Ritorna il risultato dell'operazione:
|
||||
//
|
||||
// @flag TRUE | E' riuscita a chiudere la maschera
|
||||
// @flag FALSE | Non e' riuscita a chiudere la maschera
|
||||
bool TMask::stop_run(
|
||||
KEY key) // @parm Tasto che deve provocare la chiusura
|
||||
|
||||
// @comm Permette di chiudere la maschera come se l'utente avesse premuto il tasto <p key>.
|
||||
// Nela caso la maschera non si chiuda (es. un check fallito), ritorna FALSE.
|
||||
{
|
||||
if (key != K_AUTO_ENTER && key != K_FORCE_CLOSE)
|
||||
{
|
||||
@ -766,7 +831,17 @@ bool TMask::stop_run(KEY key)
|
||||
return TWindow::stop_run(key);
|
||||
}
|
||||
|
||||
bool TMask::on_key(KEY key)
|
||||
// @mfunc Assegna una azione al tasto non standard
|
||||
//
|
||||
// @rdesc Ritrna se e' stto effetuato una azione:
|
||||
//
|
||||
// @flag TRUE | Era prevista una azione collegata al tasto ed e' stata eseguita
|
||||
// @flag FALSE | Non era prevista nessuna azione collegata al tasto
|
||||
bool TMask::on_key(
|
||||
KEY key) // @parm Tasto premuto sulla maschera
|
||||
|
||||
// @comm Controlla se il tasto e' tra quelli standard previsti dalla maschera corrente, in caso
|
||||
// contrario ne assegna una azione
|
||||
{
|
||||
if (_handler)
|
||||
{
|
||||
@ -865,7 +940,15 @@ TMask_field* TMask::parse_field(TScanner& scanner)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
WINDOW TMask::read_page(TScanner& scanner, bool toolbar)
|
||||
// @mfunc Legge la pagina dal file
|
||||
//
|
||||
// @rdesc Ritorna l'andle della finestra creata
|
||||
WINDOW TMask::read_page(
|
||||
TScanner& scanner, // @parm File dal quale leggere la pagina
|
||||
bool toolbar) // @parm Indica se esiste la toolbar
|
||||
|
||||
// @comm Il parametro <p toolbar> e' utilizzato per indicare se la pagina deve essere visualizzata
|
||||
// a tutto schermo (TRUE) oppure no
|
||||
{
|
||||
static int tooly;
|
||||
static RCT rect;
|
||||
@ -931,7 +1014,15 @@ WINDOW TMask::read_page(TScanner& scanner, bool toolbar)
|
||||
return w;
|
||||
}
|
||||
|
||||
int TMask::find_first_field(WINDOW w, int dir) const
|
||||
// @mfunc Ritorna la posizione del primo campo attivo nella direzione specificata
|
||||
//
|
||||
// @rdesc Ritorna il primo campo attivo
|
||||
int TMask::find_first_field(
|
||||
WINDOW w, // @parm handle della finestra (pagina) nel quale cercare
|
||||
int dir) const // @parm Direzione di ricerca. Puo' assumere i valori:
|
||||
//
|
||||
// @flag +1 | Direzione in avanti
|
||||
// @flag -1 | Direzione in dietro
|
||||
{
|
||||
const int last = fields()-1;
|
||||
const int fi = (dir > 0) ? 0 : last;
|
||||
@ -968,7 +1059,16 @@ bool TMask::check_current_page()
|
||||
}
|
||||
|
||||
|
||||
void TMask::next_page(int p)
|
||||
// @mfunc Mostra la prossima/precedente pagina
|
||||
void TMask::next_page(
|
||||
int p) // @parm Pagina alla quale saltare
|
||||
|
||||
// @comm Il valore <p p> puo' assumere i seguenti valori:
|
||||
//
|
||||
// @flag -1 | Mostra la pagina precedente
|
||||
// @flag 0 | Mostra la pagina corrente
|
||||
// @flag +1 | Mostra la pagina successiva
|
||||
// @flag 1000+n | Mostra la pagina n-esima
|
||||
{
|
||||
const int prev = _page; // Previous page
|
||||
|
||||
@ -1041,7 +1141,16 @@ bool TMask::get_bool(short fld_id) const
|
||||
return field(fld_id).get().not_empty();
|
||||
}
|
||||
|
||||
void TMask::set(short fld_id, const char* s, bool hit)
|
||||
// @mfunc Setta il campo con un valore
|
||||
void TMask::set(
|
||||
short fld_id, // @parm Identificatore del campo da settare
|
||||
const char* s, // @parm Stringa da assegnare al campo
|
||||
bool hit) // @parm Indica se occorre rifare i controlli una volta settato il campo
|
||||
// con il nuovo valore (default FALSE)
|
||||
// @parm long | n | Numero da asegnare al campo
|
||||
|
||||
// @syntax set(short fld_id, const char *s, bool hit);
|
||||
// @syntax set(short fld_id, long n, bool hit);
|
||||
{
|
||||
TMask_field& f = field(fld_id);
|
||||
f.set(s);
|
||||
@ -1057,7 +1166,12 @@ void TMask::set(short fld_id, long n, bool hit)
|
||||
}
|
||||
|
||||
|
||||
void TMask::activate(bool on)
|
||||
// @mfunc Permette di attivare/disattivare tutta la pagina
|
||||
void TMask::activate(
|
||||
bool on) // @parm Indica l'operazione da svolgere sul campo:
|
||||
//
|
||||
// @flag TRUE | Attiva la pagina(default)
|
||||
// @flag FALSE | Disattiva la pagina
|
||||
{
|
||||
TWindow::activate(on);
|
||||
if (toolwin() != NULL_WIN)
|
||||
@ -1065,7 +1179,13 @@ void TMask::activate(bool on)
|
||||
}
|
||||
|
||||
|
||||
void TMask::enable(short fld_id, bool on)
|
||||
// @mfunc Abilita/disabilita un campo
|
||||
void TMask::enable(
|
||||
short fld_id, // @parm Identificatore del campo da abilitare (-1 tutti i campi)
|
||||
bool on) // @parm Indica l'operazione da svolgere sul campo:
|
||||
//
|
||||
// @flag TRUE | Abilita il campo (default)
|
||||
// @flag FALSE | Disabilita il campo
|
||||
{
|
||||
if (fld_id <= 0)
|
||||
{
|
||||
@ -1102,7 +1222,14 @@ byte TMask::num_keys() const
|
||||
return max;
|
||||
}
|
||||
|
||||
void TMask::enable_key(byte key, bool on)
|
||||
// @mfunc Abilita/disabilita i campi di una chiave sulla maschera
|
||||
void TMask::enable_key(
|
||||
byte key, // @parm Chiave di cui abilitare il campo
|
||||
bool on) // @parm Indica l'operazione da svolgere sul tasto:
|
||||
//
|
||||
// @flag TRUE | Abilita il campo (default)
|
||||
// @flag FALSE | Disabilita il campo
|
||||
|
||||
{
|
||||
for (int i = 0; i < fields(); i++)
|
||||
if (fld(i).in_key(key))
|
||||
@ -1118,7 +1245,15 @@ void TMask::enable_key(byte key, bool on)
|
||||
}
|
||||
|
||||
|
||||
short TMask::get_key_field(byte key, bool first) const
|
||||
// @mfunc Ritorna il l'identificatore di un campo della chiave <p key>
|
||||
//
|
||||
// @rdesc Ritorna l'identificatore del campo cercato
|
||||
short TMask::get_key_field(
|
||||
byte key, // @parm Chiave di cui controllare l'esistenza
|
||||
bool first) const // @parm Indica se la ricerca dev partire dell'inizio. Assume i valori:
|
||||
//
|
||||
// @flag TRUE | Comincia la ricerca dal primo campo della maschera
|
||||
// @flag FALSE | Comincia la ricerca dal campo attuale nella maschera
|
||||
{
|
||||
static int last = 0;
|
||||
|
||||
@ -1160,8 +1295,16 @@ bool TMask::key_valid(int key) const
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
// @mfunc Permette di mostrare/nascondere un campo
|
||||
void TMask::show(
|
||||
short fld_id, // @parm Campo da mostrare/nascondere (default -1)
|
||||
bool on) // @parm Indica l'operazione da svolgere sul campo:
|
||||
//
|
||||
// @flag TRUE | Mostra il campo(default)
|
||||
// @flag FALSE | Nasconde il campo
|
||||
|
||||
// @comm Se <p fld_id> e' -1 allora permette di operare su tutti i campi della maschera
|
||||
|
||||
void TMask::show(short fld_id, bool on)
|
||||
{
|
||||
if (fld_id <= 0)
|
||||
{
|
||||
@ -1178,7 +1321,11 @@ void TMask::show(short fld_id, bool on)
|
||||
|
||||
|
||||
|
||||
void TMask::show_default(short fld_id)
|
||||
// @mfunc Rimette lo stato di default del campo
|
||||
void TMask::show_default(
|
||||
short fld_id) // @parm Identificatore del campo da risettare (default -1)
|
||||
|
||||
// @comm Se <p parm> Assume il valore -1 vuole dire che vengono risettati tutti i campi della amschera
|
||||
{
|
||||
if (fld_id <= 0)
|
||||
{
|
||||
@ -1246,7 +1393,11 @@ void TMask::on_idle()
|
||||
}
|
||||
|
||||
|
||||
void TMask::send_key(KEY key, short to, TMask_field* from)
|
||||
// @mfunc Permette di mandare un tasto ad un campo
|
||||
void TMask::send_key(
|
||||
KEY key, // @parm Codice del tasto da spedire
|
||||
short to, // @parm Identificatore del campo che deve ricevere
|
||||
TMask_field* from) // @parm Campo che spedisce il tasto
|
||||
{
|
||||
if (to == 0)
|
||||
{
|
||||
@ -1287,7 +1438,19 @@ void TMask::send_key(KEY key, short to, TMask_field* from)
|
||||
}
|
||||
}
|
||||
|
||||
void TMask::set_handler(short fld_id, CONTROL_HANDLER handler)
|
||||
// @mfunc Permette di mandare un handler ad controllo o ad una maschera
|
||||
void TMask::set_handler(
|
||||
short fld_id, // @parm Identificatere del campo che deve ricevere l'handler
|
||||
CONTROL_HANDLER handler) // @parm Handler da spedire al campo
|
||||
// @parm MASK_HANDLER | handler | Handler da spedire alla maschera
|
||||
|
||||
// @syntax set_handler(short fld_id, CONTROL_HANDLER handler);
|
||||
// @syntax set_handler(MASK_HANDLER handler);
|
||||
//
|
||||
// @comm Nel primo caso viene mandato un <t CONTROL_HANDLER> al campo indicato
|
||||
// da <p fld_id>, mentre nel secondo viene mandato un <t MASK_HANDLER>
|
||||
// alla maschera corrente
|
||||
|
||||
{
|
||||
field(fld_id).set_handler(handler);
|
||||
}
|
||||
@ -1297,10 +1460,20 @@ void TMask::set_handler(MASK_HANDLER handler)
|
||||
_handler = handler;
|
||||
}
|
||||
|
||||
// aggiunta campi a runtime
|
||||
|
||||
WINDOW TMask::add_static (short id, int page, const char* prompt, int x,
|
||||
int y, const char* flags)
|
||||
// @mfunc Aggiunge runtime un campo testo alla maschera
|
||||
//
|
||||
// @rdesc Ritorna l'handle del campo creato
|
||||
WINDOW TMask::add_static (
|
||||
short id, // @parm Numero identificatore del campo da aggiungere
|
||||
int page, // @parm Pagina nel quale aggiungere il campo
|
||||
const char* prompt, // @parm Prompt del campo
|
||||
int x, // @parm Coordinata x (in caratteri)
|
||||
int y, // @parm Coordinata y (in caratteri)
|
||||
const char* flags) // @parm Flag di controllo del campo (deafult "")
|
||||
|
||||
// @xref <mf TMask::add_string> <mf TMask::add_number> <mf TMask::add_date>
|
||||
// <mf TMask::add_button> <mf TMask::add_radio> <mf TMask::add_memo>
|
||||
{
|
||||
TMask_field* f = new TMask_field(this);
|
||||
f->construct(id, prompt, x, y, strlen(prompt), _pagewin[page], flags);
|
||||
@ -1308,8 +1481,21 @@ WINDOW TMask::add_static (short id, int page, const char* prompt, int x,
|
||||
return f->win();
|
||||
}
|
||||
|
||||
WINDOW TMask::add_string (short id, int page, const char* prompt, int x,
|
||||
int y, int dim, const char* flags, int width)
|
||||
// @mfunc Aggiunge runtime un campo stringa alla maschera
|
||||
//
|
||||
// @rdesc Ritorna l'handle del campo creato
|
||||
WINDOW TMask::add_string (
|
||||
short id, // @parm Numero identificatore del campo da aggiungere
|
||||
int page, // @parm Pagina nel quale aggiungere il campo
|
||||
const char* prompt, // @parm Prompt del campo
|
||||
int x, // @parm Coordinata x (in caratteri)
|
||||
int y, // @parm Coordinata y (in caratteri)
|
||||
int dim, // @parm Lunghezza del campo sulla maschera
|
||||
const char* flags, // @parm Flag di controllo del campo (defailt "")
|
||||
int width) // @parm Lunghezza totale del campo stringa (default 0)
|
||||
|
||||
// @xref <mf TMask::add_static> <mf TMask::add_number> <mf TMask::add_date>
|
||||
// <mf TMask::add_button> <mf TMask::add_radio> <mf TMask::add_memo>
|
||||
{
|
||||
TEdit_field* f = new TEdit_field(this);
|
||||
f->construct(id, prompt, x, y, dim, _pagewin[page], flags, width);
|
||||
@ -1317,8 +1503,21 @@ WINDOW TMask::add_string (short id, int page, const char* prompt, int x,
|
||||
return f->win();
|
||||
}
|
||||
|
||||
WINDOW TMask::add_number (short id, int page, const char* prompt, int x,
|
||||
int y, int dim, const char* flags, int ndec)
|
||||
// @mfunc Aggiunge runtime un campo numerico alla maschera
|
||||
//
|
||||
// @rdesc Ritorna l'handle del campo creato
|
||||
WINDOW TMask::add_number (
|
||||
short id, // @parm Numero identificatore del campo da aggiungere
|
||||
int page, // @parm Pagina nel quale aggiungere il campo
|
||||
const char* prompt, // @parm Prompt del campo
|
||||
int x, // @parm Coordinata x (in caratteri)
|
||||
int y, // @parm Coordinata y (in caratteri)
|
||||
int dim, // @parm Lunghezza del campo sulla maschera
|
||||
const char* flags, // @parm Flag di controllo del campo (default "")
|
||||
int ndec) // @parm Numero di decimali (default 0)
|
||||
|
||||
// @xref <mf TMask::add_static> <mf TMask::add_string> <mf TMask::add_date>
|
||||
// <mf TMask::add_button> <mf TMask::add_radio> <mf TMask::add_memo>
|
||||
{
|
||||
TReal_field* f = new TReal_field(this);
|
||||
f->construct(id, prompt, x, y, dim, _pagewin[page], flags, ndec);
|
||||
@ -1326,8 +1525,19 @@ WINDOW TMask::add_number (short id, int page, const char* prompt, int x,
|
||||
return f->win();
|
||||
}
|
||||
|
||||
WINDOW TMask::add_date (short id, int page, const char* prompt, int x,
|
||||
int y, const char* flags)
|
||||
// @mfunc Aggiunge runtime un campo data alla maschera
|
||||
//
|
||||
// @rdesc Ritorna l'handle del campo creato
|
||||
WINDOW TMask::add_date (
|
||||
short id, // @parm Numero identificatore del campo da aggiungere
|
||||
int page, // @parm Pagina nel quale aggiungere il campo
|
||||
const char* prompt, // @parm Prompt del campo
|
||||
int x, // @parm Coordinata x (in caratteri)
|
||||
int y, // @parm Coordinata y (in caratteri)
|
||||
const char* flags) // @parm Flag di controllo del campo (default "")
|
||||
|
||||
// @xref <mf TMask::add_static> <mf TMask::add_string> <mf TMask::add_number>
|
||||
// <mf TMask::add_button> <mf TMask::add_radio> <mf TMask::add_memo>
|
||||
{
|
||||
TDate_field* f = new TDate_field(this);
|
||||
f->construct(id, prompt, x, y, 10, _pagewin[page], flags);
|
||||
@ -1335,8 +1545,21 @@ WINDOW TMask::add_date (short id, int page, const char* prompt, int x,
|
||||
return f->win();
|
||||
}
|
||||
|
||||
WINDOW TMask::add_button (short id, int page, const char* prompt, int x,
|
||||
int y, int dx, int dy, const char* flags)
|
||||
// @mfunc Aggiunge runtime un campo bottone alla maschera
|
||||
//
|
||||
// @rdesc Ritorna l'handle del campo creato
|
||||
WINDOW TMask::add_button (
|
||||
short id, // @parm Numero identificatore del campo da aggiungere
|
||||
int page, // @parm Pagina nel quale aggiungere il campo
|
||||
const char* prompt, // @parm Prompt del campo
|
||||
int x, // @parm Coordinata x (in caratteri)
|
||||
int y, // @parm Coordinata y (in caratteri)
|
||||
int dx, // @parm Larghezza del campo (in caratteri, defailt 9)
|
||||
int dy, // @parm Altezza del campo (in caratteri, default 1)
|
||||
const char* flags) // @parm Flag di controllo del campo (default "")
|
||||
|
||||
// @xref <mf TMask::add_static> <mf TMask::add_string> <mf TMask::add_number>
|
||||
// <mf TMask::add_date> <mf TMask::add_radio> <mf TMask::add_memo>
|
||||
{
|
||||
TButton_field* f = new TButton_field(this);
|
||||
f->construct(id, prompt, x, y, dy, _pagewin[page], flags, dx);
|
||||
@ -1345,8 +1568,22 @@ WINDOW TMask::add_button (short id, int page, const char* prompt, int x,
|
||||
}
|
||||
|
||||
|
||||
WINDOW TMask::add_radio(short id, int page, const char* prompt, int x,
|
||||
int y, int dx, const char* codes, const char* items, const char* flags)
|
||||
// @mfunc Aggiunge runtime un campo radio button alla maschera
|
||||
//
|
||||
// @rdesc Ritorna l'handle del campo creato
|
||||
WINDOW TMask::add_radio(
|
||||
short id, // @parm Numero identificatore del campo da aggiungere
|
||||
int page, // @parm Pagina nel quale aggiungere il campo
|
||||
const char* prompt, // @parm Prompt del campo
|
||||
int x, // @parm Coordinata x (in caratteri)
|
||||
int y, // @parm Coordinata y (in caratteri)
|
||||
int dx, // @parm Larghezza del campo (in caratteri)
|
||||
const char* codes, // @parm Array di codici delle voci
|
||||
const char* items, // @parm Array di prompt delle voci
|
||||
const char* flags) // @parm Flag di controllo del campo (default "")
|
||||
|
||||
// @xref <mf TMask::add_static> <mf TMask::add_string> <mf TMask::add_number>
|
||||
// <mf TMask::add_date> <mf TMask::add_button> <mf TMask::add_memo>
|
||||
{
|
||||
TRadio_field* f = new TRadio_field(this);
|
||||
f->replace_items(codes, items);
|
||||
@ -1355,8 +1592,21 @@ WINDOW TMask::add_radio(short id, int page, const char* prompt, int x,
|
||||
return ((TMask_field*)f)->win();
|
||||
}
|
||||
|
||||
WINDOW TMask::add_memo(short id, int page, const char* prompt, int x, int y,
|
||||
int dx, int dy, const char* flags)
|
||||
// @mfunc Aggiunge runtime un campo memo alla maschera
|
||||
//
|
||||
// @rdesc Ritorna l'handle del campo creato
|
||||
WINDOW TMask::add_memo(
|
||||
short id, // @parm Numero identificatore del campo da aggiungere
|
||||
int page, // @parm Pagina nel quale aggiungere il campo
|
||||
const char* prompt, // @parm Prompt del campo
|
||||
int x, // @parm Coordinata x (in caratteri)
|
||||
int y, // @parm Coordinata y (in caratteri)
|
||||
int dx, // @parm Larghezza del campo (in caratteri, deafilt 78)
|
||||
int dy, // @parm Altezza del campo (in caratteri, default 4)
|
||||
const char* flags) // @parm Flag di controllo del campo (default "")
|
||||
|
||||
// @xref <mf TMask::add_static> <mf TMask::add_string> <mf TMask::add_number>
|
||||
// <mf TMask::add_date> <mf TMask::add_button> <mf TMask::add_radio>
|
||||
{
|
||||
TMemo_field* f = new TMemo_field(this);
|
||||
f->construct(id, prompt, x, y, dy, _pagewin[page], flags, dx);
|
||||
@ -1364,7 +1614,15 @@ WINDOW TMask::add_memo(short id, int page, const char* prompt, int x, int y,
|
||||
return ((TMask_field*)f)->win();
|
||||
}
|
||||
|
||||
bool TMask::save(bool append) const
|
||||
// @mfunc Permette di salvare il file di salvataggio
|
||||
//
|
||||
// @rdesc Ritorna il risultato dell'operazione:
|
||||
//
|
||||
// @flag TRUE | Se l'operazione e' avvenuta corretamente
|
||||
// @flag FALSE | Se non si riesce a creare il file di salvataggio
|
||||
bool TMask::save(
|
||||
bool append) const // @parm Indica se creare il file o appendere (TRUE) le informazioni
|
||||
// ad uno gia' esistente (FALSE, default).
|
||||
|
||||
{
|
||||
FILE* f = fopen((const char *) _workfile, append ? "a" : "w");
|
||||
@ -1384,7 +1642,18 @@ bool TMask::save(bool append) const
|
||||
}
|
||||
|
||||
|
||||
bool TMask::load(bool reset)
|
||||
// @mfunc Permette di leggere il file di salvataggio
|
||||
//
|
||||
|
||||
// @rdesc Ritorna il risultato dell'operazione:
|
||||
//
|
||||
// @flag TRUE | Se l'operazione e' avvenuta corretamente
|
||||
// @flag FALSE | Se non si riesce a leggere il file di salvataggio
|
||||
bool TMask::load(
|
||||
bool reset) // @parm Indica la posizione di lettura del file:
|
||||
//
|
||||
// @flag TRUE | Comincia la lettura dell'inizio
|
||||
// @flag FALSE | Comincia la lettura dalla posizione corrente dell'offset
|
||||
|
||||
{
|
||||
FILE* f = fopen((const char *) _workfile, "r");
|
||||
@ -1425,7 +1694,10 @@ void TMask::set_caption(const char* c)
|
||||
}
|
||||
|
||||
|
||||
void TMask::set_exchange(bool show_value, const real& n)
|
||||
// @mfunc Setta il valore attuale della valuta
|
||||
void TMask::set_exchange(
|
||||
bool show_value, // @parm Indica se il deve essere visibile l'importo in valuta
|
||||
const real& n) // @parm Indica il cambio attuale della valuta
|
||||
{
|
||||
const real nuo = (n.sign() <= 0) ? _exchange : n;
|
||||
|
||||
|
330
include/mask.h
330
include/mask.h
@ -13,193 +13,341 @@
|
||||
#include <real.h>
|
||||
#endif
|
||||
|
||||
// @doc EXTERNAL
|
||||
|
||||
// @T
|
||||
// @type MASK_HANDLER | Funzione per gestire i tasti speciali all'interno di una maschera.
|
||||
typedef bool (*MASK_HANDLER)(TMask& mask, KEY key);
|
||||
enum TMaskmode { NO_MODE, MODE_INS , MODE_MOD ,
|
||||
MODE_VIS , MODE_QUERY, MODE_QUERYINS };
|
||||
// @END
|
||||
|
||||
// @C
|
||||
// Classe TMask : public TWindow
|
||||
// @END
|
||||
// @enum Modalita' di utilizzo della maschera corrente
|
||||
enum TMaskmode {
|
||||
NO_MODE, // @emem Nessun modo
|
||||
MODE_INS , // @emem Modalita' di inserimento dati
|
||||
MODE_MOD , // @emem Modalita' di modifca dati
|
||||
MODE_VIS , // @emem Modalita' di visualizzaione dati
|
||||
MODE_QUERY, // @emem Modalita' di richiesta chiave
|
||||
MODE_QUERYINS }; // @emem Modalita' di richiesta chiave e inserimento dati
|
||||
|
||||
// @class TMask | Classe per la gestione delle maschere video
|
||||
//
|
||||
// @base public | TWindow
|
||||
class TMask : public TWindow
|
||||
{
|
||||
// @DPRIV
|
||||
enum { MAX_PAGES = 12 }; // Massimo numero di pagine nella maschera
|
||||
WINDOW _pagewin[MAX_PAGES+1]; // Windows of the pages
|
||||
WINDOW _pagepag[MAX_PAGES]; // Windows of pgup/pgdn
|
||||
WINDOW _pagetag[MAX_PAGES]; // Windows of pagetags
|
||||
// @author:(INTERNAL) Guido
|
||||
|
||||
int _pages; // Number of pages of the mask
|
||||
int _page; // Current page
|
||||
// @access Private Member
|
||||
|
||||
TBit_array _enabled; // Are pages enabled
|
||||
int _mode; // Mode of the mask
|
||||
TArray _field; // Fields in the mask
|
||||
// @ccost MAX_PAGES | 12 | Massimo numero di pagine nella maschera
|
||||
enum { MAX_PAGES = 12 };
|
||||
// @cmember Windows delle pagine
|
||||
WINDOW _pagewin[MAX_PAGES+1];
|
||||
// @cmember Windows per pgup/pgdn
|
||||
WINDOW _pagepag[MAX_PAGES];
|
||||
// @cmember Windows di numeri pagina
|
||||
WINDOW _pagetag[MAX_PAGES];
|
||||
|
||||
int _first_focus; // First control to have focus
|
||||
int _focus; // Control with focus
|
||||
int _next_fld; // Control who is gaining the focus
|
||||
int _sheets; // Number of sheets
|
||||
// @cmember Numero di pagine della maschera
|
||||
int _pages;
|
||||
// @cmember Pagina corrente
|
||||
int _page;
|
||||
|
||||
MASK_HANDLER _handler; // User defined key handler
|
||||
// @cmember Controlla le pagine abilitate
|
||||
TBit_array _enabled;
|
||||
// @cmember Modalita' di utilizzo della maschera
|
||||
int _mode;
|
||||
// @cmember Numero di campi della maschera
|
||||
TArray _field;
|
||||
|
||||
TFilename _source_file; // Source file of the mask
|
||||
TFilename _workfile; // Name of savefile
|
||||
// @cmember Primo controllo che deve ricevere il focus
|
||||
int _first_focus;
|
||||
// @cmember Controllo che possiede il focus
|
||||
int _focus;
|
||||
// @cmember Controllo che deve ricevere il focus
|
||||
int _next_fld;
|
||||
// @cmember Numero di sheet
|
||||
int _sheets;
|
||||
|
||||
long _lastpos; // last read offset on savefile
|
||||
// @cmember Handler per gestire i tasti speciali nelle maschere
|
||||
MASK_HANDLER _handler;
|
||||
|
||||
real _exchange; // Current value exhange
|
||||
bool _sheetmask; // Mask owned by a sheet
|
||||
bool _should_check; // Mask should load checks when starting
|
||||
// @cmember Nome del file sorgente contenente la maschera
|
||||
TFilename _source_file;
|
||||
// @cmember Nome del file di salvataggio in cui sono scaricati i valori della maschera
|
||||
TFilename _workfile;
|
||||
|
||||
long _total_time, _build_time, _init_time;
|
||||
// @cmember Ultimo offset letto nel file di salvataggio
|
||||
long _lastpos;
|
||||
|
||||
// @cmember Cambio attuale per i cambi in valuta
|
||||
real _exchange;
|
||||
// @cmember Controlla se e' una maschera contenuto in un sheet
|
||||
bool _sheetmask;
|
||||
// @cmember Controlla se la maschera deve fare i controlli iniziali di validita' dei campi
|
||||
bool _should_check;
|
||||
|
||||
// @cmember Tempo totale di caricamento della maschera
|
||||
long _total_time;
|
||||
// @cmember Tempo di compilazione della maschera
|
||||
long _build_time;
|
||||
// @cmember Tempo di inizializzazione della maschera
|
||||
long _init_time;
|
||||
|
||||
// @access Protected Member
|
||||
protected:
|
||||
// Ritorna la finestra della pagina corrente (Usare con attenzione)
|
||||
WINDOW win() const { return _page < 0 ? _pagewin[0] : _pagewin[_page]; }
|
||||
WINDOW toolwin() const { return _pagewin[MAX_PAGES]; }
|
||||
// @cmember Ritorna la finestra della pagina corrente (Usare con attenzione)
|
||||
WINDOW win() const
|
||||
{ return _page < 0 ? _pagewin[0] : _pagewin[_page]; }
|
||||
// @cmember Ritorna la finestra della toolbar
|
||||
WINDOW toolwin() const
|
||||
{ return _pagewin[MAX_PAGES]; }
|
||||
|
||||
int find_field_win(WINDOW win) const; // number of field with window win
|
||||
// @cmember Ritorna il numero di campi nella finestra
|
||||
int find_field_win(WINDOW win) const;
|
||||
|
||||
void set_mask_fields() const; // update screen
|
||||
// @cmember Aggiorna i controlli a video con i valori iniziali della maschera
|
||||
void set_mask_fields() const;
|
||||
|
||||
void load_checks() const; // load checks related fields
|
||||
virtual void start_run(); // called when the mask starts to run
|
||||
// @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 Legge il campo da file
|
||||
virtual TMask_field* parse_field(TScanner& scanner);
|
||||
|
||||
// @cmember Inizializza la maschera
|
||||
void init_mask();
|
||||
// @cmember Legge la pagina da file
|
||||
WINDOW read_page(TScanner& scanner, bool toolbar = FALSE);
|
||||
// @cmember Legge la maschera da file
|
||||
void read_mask(const char* name, int num, int max);
|
||||
// @cmember Permette di aggiungere sulla maschera tutti i bottoni per la
|
||||
// navigazione tra le pagine
|
||||
void add_buttons();
|
||||
|
||||
int find_parent_page(const TMask_field&) const;
|
||||
// @cmember Ritorna il numero della finestra padre del campo <p f>
|
||||
int find_parent_page(const TMask_field& f) const;
|
||||
// @cmember Ritorna la posizione del primo campo attivo nella direzione specificata
|
||||
int find_first_field(WINDOW w, int dir) const;
|
||||
// @cmember Ritorna il prossimo campo attivabile
|
||||
int find_active_field(int first, int dir) const;
|
||||
bool check_current_page(); // Check all the fields on the current page
|
||||
void next_page(int p); // Show next/previous page
|
||||
int curr_page() const { return _page; } // Current page number
|
||||
// @cmember Controlla tutti i campi della pagina corrente
|
||||
bool check_current_page();
|
||||
// @cmember Mostra la prossima/precedente pagina
|
||||
void next_page(int p);
|
||||
// @cmember Ritorna il numero della pagina corrente
|
||||
int curr_page() const
|
||||
{ return _page; }
|
||||
|
||||
bool test_focus_change(WINDOW w = NULL_WIN);
|
||||
// @cmember Controlla se e' possibile dare il focus alla finestra <p next> (TRUE se possibile)
|
||||
bool test_focus_change(WINDOW next = NULL_WIN);
|
||||
// @cmember Funzione chiamata ogni volta che arriva un evento e lo gestisce
|
||||
void control_handler(EVENT* ep);
|
||||
void handler(WINDOW win, EVENT* ep);
|
||||
// @cmember Gestisce gli eventi XVT diretti alla pagina corrente della maschera
|
||||
virtual void handler(WINDOW win, EVENT* ep);
|
||||
|
||||
// @access Public Member
|
||||
public:
|
||||
// @FPUB
|
||||
// crea leggendo descrizione da file .msk
|
||||
// @cmember Costruttore (crea la maschera leggendo la descrizione dal file .msk)
|
||||
TMask(const char* name, 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);
|
||||
|
||||
// crea mask vuota con parametri dati
|
||||
TMask(const char* title, int pages, int cols, int rows, int xpos = -1,
|
||||
int ypos = -1);
|
||||
|
||||
// @cmember Distruttore
|
||||
virtual ~TMask();
|
||||
|
||||
const TFilename& source_file() const { return _source_file; }
|
||||
// @cmember Ritorna il nome del file contentente la maschera
|
||||
const TFilename& source_file() const
|
||||
{ return _source_file; }
|
||||
|
||||
// aggiunta campi a runtime
|
||||
WINDOW add_static (short id, int page, const char* prompt, int x, int y,
|
||||
const char* flags = "");
|
||||
WINDOW add_string (short id, int page, const char* prompt, int x, int y,
|
||||
int dim, const char* flags = "", int width = 0);
|
||||
WINDOW add_number (short id, int page, const char* prompt, int x, int y,
|
||||
int dim, const char* flags = "", int ndec = 0);
|
||||
WINDOW add_date (short id, int page, const char* prompt, int x, int y,
|
||||
const char* flags = "");
|
||||
WINDOW add_button (short id, int page, const char* prompt, int x, int y,
|
||||
int dx = 9, int dy = 1, const char* flags = "");
|
||||
WINDOW add_radio(short id, int page, const char* prompt, int x, int y,
|
||||
int dx, const char* codes, const char* items, const char* flags = "");
|
||||
WINDOW 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 testo alla maschera
|
||||
WINDOW add_static (short id, int page, const char* prompt, int x, int y, const char* flags = "");
|
||||
// @cmember Aggiunge runtime un campo stringa alla maschera
|
||||
WINDOW 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
|
||||
WINDOW 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 data alla maschera
|
||||
WINDOW add_date (short id, int page, const char* prompt, int x, int y, const char* flags = "");
|
||||
// @cmember Aggiunge runtime un campo bottone alla maschera
|
||||
WINDOW add_button (short id, int page, const char* prompt, int x, int y, int dx = 9, int dy = 1, const char* flags = "");
|
||||
// @cmember Aggiunge runtime un campo radio button alla maschera
|
||||
WINDOW 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
|
||||
WINDOW add_memo (short id, int page, const char* prompt, int x, int y, int dx = 78, int dy = 4, const char* flags = "");
|
||||
|
||||
int fields() const { return _field.items(); }
|
||||
int sheets() const { return _sheets; }
|
||||
// @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
|
||||
{ return _sheets; }
|
||||
|
||||
void set_mode(int m) { _mode = m; }
|
||||
int mode() const { return _mode; }
|
||||
// @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 il valore attuale della valuta
|
||||
void set_exchange(bool show_value, const real& nuo);
|
||||
const real& exchange() const { return _exchange; }
|
||||
// @cmember Ritorna il valore attuale del cambio
|
||||
const real& exchange() const
|
||||
{ return _exchange; }
|
||||
|
||||
// @cmember Controlla i campi di una maschera (TRUE se tutti validi)
|
||||
bool check_fields();
|
||||
void get_mask_fields(); // read screen contents
|
||||
virtual bool stop_run(KEY key); // called to close the mask
|
||||
// @cmember Mette il contenuto dei campi a video in stringhe interne
|
||||
void get_mask_fields();
|
||||
// @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);
|
||||
|
||||
// @cmember Converte un identificatore di campo nella sua posizione
|
||||
int id2pos(short id) const;
|
||||
short next_fld() const { return _next_fld;} // id of the field who is gaining the focus DLG_NULL is not exists
|
||||
TMask_field& fld(int i) const { return (TMask_field&)_field[i]; } // Ritorna il campo i-esimo della maschera
|
||||
TMask_field& field(short id) const; // field with given id
|
||||
TEdit_field& efield(short id) const; // edit-field with given id
|
||||
// @cmember Ritorna l'id del campo che sta prendendo il focus, DLG_NULL se non esiste
|
||||
short next_fld() const
|
||||
{ return _next_fld;}
|
||||
// @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 di edit contraddistinto dall'identificatore passato
|
||||
TEdit_field& efield(short id) const;
|
||||
|
||||
// @cmember Setta il campo con una stringa
|
||||
void set(short fld_id, const char* str, bool hit=FALSE);
|
||||
// @cmember Setta il campo con un valore
|
||||
void set(short fld_id, long num, bool hit=FALSE);
|
||||
// @cmember Ritorna il contenuto del campo <p fld_id> sotto forma di stringa
|
||||
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;
|
||||
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 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 Indica quale campo deve ricevere per primo il focus nella maschera
|
||||
int first_focus(short id);
|
||||
// @cmember Setta il focus al campo corrente
|
||||
void set_focus();
|
||||
// @cmember Muove il focus al prossimo o al precedente controllo valido
|
||||
void move_focus_field(int num);
|
||||
// @cmember Setta il focus al campo la cui finestra e' <p win>
|
||||
void set_focus_win(WINDOW win, bool force);
|
||||
int focus_field() const { return _focus;}
|
||||
void disable_starting_check() { _should_check = FALSE;}
|
||||
// @cmember Ritorna il numero del controllo che possiede il focus
|
||||
int focus_field() const
|
||||
{ return _focus;}
|
||||
// @cmember Disabilita la lettura dei check della maschera
|
||||
void disable_starting_check()
|
||||
{ _should_check = FALSE;}
|
||||
|
||||
// @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
|
||||
void on_firm_change();
|
||||
|
||||
void enable(short fld_id, bool on = TRUE); // Abilita un campo
|
||||
void disable(short fld_id) { enable(fld_id, FALSE); }
|
||||
// @cmember Abilita/disabilita un campo
|
||||
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 = -1);
|
||||
|
||||
|
||||
// @cmember Abilita/disabilita una pagina e tutte le successive
|
||||
void enable_page(byte p, bool on = TRUE);
|
||||
void disable_page(byte p) { enable_page(p, FALSE); }
|
||||
// @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
|
||||
byte num_keys() const;
|
||||
// @cmember Abilita/disabilita i campi di una chiave sulla maschera
|
||||
void enable_key(byte key, bool on = TRUE);
|
||||
void disable_key(byte key) { enable_key(key, FALSE); }
|
||||
// @cmember Disabilita i campi di una chiave sulla maschera (chiama <mf TMask::enable_key>)
|
||||
void disable_key(byte key)
|
||||
{ enable_key(key, FALSE); }
|
||||
// @cmember Ritorna il l'identificatore di un campo della chiave <p key>
|
||||
short get_key_field(byte key, bool first) const;
|
||||
// @cmember Controlla se la chiave <p key> ha un valore significativo
|
||||
// (TRUE se il valore e' valido)
|
||||
bool key_valid(int key) const;
|
||||
|
||||
// @cmember Permette di mostrare/nascondere un campo
|
||||
void show(short fld_id = -1, bool on = TRUE);
|
||||
void hide(short fld_id = -1) { show(fld_id, FALSE); }
|
||||
// @cmember Permette di nascondere un campo (chiama <mf TMask::show>)
|
||||
void hide(short fld_id = -1)
|
||||
{ show(fld_id, FALSE); }
|
||||
// @cmember Rimette lo stato di default del campo
|
||||
void show_default(short fld_id = -1);
|
||||
|
||||
// @cmember Rimette lo stato di default del campo
|
||||
void reset(short fld_id = -1);
|
||||
// @cmember Riporta il valori originali nel campo
|
||||
void undo(short fld_id = -1);
|
||||
|
||||
// @cmember Legge, dalla relazione <p Trelation>, i valori del campo con specifica FIELD
|
||||
void autoload(const TRelation*);
|
||||
// @cmember Scrive, dalla relazione <p Trelation>, i valori del campo con specifica FIELD
|
||||
void autosave(TRelation*) 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
|
||||
void set_handler(short fld_id, CONTROL_HANDLER handler);
|
||||
// @cmember Permette di mandare un handler ad una maschera
|
||||
void set_handler(MASK_HANDLER handler);
|
||||
void set_workfile(const char* workfile) { _workfile = workfile; _lastpos = 0L;}
|
||||
// @cmember Permette di settare il nome del file di salvataggio
|
||||
void set_workfile(const char* workfile)
|
||||
{ _workfile = workfile; _lastpos = 0L;}
|
||||
// @cmember Permette di salvare il file di salvataggio
|
||||
bool save(bool append = FALSE) const;
|
||||
// @cmember Permette di leggere il file di salvataggio
|
||||
bool load(bool reset = FALSE);
|
||||
|
||||
short dirty() const; // Ritorna il primo campo dirty
|
||||
bool is_sheetmask() const { return _sheetmask; }
|
||||
// @cmember Ritorna il primo campo dirty
|
||||
short dirty() const;
|
||||
// @cmember Ritorna se la maschera e' contenuta in uno sheet (TRUE se contenuta)
|
||||
bool is_sheetmask() const
|
||||
{ return _sheetmask; }
|
||||
|
||||
bool no_mode() const { return _mode == NO_MODE; }
|
||||
bool query_mode() const { return _mode == MODE_QUERY || _mode == MODE_QUERYINS; }
|
||||
bool edit_mode() const { return _mode == MODE_MOD; }
|
||||
bool insert_mode() const { return _mode == MODE_QUERYINS || _mode == MODE_INS; }
|
||||
// @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() const;
|
||||
// @cmember Setta il titolo della maschera
|
||||
virtual void set_caption(const char* c);
|
||||
|
||||
virtual bool on_dirty( TMask_field& c );
|
||||
// @cmember Viene eseguita se il campo viene modificato???
|
||||
virtual bool on_dirty(TMask_field& c );
|
||||
|
||||
};
|
||||
|
||||
|
@ -149,8 +149,24 @@ short TMask_field::atodlg(const char* s) const
|
||||
return d;
|
||||
}
|
||||
|
||||
void TMask_field::construct(short id, const char* prompt, int x, int y,
|
||||
int len, WINDOW parent, const char* flags, int width)
|
||||
|
||||
// @cmember Costruisce il campo
|
||||
void TMask_field::construct(
|
||||
short id, // @parm Identificatore del campo
|
||||
const char* prompt, // @parm Prompt del campo
|
||||
int x, // @parm Posizione in x (in caratteri) del campo nella maschera
|
||||
int y, // @parm Posizione in y (in caratteri) del campo nella maschera
|
||||
int len, // @parm Lunghezza vidibile del campo
|
||||
WINDOW parent, // @parm Finestra padre alla quale assegnare il campo
|
||||
const char* flags, // @parm Flags del campo (default "")
|
||||
int width) // @parm Lunghezza del campo
|
||||
// @parm TScanner& | scanner | File dal quale leggere leggere le informazioni
|
||||
|
||||
// @syntax void construct(TScanner& scanner, WINDOW parent);
|
||||
// @syntax void construct(short id, const char* prompt, int x, int y, int len, WINDOW parent, const char* flags, int width);
|
||||
//
|
||||
// @comm E' possibile costruire il campo leggendo direttamente dal file, oppure passare alla funzione
|
||||
// tutti i parametri necessari alla definizione del campo stesso
|
||||
{
|
||||
_x = x; _y = y;
|
||||
_prompt = prompt;
|
||||
@ -260,9 +276,16 @@ long TMask_field::default_flags() const
|
||||
}
|
||||
|
||||
// Certified 100%
|
||||
WINDOW TMask_field::wincreate(WIN_TYPE ct, short dx, short dy,
|
||||
const char* title, WINDOW parent,
|
||||
long flags)
|
||||
// @mfunc Crea la finestra del controllo
|
||||
//
|
||||
// @rdesc Ritorna la finestra creata
|
||||
WINDOW TMask_field::wincreate(
|
||||
WIN_TYPE ct, // @parm Tipo di finestra da creare
|
||||
short dx, // @parm Larghezza iniziale della finestra
|
||||
short dy, // @parm Altezza iniziale della finestra
|
||||
const char* title, // @parm Titolo della finestra
|
||||
WINDOW parent, // @parm Finestra padre di quella da creare
|
||||
long flags) // @parm fleg della finestra
|
||||
{
|
||||
_win = xvt_create_control(ct,
|
||||
_x, _y, dx, dy,
|
||||
@ -282,7 +305,13 @@ WINDOW TMask_field::parent() const
|
||||
|
||||
|
||||
// Certified 90%
|
||||
int TMask_field::create_prompt(WINDOW parent, int width, int heigth)
|
||||
// @mfunc Crea il prompt del controllo
|
||||
//
|
||||
// @rdesc Ritorna la lunghezza del prompt creato
|
||||
int TMask_field::create_prompt(
|
||||
WINDOW parent, // @parm Finestra padre alla quale assegnare il prompt del controllo
|
||||
int width, // @parm Larghezza del controllo
|
||||
int heigth) // @parm Altezza del controllo
|
||||
{
|
||||
const WIN_TYPE wt = (heigth < 3) ? WC_TEXT : WC_GROUPBOX;
|
||||
if (width < 1) width = _prompt.len() - (_prompt[0] == '@' ? 2 : 0);
|
||||
@ -333,7 +362,12 @@ void TMask_field::create(WINDOW parent)
|
||||
|
||||
|
||||
// Certified 100%
|
||||
void TMask_field::enable(bool on)
|
||||
// @mfunc Abilita/disabilita il campo (lo rende scrivibile)
|
||||
void TMask_field::enable(
|
||||
bool on) // @parm Operazione da svolgere:
|
||||
//
|
||||
// @flag TRUE | Abilita il campo (default)
|
||||
// @flag FALSE | Disabilita il campo
|
||||
{
|
||||
const word c = class_id();
|
||||
if (c != CLASS_FIELD)
|
||||
@ -353,7 +387,12 @@ void TMask_field::enable_default()
|
||||
|
||||
|
||||
// Certified 100%
|
||||
void TMask_field::show(bool on)
|
||||
// @mfunc Permette di rendere visibile/invisibile un campo
|
||||
void TMask_field::show(
|
||||
bool on) // @parm Operazione da svolgere:
|
||||
//
|
||||
// @flag TRUE | Rendere visibile il campo (default)
|
||||
// @flag FALSE | Rendere invisibile il campo
|
||||
{
|
||||
xvt_vobj_set_visible(_win, on);
|
||||
if (_promptwin != NULL_WIN)
|
||||
@ -420,7 +459,16 @@ const char* TMask_field::get_field_data() const
|
||||
{ return NULL; }
|
||||
|
||||
|
||||
const char* TMask_field::picture_data(const char* data, bool video)
|
||||
// @mfunc Permette di dare la stessa formattazione del campo della maschera
|
||||
//
|
||||
// @rdesc Ritorna la stringa formattata
|
||||
const char* TMask_field::picture_data(
|
||||
const char* data, // @parm Stringa da dare il formato
|
||||
bool video) // @parm Se TRUE permette di visualizzare la stringa a video
|
||||
|
||||
// @comm Utilizzata soprattutto dagli sheet che in questo modo possono formattare
|
||||
// il contenuto delle celle con lo stesso formato deglia altri campi della maschera
|
||||
// dell stesso tipo.
|
||||
{
|
||||
fpark = data;
|
||||
if (video)
|
||||
@ -760,7 +808,15 @@ bool TMask_field::on_hit()
|
||||
}
|
||||
|
||||
|
||||
bool TMask_field::to_check(KEY k, bool checkrun) const
|
||||
// @mfunc Permette di spedire il check
|
||||
//
|
||||
// @rdesc Ritorna il risultato del check:
|
||||
//
|
||||
// @flag TRUE | Se il check ha dato esito positivo
|
||||
// @flag FALSE | Se il check ha dato esito negativo
|
||||
bool TMask_field::to_check(
|
||||
KEY k, // @parm Tasto da passare al campo come simulazione di inizio controllo
|
||||
bool checkrun) const // @parm Indice se il controllo va effettuato mentre il campo ha il focus??
|
||||
{
|
||||
bool yes = (k == K_TAB && focusdirty()) || (k == K_ENTER && dirty());
|
||||
|
||||
@ -884,7 +940,16 @@ void TMask_field::set_focus() const
|
||||
HIDDEN char* const _msg = &__tmp_string[512];
|
||||
#define build_msg() va_list argptr;va_start(argptr,fmt);vsprintf(_msg,fmt,argptr);va_end(argptr)
|
||||
|
||||
bool TMask_field::error_box(const char* fmt, ...) const
|
||||
// @mfunc Crea una error-box relativo al campo (chiama <f error_box>)
|
||||
//
|
||||
// @rdesc Ritorna sempre FALSE
|
||||
bool TMask_field::error_box(
|
||||
const char* fmt, // @parm Formato della stringa da scrivere
|
||||
...) const // @parmvar Uno o piu' parametri corrispondenti ai codici in <p fmt>
|
||||
|
||||
// @comm Se il campo e' uno sheet viene aggiornata la barra di stato, altrimenti
|
||||
// viene creata una finestra di errore normale.
|
||||
|
||||
{
|
||||
build_msg();
|
||||
if (mask().is_sheetmask() && !mask().is_running())
|
||||
@ -910,7 +975,15 @@ bool TMask_field::message_box(const char* fmt, ...) const
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool TMask_field::warning_box(const char* fmt, ...) const
|
||||
// @mfunc Crea una warning-box relativo al campo (chiama <f warning_box>)
|
||||
//
|
||||
// @rdesc Ritorna sempre FALSE
|
||||
bool TMask_field::warning_box(
|
||||
const char* fmt, // @parm Formato della stringa da scrivere
|
||||
...) const // @parmvar Uno o piu' parametri corrispondenti ai codici in <p fmt>
|
||||
|
||||
// @comm Se il campo e' uno sheet viene aggiornata la barra di stato, altrimenti
|
||||
// viene creata una finestra di warning normale.
|
||||
{
|
||||
build_msg();
|
||||
|
||||
@ -1286,8 +1359,13 @@ int TBrowse::inputs()
|
||||
return inp;
|
||||
}
|
||||
|
||||
// Ritorna il numero di campi non vuoti e non filtrati
|
||||
int TBrowse::do_input(bool filter)
|
||||
// @mfunc Ritorna il numero di campi non vuoti e non filtrati
|
||||
//
|
||||
// @rdesc Numero di campi vuoti e non filtrati
|
||||
int TBrowse::do_input(
|
||||
bool filter) // @parm ??
|
||||
|
||||
// @comm Questa funzione serve ai TCursor_sheet
|
||||
{
|
||||
int ne = 0;
|
||||
if (_inp_id.empty()) return ne;
|
||||
@ -2032,7 +2110,9 @@ const char* TEdit_field::format(const char* d)
|
||||
}
|
||||
|
||||
|
||||
|
||||
const char* TEdit_field::picture_data(const char* data, bool video)
|
||||
|
||||
{
|
||||
if (video)
|
||||
{
|
||||
@ -2049,7 +2129,14 @@ const char* TEdit_field::picture_data(const char* data, bool video)
|
||||
}
|
||||
|
||||
|
||||
bool TEdit_field::validate(KEY k)
|
||||
// @mfunc Chiama l' eventuale funzione di validazione
|
||||
//
|
||||
// @rdesc Ritorna il risultato dell funzione di validazione:
|
||||
//
|
||||
// @flag TRUE | Se la validata ha avuto successo
|
||||
// @flag FALSE | Se la validata no ha avuto successo
|
||||
bool TEdit_field::validate(
|
||||
KEY k) // @parm Tasto da passare alla funzione di validazione
|
||||
{
|
||||
return ::validate(_validate_func, *this, k, _validate_parms);
|
||||
}
|
||||
@ -2076,7 +2163,14 @@ bool TEdit_field::on_hit()
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
// @mfunc Mostra un messaggio di errore di default per il campo
|
||||
//
|
||||
// @rdesc Ritorna sempre FALSE
|
||||
bool TEdit_field::default_error_box() const
|
||||
|
||||
// @comm Se il campo non possiede un warning particolare chiama la <f error_box>
|
||||
// indicando genericamente che il valore immesso non e' valido, altrimenti
|
||||
// riporta il warning associato al campo
|
||||
{
|
||||
if (_warning.empty())
|
||||
{
|
||||
@ -2226,7 +2320,12 @@ bool TEdit_field::check(CheckTime t)
|
||||
return ok;
|
||||
}
|
||||
|
||||
void TEdit_field::enable_check(bool on)
|
||||
// @mfunc Permette di abilitare/disabilitare un check di un campo
|
||||
void TEdit_field::enable_check(
|
||||
bool on) // @parm Operazione da svolgere
|
||||
//
|
||||
// @flag TRUE | Abilita il check del campo (default)
|
||||
// @flag FALSE | Disabilita il check del campo
|
||||
{
|
||||
_check_enabled = on;
|
||||
if (_buttonwin != NULL_WIN)
|
||||
@ -2481,7 +2580,21 @@ TDate_field::TDate_field(TMask* m) : TEdit_field(m)
|
||||
}
|
||||
|
||||
|
||||
const char* TDate_field::format_data(const char* datum, bool* ch)
|
||||
// @mfunc Permette di formattare la data secondo i flag correnti
|
||||
//
|
||||
// @rdesc Ritorna la data formattata
|
||||
const char* TDate_field::format_data(
|
||||
const char* datum, // @parm Stringa contenenete la data da formattare
|
||||
bool* ch) // @parm Indica se e' stata cambiato il formato rispetto alla stringa passsata
|
||||
|
||||
// @comm Permette di gestire anche alcuni date particolari come:
|
||||
//
|
||||
// @flag IERI | Inserisce la data del giorno precedente a quella del sistema
|
||||
// @flag OGGI | Inserisce la data del sistema
|
||||
// @flag DOMANI | Inserisce la data del giorno successivo a quella del sistema
|
||||
// @flag PRIMO | Primo giorno dell'anno (01-01-aa)
|
||||
// @flag ULTIMO | Ultimo giorno dell'anno (31-12-aa)
|
||||
// @flag NATALE | Giorno di natale (25-12-aa)
|
||||
{
|
||||
bool changed = FALSE;
|
||||
// TFixed_string data(get_window_data(), 15);
|
||||
@ -2866,7 +2979,12 @@ int TList_field::items() const
|
||||
return _codes.items();
|
||||
}
|
||||
|
||||
void TList_field::add_item(const char* s)
|
||||
// @mfunc Aggiunge delle voci al list sheet
|
||||
void TList_field::add_item(
|
||||
const char* s) // @parm Voci da aggiungere
|
||||
|
||||
// @comm Se il parametro <p s> e' passato con il formato di una <c TToken_string> vengono
|
||||
// aggiunte tante voci quanti sono gli elementi.
|
||||
{
|
||||
TToken_string t(s);
|
||||
const TString16 item(t.get());
|
||||
@ -2936,7 +3054,13 @@ void TList_field::add_list()
|
||||
}
|
||||
|
||||
|
||||
void TList_field::replace_items(const char* codes, const char* values)
|
||||
// @mfunc Sostituisce alle voci correnti quelle passate come parametri
|
||||
void TList_field::replace_items(
|
||||
const char* codes, // @parm Codici da sostituire ai correnti
|
||||
const char* values) // @parm Voci da sostituire a quelle correnti
|
||||
|
||||
// @comm I parametri <p codes> e <p values> devono essere TToken_string se lo voci da sostiutire
|
||||
// sono piu' di una
|
||||
{
|
||||
_codes = codes;
|
||||
_values = values;
|
||||
@ -3217,8 +3341,15 @@ void TRadio_field::show(bool on)
|
||||
_flags.shown = on;
|
||||
}
|
||||
|
||||
// Return TRUE if focus has left the radio
|
||||
bool TRadio_field::move_focus(int d)
|
||||
// @mfunc Sposta il focus dal radio button
|
||||
//
|
||||
// @mfunc Ritorna TRUE se il focus ha lasciato il radio button
|
||||
bool TRadio_field::move_focus(
|
||||
int d) // @parm Numero di posizioni di spostamento del focus
|
||||
|
||||
// @comm Poiche' la gestione dei radio button e' gestita direttamente da Windows
|
||||
// in caso si prema TAB o SHIF+TAB all'interno si passa da una voce
|
||||
// all'altra e non al campo successivo o precedente.
|
||||
{
|
||||
const int act = _active_item + d;
|
||||
if (act >= _nitems || act < 0)
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -21,9 +21,9 @@ class TIndwin : public TWindow
|
||||
// @access Private Member
|
||||
|
||||
enum {
|
||||
// @cmember Controlla se e' stato premuto il tasto "Annulla"
|
||||
// @ccost IND_CANCELLED | 0x01 | Controlla se e' stato premuto il tasto "Annulla"
|
||||
IND_CANCELLED = 0x01,
|
||||
// @cmember Controlla se l'operazione e' terminata
|
||||
// @ccost IND_FINISHED | 0x02 | Controlla se l'operazione e' terminata
|
||||
IND_FINISHED= 0x02 };
|
||||
|
||||
// @cmember Testo da inserire nella finestra
|
||||
|
@ -17,11 +17,11 @@
|
||||
class TSort : public TObject
|
||||
// @author:(INTERNAL) Alex
|
||||
{
|
||||
// @access Private Member
|
||||
|
||||
// @friend TRecfield
|
||||
friend TRecfield;
|
||||
|
||||
// @access Private Member
|
||||
|
||||
// @cmember Puntatore alla struttura di un sort
|
||||
struct s_prm* _sortvar;
|
||||
// @cmember Indice nella tabella dei campi della chiave
|
||||
|
@ -616,7 +616,8 @@ TString& TString::picture(
|
||||
// Certified 90% (spark size limited)
|
||||
// @mfunc Manda un output formattato alla stringa oggetto
|
||||
TString& TString::format(
|
||||
const char* fmt, ...) // @parm Stringa da formattare
|
||||
const char* fmt, // @parm Stringa da formattare
|
||||
...) // @parmvar Uno o piu' parametri corrispondenti ai codici in <p fmt>
|
||||
|
||||
// @comm Funziona come la funzione "sprintf" standard del C e ritorna la
|
||||
// stringa formattata con i parametri passati.
|
||||
@ -781,7 +782,8 @@ void TFixed_string::strncpy(const char* s, int n)
|
||||
// Certified 99%
|
||||
// @mfunc Manda un output formattato alla stringa oggetto
|
||||
TString& TFixed_string::format(
|
||||
const char* fmt, ...)// @parm Formato della stringa
|
||||
const char* fmt, // @parm Formato della stringa
|
||||
...) // @parmvar Uno o piu' parametri corrispondenti ai codici in <p fmt>
|
||||
|
||||
// @comm Funziona come la funzione "sprintf" standard del C e ritorna la
|
||||
// stringa formattata con i parametri passati.
|
||||
|
@ -85,7 +85,8 @@ public:
|
||||
int size() const
|
||||
{ return _size; }
|
||||
// @cmember Ritorna la lunghezza della stringa (numero di caratteri)
|
||||
int len() const { return strlen(_str); }
|
||||
int len() const
|
||||
{ return strlen(_str); }
|
||||
// @cmember Controlla se la stringa e' vuota (TRUE se non contiene caratteri)
|
||||
bool empty() const
|
||||
{ return *_str == '\0'; }
|
||||
@ -305,10 +306,12 @@ public:
|
||||
|
||||
// @class TFilename | Classe per la gestione dei nome dei file
|
||||
//
|
||||
// @base public | TString80 (TString256 per Windows '95)
|
||||
// @base public | TString80
|
||||
class TFilename : public TString80
|
||||
{
|
||||
|
||||
// @comm Nel caso di utilizzo di Windows 95 occorre cambiare le classe base in <c TString256>
|
||||
|
||||
// @access Public Member
|
||||
public:
|
||||
// @cmember Costruttore
|
||||
|
@ -175,7 +175,8 @@ int list_files(
|
||||
//
|
||||
// @rdesc Ritorna la stringa desiderata
|
||||
char* format(
|
||||
const char* fmt, ...) // @parm Formato che deve essere dato alla stringa
|
||||
const char* fmt, // @parm Formato che deve essere dato alla stringa
|
||||
...) // @parmvar Uno o piu' parametri corrispondenti ai codici in <p fmt>
|
||||
|
||||
// @comm Il funzionamento e' come la <f sprintf> del C, solo che non e' necessario passare la
|
||||
// stringa di destinazione alla funzione
|
||||
|
Loading…
x
Reference in New Issue
Block a user