#include #include #include #include #include class TEdit_form : public TApplication { const char* _name; TForm* _form; protected: virtual bool create(); virtual bool destroy(); virtual bool menu(MENU_TAG); public: TEdit_form(const char* name); const char* name() const { return _name; } }; TEdit_form::TEdit_form(const char* name) : _name(name), _form(NULL) {} bool TEdit_form::create() { _form = new TForm(name()); dispatch_e_menu(MENU_ITEM(2)); return TRUE; } bool TEdit_form::destroy() { delete _form; return TRUE; } bool TEdit_form::menu(MENU_TAG tag) { char sec = 'B'; switch(tag) { case MENU_ITEM(1): sec = 'H'; break; case MENU_ITEM(3): sec = 'F'; break; default: break; } _form->edit(sec, odd_page); return TRUE; } int cg1300(int argc, char* argv[]) { TApplication::check_parameters(argc, argv); if (argc < 3) { error_box("Specificare il nome del profilo di stampa"); return 1; } TFilename form(argv[2]); form.ext("frm"); const char mode = argc > 3 ? toupper(argv[3][1]) : 'M'; const bool crea = (mode == 'C') || !fexist(form); if (crea) { TFilename base(form.left(3)); base.ext("frm"); if (!fexist(base)) { error_box("Non esiste il file %s", (const char*)base); return 1; } if (!fcopy(base, form)) { error_box("Impossibile copiare %s in %s", (const char*)base, (const char*)form); return 1; } } if (!fexist(form)) { error_box("Non esiste il file %s", (const char*)form); return 1; } TEdit_form a(form); TString80 title; title << (crea ? "Creazione" : "Modifica") << ": " << a.name(); a.run(argc, argv, title); return 0; }