#include #include #include #include #include #include "ce0400a.h" //------------------------------------------------------ // Maschera di configurazione //------------------------------------------------------ class TConfig_mask : public TAutomask { protected: virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly); public: TConfig_mask() : TAutomask("ce0400a") { } }; bool TConfig_mask::on_field_event(TOperable_field& f, TField_event e, long jolly) { switch (f.dlg()) { case F_NAME_USER: if (e == fe_button) { //crea lo sheet con i campi del .trr TArray_sheet sht(-1,-1,-4,-4,TR("Parametri campi"),HR("Nome@10R|Tipo|Lunghezza|Decimali")); const RecDes& rd = prefix().get_recdes(LF_CESPI); for (int i = 0; i < rd.NFields; i++) { const RecFieldDes& rfd = rd.Fd[i]; TToken_string row; //deve aggiungere solo i campi il cui nome comincia per "_" if (rfd.Name[0] == '_') { row.add(rfd.Name); //nome campo row.add(rfd.TypeF); //tipo row.add(rfd.Len);//lunghezza row.add(rfd.Dec);//decimali sht.add(row); } } if (sht.items() > 0) { if (sht.run() == K_ENTER) f.set(sht.row(-1).get(0)); } else return error_box(TR("Non ci sono campi personalizzati")); } break; default: break; } return true; } //------------------------------------------------------ // Applicazione //------------------------------------------------------ class TCespi_config_app : public TConfig_application { TConfig_mask* _mask; protected: virtual const char* get_mask_name() const { return "ce0400a"; } TMask* create_mask(const TFilename& f); virtual TMask* get_mask(); public: virtual void load_mask(); virtual void save_mask(bool tosave); TCespi_config_app(); }; TMask* TCespi_config_app::create_mask(const TFilename& f) { if (_mask == NULL) _mask = new TConfig_mask; return _mask; } TMask* TCespi_config_app::get_mask() { if (_mask == NULL) { const TFilename name = get_mask_name(); create_mask(name); } return _mask; } //carica i valori dal ditta.ini nello sheet della maschera void TCespi_config_app::load_mask() { TConfig_application::load_mask(); //chiama la load_mask() standard dei TConfig per caricare i campi != sheet TConfig& config = *get_config(); //si carica il config della load_mask TSheet_field& sf = get_mask()->sfield(F_USER); for (int i = 0; config.exist("USER", i); i++) sf.row(i) = config.get("USER", NULL, i); } //registra i valori dello sheet nel ditta.ini void TCespi_config_app::save_mask(bool tosave) { TConfig* config = get_config(); if (config == NULL) return; TConfig_application::save_mask(tosave); //svuota il paragrafo sul .ini prima di ricompilarlo (se non si facesse //non si riuscirebbero ad ammazzare le righe sul .ini for (int i = 0; config->exist("USER", i); i++) config->remove("USER", i); TSheet_field& sf = get_mask()->sfield(F_USER); FOR_EACH_SHEET_ROW (sf, j, row) { config->set("USER", *row, "ce", true, j); } } TCespi_config_app::TCespi_config_app() : TConfig_application(CONFIG_DITTA), _mask(NULL) { } int ce0400 (int argc, char* argv[]) { TCespi_config_app appc; appc.run(argc, argv, TR("Parametri Ditta")); return 0; }