#include #include const TString& TVariable_mask::get(short fld_id) const { if (present( fld_id )) return TMask::get( fld_id ); else return ""; } void TVariable_mask::set_handler(short fld_id, CONTROL_HANDLER handler) { if(present( fld_id )) TMask::set_handler( fld_id, handler ); } void TVariable_mask::set(short fld_id, const char* str, bool hit ) { if(present( fld_id )) TMask::set( fld_id, str, hit ); } void TVariable_mask::show(short fld_id, bool on ) { if(present( fld_id ) ) TMask::show( fld_id, on ); } void TVariable_mask::enable(short fld_id, bool on ) { if(present( fld_id )) TMask::enable( fld_id, on ); } void TVariable_mask::check_field( short fld_id ) { if (present( fld_id )) TMask::check_field(fld_id); } TMask_field* TVariable_mask::parse_field(TScanner& scanner) { if (scanner.key() == "SP") { _sheets++; return new TVariable_sheet_field(this); } return TMask::parse_field(scanner); } TVariable_mask::TVariable_mask(const char* name, int num, int max) : TMask() { if (name && *name) read_mask(name, num, max); } TMask& TVariable_sheet_field::sheet_mask() const { TMask& m = TSheet_field::sheet_mask(); const int current = selected(); if (_getmask != NULL && current >= 0 && current < items()) return *_getmask(current, m, FALSE); return m; } TVariable_sheet_field::~TVariable_sheet_field() { TMask & m = TSheet_field::sheet_mask(); if (_getmask != NULL) _getmask(0, m, TRUE); // Distrugge la maschera customizzata } KEY TVariable_sheet_field::run_editmask(int n) { if(!_getmask) return TSheet_field::run_editmask(n); // Esegue la maschera dello sheet_field TMask& totalmask = TSheet_field::sheet_mask(); TMask& usermask = *_getmask( n, totalmask, FALSE ); // Carico la maschera dell'utente con la maschera totale /* usermask.copy_values(totalmask); const int ncampi = usermask.fields(); for (int i = 0; i < ncampi; i++) { TMask_field& f = usermask.fld(i); const short id = f.dlg( ); if (id >= FIRST_FIELD) { const int index = (id % 100) - 1; const bool on = active() ? !cell_disabled(n, index) : FALSE; f.enable(on); if (f.class_id() != CLASS_BUTTON_FIELD && (f.active() || f.ghost())) { if (f.has_check()) f.check(STARTING_CHECK); f.set_dirty(FALSE); f.on_hit(); } else if (f.dirty() == TRUE) f.set_dirty(FALSE); } } */ KEY k = usermask.run(); /* // Carico la maschera totale con la maschera dell'utente if (k == K_ENTER) totalmask.copy_values(usermask); // _getmask( n, totalmask, TRUE ); */ return k; } // Ricopia i campi della maschera nel record dato void TVariable_sheet_field::mask2row(int n, TToken_string & rec) { TSheet_field::mask2row(n,rec); } // Ricopia i campi del record dato nella maschera void TVariable_sheet_field::row2mask(int n, TToken_string & rec) { /* TString val(80); if ( _getmask != NULL) { TMask &m= TSheet_field::sheet_mask(); // Maschera completa dello sheet const int ncampi = m.fields(); for (int i = 0; i < ncampi; i++) { TMask_field& f = m.fld(i); const short id = f.dlg( ); if (id >= FIRST_FIELD) { const int index = (id % 100) - 1; const bool on = active() ? !cell_disabled(n, index) : FALSE; val = rec.get(index); f.set(val); } } m.set_caption(format("Riga %d", n+1)); } else */ TSheet_field::row2mask(n,rec); }