Aggiunta documentazione in linea

git-svn-id: svn://10.65.10.50/trunk@1633 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
andrea 1995-07-21 17:27:58 +00:00
parent 9411b75057
commit 1fada2786c
13 changed files with 1542 additions and 542 deletions

View File

@ -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); }

View File

@ -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

View File

@ -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);
};

View File

@ -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

View File

@ -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;

View File

@ -13,192 +13,340 @@
#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);
// @cmember Viene eseguita se il campo viene modificato???
virtual bool on_dirty(TMask_field& c );
};

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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.

View File

@ -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

View File

@ -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