Aggiunti campi memo e zoom
git-svn-id: svn://10.65.10.50/trunk@2196 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
588c70089f
commit
5508be2558
@ -935,6 +935,7 @@ bool TMask::on_dirty(TMask_field&)
|
||||
TMask_field* TMask::parse_field(TScanner& scanner)
|
||||
{
|
||||
if (scanner.key() == "ST") return new TEdit_field(this);
|
||||
if (scanner.key() == "ZO") return new TZoom_field(this);
|
||||
if (scanner.key() == "NU") return new TReal_field(this);
|
||||
if (scanner.key() == "DA") return new TDate_field(this);
|
||||
if (scanner.key() == "BO") return new TBoolean_field(this);
|
||||
|
@ -95,7 +95,7 @@ protected:
|
||||
// @cmember Ritorna la finestra della pagina corrente (Usare con attenzione)
|
||||
WINDOW win() const
|
||||
{ return _page < 0 ? _pagewin[0] : _pagewin[_page]; }
|
||||
|
||||
|
||||
// @cmember Ritorna il numero di campi nella finestra
|
||||
int find_field_win(WINDOW win) const;
|
||||
|
||||
@ -204,10 +204,6 @@ public:
|
||||
virtual void close();
|
||||
// @cmember Permette di attivare/disattivare tutta la pagina
|
||||
virtual void activate(bool on = TRUE);
|
||||
|
||||
// @cmember Ritorna la finestra della toolbar
|
||||
WINDOW toolwin() const
|
||||
{ return _pagewin[MAX_PAGES]; }
|
||||
|
||||
// @cmember Converte un identificatore di campo nella sua posizione
|
||||
int id2pos(short id) const;
|
||||
@ -223,16 +219,15 @@ public:
|
||||
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 intero
|
||||
void set(short fld_id, long num, bool hit=FALSE);
|
||||
virtual void set(short fld_id, const char* str, bool hit=FALSE);
|
||||
// @cmember Setta il campo con un reale
|
||||
void set(short fld_id, const real& num, bool hit=FALSE);
|
||||
// @cmember Setta il campo con una data
|
||||
void set(short fld_id, const TDate& day, 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;
|
||||
virtual const TString& get(short fld_id) const;
|
||||
// @cmember Ritorna il contenuto del campo <p fld_id> sotto forma di long
|
||||
long get_long(short fld_id) const;
|
||||
// @cmember Ritorna il contenuto del campo <p fld_id> sotto forma di int
|
||||
@ -250,10 +245,9 @@ public:
|
||||
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);
|
||||
// @cmember Ritorna il controllo che possiede il focus
|
||||
TMask_field& focus_field() const
|
||||
{ return fld(_focus);}
|
||||
|
||||
// @cmember Ritorna il numero del controllo che possiede il focus
|
||||
TMask_field& focus_field() const
|
||||
{ return fld(_focus); }
|
||||
// @cmember Disabilita la lettura dei check della maschera
|
||||
void disable_starting_check()
|
||||
{ _should_check = FALSE;}
|
||||
@ -267,7 +261,7 @@ public:
|
||||
void on_firm_change();
|
||||
|
||||
// @cmember Abilita/disabilita un campo
|
||||
void enable(short fld_id, bool on = TRUE);
|
||||
virtual void enable(short fld_id, bool on = TRUE);
|
||||
// @cmember Disabilita un campo (chiama <mf TMask::enable>)
|
||||
void disable(short fld_id)
|
||||
{ enable(fld_id, FALSE); }
|
||||
@ -298,7 +292,7 @@ public:
|
||||
bool key_valid(int key) const;
|
||||
|
||||
// @cmember Permette di mostrare/nascondere un campo
|
||||
void show(short fld_id = -1, bool on = TRUE);
|
||||
virtual void show(short fld_id = -1, bool on = TRUE);
|
||||
// @cmember Permette di nascondere un campo (chiama <mf TMask::show>)
|
||||
void hide(short fld_id = -1)
|
||||
{ show(fld_id, FALSE); }
|
||||
@ -318,7 +312,7 @@ public:
|
||||
// @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);
|
||||
virtual void set_handler(short fld_id, CONTROL_HANDLER handler);
|
||||
// @cmember Permette di mandare un handler ad una maschera
|
||||
void set_handler(MASK_HANDLER handler);
|
||||
// @cmember Permette di settare il nome del file di salvataggio
|
||||
@ -364,6 +358,11 @@ public:
|
||||
|
||||
// @cmember Viene eseguita se il campo viene modificato???
|
||||
virtual bool on_dirty(TMask_field& c );
|
||||
|
||||
// @cmember Ritorna la finestra della toolbar
|
||||
WINDOW toolwin() const
|
||||
{ return _pagewin[MAX_PAGES]; }
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
@ -3521,8 +3521,9 @@ void TGroup_field::set_field_data(const char* data)
|
||||
// TMemo_field
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
TMemo_field::TMemo_field(TMask* mask) : TMask_field(mask), _te(BAD_TXEDIT)
|
||||
{}
|
||||
TMemo_field::TMemo_field(TMask* mask) : TMask_field(mask), _te(BAD_TXEDIT), _data( "", '\n' )
|
||||
{
|
||||
}
|
||||
|
||||
TMemo_field::~TMemo_field()
|
||||
{
|
||||
@ -3548,7 +3549,7 @@ void TMemo_field::create(WINDOW parent)
|
||||
wd.text = NULL;
|
||||
wd.units = U_PIXELS;
|
||||
wd.v.tx.attrib = TX_NOMENU | TX_BORDER | TX_AUTOVSCROLL | TX_WRAP;
|
||||
wd.v.tx.font_id = xvt_dwin_get_font(win());
|
||||
wd.v.tx.font_id = xvt_dwin_get_font(TASK_WIN);
|
||||
wd.v.tx.margin = wd.rct.right - wd.rct.left;
|
||||
wd.v.tx.limit = 256;
|
||||
wd.v.tx.tx_id = dlg();
|
||||
@ -3558,10 +3559,6 @@ void TMemo_field::create(WINDOW parent)
|
||||
enable_default(); // Setta colori default
|
||||
}
|
||||
|
||||
void TMemo_field::set_back_color(COLOR) const
|
||||
{
|
||||
}
|
||||
|
||||
void TMemo_field::highlight() const
|
||||
{
|
||||
xvt_tx_set_active(_te);
|
||||
@ -3574,13 +3571,13 @@ bool TMemo_field::on_key(KEY k)
|
||||
|
||||
void TMemo_field::enable(bool on)
|
||||
{
|
||||
TMask_field::enable(on);
|
||||
TMask_field::enable( TRUE );
|
||||
|
||||
unsigned attr = xvt_tx_get_attr(_te);
|
||||
if (on)
|
||||
{
|
||||
xvt_tx_set_colors(_te, NORMAL_COLOR, COLOR_BLACK, NORMAL_BACK_COLOR);
|
||||
attr &= ~TX_READONLY;
|
||||
attr &= ~TX_READONLY;
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -3595,55 +3592,160 @@ void TMemo_field::show(bool on)
|
||||
TMask_field::show(on);
|
||||
}
|
||||
|
||||
bool TMemo_field::autoload(const TRelation* r)
|
||||
/*
|
||||
bool TMemo_field::autoload(const TRelation* r)
|
||||
{
|
||||
const TFieldref* f = field();
|
||||
xvt_tx_clear(_te);
|
||||
if (f != NULL)
|
||||
{
|
||||
TToken_string data( r->lfile( f->file( ) ).get( f->name( ) ), '\n' );
|
||||
xvt_tx_suspend(_te);
|
||||
for (T_LNUM i = 0; i < (T_LNUM)data.items( ); i++)
|
||||
xvt_tx_add_par(_te, i, ( char * )data.get( i ) );
|
||||
xvt_tx_resume(_te);
|
||||
return i > 0;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool TMemo_field::autosave(TRelation* r) const
|
||||
{
|
||||
const TFieldref* f = field();
|
||||
if (dirty() && f != NULL)
|
||||
{
|
||||
const T_PNUM num_par = xvt_tx_get_num_pars(_te);
|
||||
TToken_string data( "", '\n' );
|
||||
TString par(256);
|
||||
TString256 line;
|
||||
|
||||
for (T_PNUM p = 0; p < num_par; p++)
|
||||
{
|
||||
par.cut(0);
|
||||
const T_LNUM lines = xvt_tx_get_num_par_lines(_te, p);
|
||||
for (T_LNUM l = 0; l < lines; l++)
|
||||
{
|
||||
unsigned len;
|
||||
xvt_tx_get_line(_te, p, A_LOCK, l, &len);
|
||||
const char* s = xvt_tx_get_line(_te, p, A_GET, l, &len);
|
||||
CHECK(s, "Null memo line");
|
||||
line.strncpy(s, len);
|
||||
xvt_tx_get_line(_te, p, A_UNLOCK, l, &len);
|
||||
|
||||
if (par.not_empty()) par << ' ';
|
||||
par << line;
|
||||
}
|
||||
data.add(par);
|
||||
}
|
||||
r->lfile(f->file()).put( f->name(), data );
|
||||
return num_par > 0;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
*/
|
||||
|
||||
void TMemo_field::set_window_data(const char* data)
|
||||
{
|
||||
const TFieldref* f = field();
|
||||
TToken_string realdata( data, '\n' );
|
||||
xvt_tx_clear(_te);
|
||||
if (f != NULL)
|
||||
{
|
||||
TTextfile txt;
|
||||
r->lfile(f->file()).get_memo(f->name(), txt);
|
||||
|
||||
xvt_tx_suspend(_te);
|
||||
for (T_LNUM i = 0; i < (T_LNUM)txt.lines(); i++)
|
||||
xvt_tx_add_par(_te, i, (char*)txt.line(i));
|
||||
xvt_tx_resume(_te);
|
||||
return i > 0;
|
||||
}
|
||||
return FALSE;
|
||||
xvt_tx_suspend(_te);
|
||||
for (T_LNUM i = 0; i < (T_LNUM)realdata.items( ); i++)
|
||||
xvt_tx_add_par(_te, i, ( char * )realdata.get( i ) );
|
||||
xvt_tx_resume(_te);
|
||||
}
|
||||
|
||||
bool TMemo_field::autosave(TRelation* r) const
|
||||
const char* TMemo_field::get_window_data() const
|
||||
{
|
||||
const TFieldref* f = field();
|
||||
if (dirty() && f != NULL)
|
||||
{
|
||||
const T_PNUM num_par = xvt_tx_get_num_pars(_te);
|
||||
TTextfile txt;
|
||||
TString par(256);
|
||||
TString256 line;
|
||||
const T_PNUM num_par = xvt_tx_get_num_pars(_te);
|
||||
TToken_string data( "", '\n' );
|
||||
TString par(256);
|
||||
TString256 line;
|
||||
|
||||
for (T_PNUM p = 0; p < num_par; p++)
|
||||
{
|
||||
par.cut(0);
|
||||
const T_LNUM lines = xvt_tx_get_num_par_lines(_te, p);
|
||||
for (T_LNUM l = 0; l < lines; l++)
|
||||
{
|
||||
unsigned len;
|
||||
xvt_tx_get_line(_te, p, A_LOCK, l, &len);
|
||||
const char* s = xvt_tx_get_line(_te, p, A_GET, l, &len);
|
||||
CHECK(s, "Null memo line");
|
||||
line.strncpy(s, len);
|
||||
xvt_tx_get_line(_te, p, A_UNLOCK, l, &len);
|
||||
|
||||
if (par.not_empty()) par << ' ';
|
||||
par << line;
|
||||
}
|
||||
txt.append(par);
|
||||
for (T_PNUM p = 0; p < num_par; p++)
|
||||
{
|
||||
par.cut(0);
|
||||
const T_LNUM lines = xvt_tx_get_num_par_lines(_te, p);
|
||||
for (T_LNUM l = 0; l < lines; l++)
|
||||
{
|
||||
unsigned len;
|
||||
xvt_tx_get_line(_te, p, A_LOCK, l, &len);
|
||||
const char* s = xvt_tx_get_line(_te, p, A_GET, l, &len);
|
||||
CHECK(s, "Null memo line");
|
||||
line.strncpy(s, len);
|
||||
xvt_tx_get_line(_te, p, A_UNLOCK, l, &len);
|
||||
if (par.not_empty()) par << ' ';
|
||||
par << line;
|
||||
}
|
||||
r->lfile(f->file()).put(f->name(), txt);
|
||||
return num_par > 0;
|
||||
data.add(par);
|
||||
}
|
||||
return FALSE;
|
||||
return data;
|
||||
}
|
||||
|
||||
void TMemo_field::set_field_data(const char* data )
|
||||
{
|
||||
_data = data;
|
||||
}
|
||||
|
||||
const char* TMemo_field::get_field_data() const
|
||||
{
|
||||
return _data;
|
||||
}
|
||||
|
||||
void TZoom_field::set_window_data( const char* data )
|
||||
{
|
||||
|
||||
TEdit_field::set_window_data( data );
|
||||
set_first_line( data );
|
||||
}
|
||||
|
||||
const char* TZoom_field::get_window_data( ) const
|
||||
{
|
||||
return TEdit_field::get_window_data( );
|
||||
}
|
||||
|
||||
void TZoom_field::set_field_data( const char* data )
|
||||
{
|
||||
_memo = data;
|
||||
}
|
||||
|
||||
const char* TZoom_field::get_field_data( ) const
|
||||
{
|
||||
return _memo;
|
||||
}
|
||||
|
||||
bool TZoom_field::on_key( KEY key )
|
||||
{
|
||||
if ( key == K_F8 )
|
||||
{
|
||||
TMask m( "Zoom", 1, 72, 14 );
|
||||
m.add_memo( 101, 1, _prompt, 2, 2 );
|
||||
m.add_button( DLG_OK, 1, "", -12, -1 );
|
||||
m.add_button( DLG_CANCEL, 1, "", -12, -1 );
|
||||
m.set( 101, _memo );
|
||||
if ( m.run( ) )
|
||||
_memo = m.get( 101 );
|
||||
}
|
||||
return TEdit_field::on_key( key );
|
||||
}
|
||||
|
||||
TZoom_field::TZoom_field( TMask* mask ) : TEdit_field( mask ), _memo( "", '\n' )
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
TZoom_field::~TZoom_field( )
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
const char *TZoom_field::get_first_line( )
|
||||
{
|
||||
return _memo.get( 0 );
|
||||
}
|
||||
|
||||
void TZoom_field::set_first_line( const char * c )
|
||||
{
|
||||
_memo.add( c, 0 );
|
||||
_memo.destroy( 1 );
|
||||
}
|
||||
|
@ -993,6 +993,7 @@ class TMemo_field : public TMask_field
|
||||
|
||||
// @cmember Oggetto text che contiene il valore del campo memo
|
||||
TXEDIT _te;
|
||||
TToken_string _data;
|
||||
|
||||
// @access Protected Member
|
||||
protected:
|
||||
@ -1007,12 +1008,18 @@ protected:
|
||||
// @cmember Legge un item del controllo dal file <p scanner>
|
||||
virtual void parse_head(TScanner& scanner);
|
||||
|
||||
// @cmember Legge dalla relazione il valore del campo
|
||||
virtual bool autoload(const TRelation* r = NULL);
|
||||
// @cmember Scrive sulla relazione il valore del campo
|
||||
virtual bool autosave(TRelation* r = NULL) const;
|
||||
// @cmember Setta il focus sul campo
|
||||
virtual void highlight() const;
|
||||
|
||||
// @cmember Scrive il valore del campo direttamente dalla finestra del controllo
|
||||
virtual void set_window_data(const char* data);
|
||||
// @cmember Legge il valore del campo direttamente dalla finestra del controllo
|
||||
virtual const char* get_window_data() const;
|
||||
// @cmember Scrive il valore del campo
|
||||
virtual void set_field_data(const char* data = NULL);
|
||||
// @cmember Legge il valore del campo
|
||||
virtual const char* get_field_data() const;
|
||||
|
||||
|
||||
// @cmember Permette di abilitare/disabilitare il campo (vedi <mf TMask_field::enable>)
|
||||
virtual void enable(bool on);
|
||||
@ -1020,8 +1027,6 @@ protected:
|
||||
virtual void show(bool on);
|
||||
// @cmember Gestisce la pressione del tasto (TRUE se la gestione ha avuto successo)
|
||||
virtual bool on_key(KEY k);
|
||||
// @cmember Setta il colore dello sfondo
|
||||
virtual void set_back_color(COLOR c) const;
|
||||
|
||||
// @access Public Member
|
||||
public:
|
||||
@ -1031,6 +1036,49 @@ public:
|
||||
virtual ~TMemo_field();
|
||||
};
|
||||
|
||||
// @class TZoom_field | Come edit filed ma zooma per l'editing dei campi memo
|
||||
//
|
||||
// @base public | TEdit_field
|
||||
class TZoom_field : public TEdit_field
|
||||
{
|
||||
// @access Private Member
|
||||
|
||||
TToken_string _memo;
|
||||
|
||||
// @access Protected Member
|
||||
protected:
|
||||
|
||||
// @cmember Ritorna l'identificatore della classe
|
||||
virtual word class_id() const
|
||||
{ return CLASS_ZOOM_FIELD; };
|
||||
// @cmember Ritorna il nome della classe
|
||||
virtual const char* class_name() const
|
||||
{ return "ZOOM"; }
|
||||
|
||||
// @cmember Scrive il valore del campo direttamente dalla finestra del controllo
|
||||
virtual void set_window_data(const char* data);
|
||||
// @cmember Legge il valore del campo direttamente dalla finestra del controllo
|
||||
virtual const char* get_window_data() const;
|
||||
// @cmember Scrive il valore del campo
|
||||
virtual void set_field_data(const char* data);
|
||||
// @cmember Legge il valore del campo
|
||||
virtual const char* get_field_data() const;
|
||||
const char * get_first_line( );
|
||||
void set_first_line( const char * c );
|
||||
|
||||
|
||||
// @access Public Member
|
||||
public:
|
||||
// @cmember Gestisce la pressione del tasto (TRUE se la gestione ha avuto successo)
|
||||
virtual bool on_key(KEY key);
|
||||
// @cmember Costruttore
|
||||
TZoom_field(TMask* mask);
|
||||
// @cmember Distruttore
|
||||
virtual ~TZoom_field();
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
#endif // __MASKFLD_H
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user