diff --git a/ci/ci2200.cpp b/ci/ci2200.cpp index 3447bd1f6..9fe7affae 100755 --- a/ci/ci2200.cpp +++ b/ci/ci2200.cpp @@ -20,19 +20,19 @@ //Classe TRilevamento_cons_msk class TRilevamento_cons_msk : public TAutomask { - int _qtaore; + int _qtaore; + char _mode; + TDate _datasel; + int _rigasel; protected: - const real proponi_costo(const TMask& msk); const real proponi_costo(TToken_string& riga); void carica_default(); void riempi_sheet(); - void riempi_calendario(TISAM_recordset& def, const char fonte); + void riempi_calendario(TISAM_recordset& def); void riempi_risoatt(TDate& data, const char* codcosto, const char* codcms, const char* codfase); - void nuova_riga(); - void azzera_riga(TSheet_field& sheet); - void azzera_tutto(TSheet_field& sheet); + void azzera_tutto(); void registra(); virtual void notify_focus_field(short id); @@ -43,50 +43,10 @@ public: TRilevamento_cons_msk(); }; -const real TRilevamento_cons_msk::proponi_costo(const TMask& msk) -{ - real costo = ZERO; - /*const char tipo = msk.get(S_RISOATT)[0]; - TString80 codice; - switch(tipo) - { - case 'R': codice = msk.get(S_CODRIS); break; - case 'A': codice = msk.get(S_CODATT); break; - default : break; - } - const int anno = msk.get_date(S_DADATA).year(); - TString4 mese; mese.format("%02d", msk.get_date(S_DADATA).month()); - const TString4 tpora = msk.get(S_TPORA); - - const TRisoatt_key chiave(tipo, codice, anno, mese, tpora); - TModule_table roa("&ROA"); - roa.put("CODTAB", chiave); - int err = roa.read(); - - if(err == NOERR) - costo = roa.get_real("R1"); - else - { - TString8 tmp; tmp << anno << mese; - const long anme = atol(tmp); - TString query; - query << "USE &ROA\n" - << "SELECT I0<" << anme << "\n" - << "FROM CODTAB=" << tipo << codice.left_just(16) << "\n" - << "TO CODTAB=" << tipo << codice.left_just(16) << "\n" - << "BY I0\n"; - TISAM_recordset rec(query); - - if(rec.move_last()) - costo = rec.cursor()->curr().get_real("R1"); - }*/ - return costo; -} - const real TRilevamento_cons_msk::proponi_costo(TToken_string& riga) { real costo = ZERO; - /*TSheet_field& sheet = sfield(F_SHEET); + TSheet_field& sheet = sfield(F_SHEET); const char tipo = riga.get_char(sheet.cid2index(S_RISOATT)); TString80 codice; switch(tipo) @@ -95,11 +55,9 @@ const real TRilevamento_cons_msk::proponi_costo(TToken_string& riga) case 'A': codice = riga.get(sheet.cid2index(S_CODATT)); break; default : break; } - - TString cazzone = riga.get(sheet.cid2index(S_DADATA)); - const TDate dadata(riga.get(sheet.cid2index(S_DADATA))); - const int anno = dadata.year(); - TString4 mese; mese.format("%02d", dadata.month()); + + const int anno = get_int(F_ANNO); + const TString4 mese = get(F_MESE); const TString4 tpora = riga.get(sheet.cid2index(S_TPORA)); const TRisoatt_key chiave(tipo, codice, anno, mese, tpora); @@ -123,7 +81,7 @@ const real TRilevamento_cons_msk::proponi_costo(TToken_string& riga) if(rec.move_last()) costo = rec.cursor()->curr().get_real("R1"); - }*/ + } return costo; } @@ -177,16 +135,20 @@ void TRilevamento_cons_msk::carica_default() } } } + TISAM_recordset def(query); + riempi_calendario(def); } //RIEMPI_CALENDARIO: coloro le celle dello sheet calendario secondo le festività e i giorni occupati -void TRilevamento_cons_msk::riempi_calendario(TISAM_recordset& def, const char fonte) +void TRilevamento_cons_msk::riempi_calendario(TISAM_recordset& def) { const int anno = get_int(F_ANNO); const int mese = atoi(get(F_MESE)); TSheet_field& calendario = sfield(F_CALENDARIO); calendario.destroy(); - + TSheet_field& sheet = sfield(F_SHEET); + sheet.destroy(); + //se non ho selezionato un mese valido, svuoto lo sheet e non faccio nient'altro if(mese == 0) return; @@ -232,17 +194,20 @@ void TRilevamento_cons_msk::riempi_calendario(TISAM_recordset& def, const char f } TDate data = rilore.dadata(); - if(!data.ok()) - data = NULLDATE; int cid = C_CODFASE; cid += data.day(); - calendario.set_back_and_fore_color(COLOR_DKBLUE, COLOR_DKBLUE, commesse.get_int(com), calendario.cid2index(cid)); + TToken_string& row = calendario.row(commesse.get_int(com)); row.add(rilore.codcosto(), calendario.cid2index(C_CODCOSTO)); row.add(rilore.codcms(), calendario.cid2index(C_CODCMS)); row.add(rilore.codfase(), calendario.cid2index(C_CODFASE)); - row.add('P', calendario.cid2index(cid)); + + if(_mode == 'F') + { + calendario.set_back_and_fore_color(COLOR_DKBLUE, COLOR_DKBLUE, commesse.get_int(com), calendario.cid2index(cid)); + row.add('P', calendario.cid2index(cid)); + } } //su ogni riga dello sheet coloro di rosso le festività @@ -282,20 +247,32 @@ void TRilevamento_cons_msk::riempi_risoatt(TDate& data, const char* codcosto, co const TString4 risoatt = ""; const TString4 mese = get(F_MESE); const TString4 tpora = get(F_TPORA); - + //preparo la query TString query; - query << "USE RILORE\n" - << "SELECT (BETWEEN(TIPORA,\"" << risoatt << "\",\"" << risoatt << "\"))&&" - << "(BETWEEN(ANNO," << anno << "," << anno << "))&&" - << "(BETWEEN(MESE,\"" << mese << "\",\"" << mese << "\"))&&" - << "(BETWEEN(TPORA,\"" << tpora << "\",\"" << tpora << "\"))&&" - << "(BETWEEN(CODCOSTO,\"" << codcosto << "\",\"" << codcosto << "\"))&&" - << "(BETWEEN(CODCMS,\"" << codcms << "\",\"" << codcms << "\"))&&" - << "(BETWEEN(CODFASE,\"" << codfase << "\",\"" << codfase << "\"))&&" - << "(BETWEEN(DADATA,#DATA,#DATA))\n" - << "FROM TIPO=\"C\"\n" - << "TO TIPO=\"C\""; + if(_mode == 'F') + query << "USE RILORE\n" + << "SELECT (BETWEEN(TIPORA,\"" << risoatt << "\",\"" << risoatt << "\"))&&" + << "(BETWEEN(ANNO," << anno << "," << anno << "))&&" + << "(BETWEEN(MESE,\"" << mese << "\",\"" << mese << "\"))&&" + << "(BETWEEN(TPORA,\"" << tpora << "\",\"" << tpora << "\"))&&" + << "(BETWEEN(CODCOSTO,\"" << codcosto << "\",\"" << codcosto << "\"))&&" + << "(BETWEEN(CODCMS,\"" << codcms << "\",\"" << codcms << "\"))&&" + << "(BETWEEN(CODFASE,\"" << codfase << "\",\"" << codfase << "\"))&&" + << "(BETWEEN(DADATA,#DATA,#DATA))\n" + << "FROM TIPO=\"C\"\n" + << "TO TIPO=\"C\""; + else + query << "USE RILORE\n" + << "SELECT (BETWEEN(TIPORA,\"" << risoatt << "\",\"" << risoatt << "\"))&&" + << "(BETWEEN(ANNO," << anno << "," << anno << "))&&" + << "(BETWEEN(MESE,\"" << mese << "\",\"" << mese << "\"))&&" + << "(BETWEEN(TPORA,\"" << tpora << "\",\"" << tpora << "\"))&&" + << "(BETWEEN(CODCOSTO,\"" << codcosto << "\",\"" << codcosto << "\"))&&" + << "(BETWEEN(CODCMS,\"" << codcms << "\",\"" << codcms << "\"))&&" + << "(BETWEEN(CODFASE,\"" << codfase << "\",\"" << codfase << "\"))\n" + << "FROM TIPO=\"D\"\n" + << "TO TIPO=\"D\""; TISAM_recordset def(query); def.set_var("#DATA", data); @@ -378,129 +355,20 @@ void TRilevamento_cons_msk::riempi_sheet() TISAM_recordset def(query); - riempi_calendario(def, 'C'); + riempi_calendario(def); } -//NUOVA_RIGA: metodo che aggiunge una riga allo sheet -//tenendo conto dei campi chiave compilati in testata -void TRilevamento_cons_msk::nuova_riga() -{ - /*TSheet_field& sheet = sfield(F_SHEET); - sheet.row(-1); - sheet.select(sheet.items() - 1); - TMask& msk = sheet.sheet_mask(); - - //guardo il tipo risorsa / attrezzatura che sto ricercando - const char risoatt = get(F_RISOATT)[0] == 'T' ? 'R' : get(F_RISOATT)[0]; - TString4 tmp; tmp << risoatt; - msk.set(S_RISOATT, tmp); - msk.enable(S_RISOATT, get(F_RISOATT)[0] == 'T'); - - //leggo il codice corretto a seconda del tipo selezionato - switch(get(F_RISOATT)[0]) - { - case 'T': - msk.reset(S_CODRIS); msk.enable(S_CODRIS); - msk.reset(S_CODATT); msk.enable(S_CODATT); - break; - case 'R': - msk.set(S_CODRIS, get(F_CODRIS)); msk.enable(S_CODRIS); - break; - case 'A': - msk.set(S_CODATT, get(F_CODATT)); msk.enable(S_CODATT); - break; - default: break; - } - - msk.enable(S_DADATA, get(F_DADATA).empty()); - msk.set(S_DADATA, get(F_DADATA)); - - msk.enable(S_ADATA, get(F_ADATA).empty()); - msk.set(S_ADATA, get(F_ADATA)); - - msk.enable(S_TPORA, get(F_TPORA).empty()); - msk.set(S_TPORA, get(F_TPORA)); - - msk.enable(S_CODCOSTO, get(F_CODCOSTO).empty()); - msk.enable(S_CODCMS, get(F_CODCMS).empty()); - msk.enable(S_CODFASE, get(F_CODFASE).empty()); - - msk.set(S_QTAORE, 0L); - msk.set(S_COSTO, proponi_costo(msk)); - - //lancio la maschera di riga da compilare - if(msk.run() == K_ENTER) - { - const int qtaore = msk.get_int(S_QTAORE); - const real prezzo = msk.get_real(S_COSTO); - - if(qtaore > 0) - { - const char tipo = msk.get(S_RISOATT)[0]; - const TString& codice = tipo == 'R' ? msk.get(S_CODRIS) : msk.get(S_CODATT); - //const TString& mese = msk.get(S_MESE); - const TString& tpora = msk.get(S_TPORA); - const TString& codcosto = msk.get(S_CODCOSTO); - const TString& codcms = msk.get(S_CODCMS); - const TString& codfase = msk.get(S_CODFASE); - const TDate& dadata = msk.get_date(S_DADATA); - const TDate& adata = msk.get_date(S_ADATA); - - TToken_string& riga = sheet.row(sheet.items() - 1); - riga.add(tipo, sheet.cid2index(S_RISOATT)); - switch(tipo) - { - case 'R': riga.add(codice, sheet.cid2index(S_CODRIS)); break; - case 'A': riga.add(codice, sheet.cid2index(S_CODATT)); break; - default : break; - } - riga.add(dadata, sheet.cid2index(S_DADATA)); - riga.add(adata, sheet.cid2index(S_ADATA)); - riga.add(tpora, sheet.cid2index(S_TPORA)); - riga.add(codcosto, sheet.cid2index(S_CODCOSTO)); - riga.add(codcms, sheet.cid2index(S_CODCMS)); - riga.add(codfase, sheet.cid2index(S_CODFASE)); - riga.add(dadata, sheet.cid2index(S_DADATA)); - riga.add(adata, sheet.cid2index(S_ADATA)); - riga.add(qtaore, sheet.cid2index(S_QTAORE)); - riga.add(prezzo.string(), sheet.cid2index(S_COSTO)); - } - else - { - sheet.destroy(sheet.items() - 1); - sheet.force_update(); - } - } - msk.enable_default(); - - sheet.check_row(sheet.items() - 1); - sheet.force_update();*/ -} - -//AZZERA_RIGA: metodo che azzera il valore unitario della riga selezionata -//(N.B.: le righe con valore unitario nullo verranno eliminate in fase di registrazione) -void TRilevamento_cons_msk::azzera_riga(TSheet_field& sheet) -{ - /*const int nriga = sheet.selected(); - TToken_string& row = sheet.row(nriga); - - row.add(0, sheet.cid2index(S_QTAORE)); - - TMask& msk = sheet.sheet_mask(); - _qtaore = msk.get_int(S_QTAORE); - msk.set(S_QTAORE, 0L);*/ -} - //AZZERA_TUTTO: metodo che azzera il valore unitario di tutte le righe visualizzate sullo sheet //(N.B.: le righe con valore unitario nullo verranno eliminate in fase di registrazione) -void TRilevamento_cons_msk::azzera_tutto(TSheet_field& sheet) +void TRilevamento_cons_msk::azzera_tutto() { - /*FOR_EACH_SHEET_ROW(sheet, r, row) + TSheet_field& sheet = sfield(F_SHEET); + FOR_EACH_SHEET_ROW(sheet, r, row) { TToken_string& row = sheet.row(r); row.add(0, sheet.cid2index(S_QTAORE)); - }*/ + } } //REGISTRA: metodo che salva nella tabella di modulo le @@ -508,28 +376,33 @@ void TRilevamento_cons_msk::azzera_tutto(TSheet_field& sheet) //vaoler pari a zero, e poi ricarica lo sheet void TRilevamento_cons_msk::registra() { - /*TLocalisamfile file(LF_RILORE); + const TDate data = _datasel; + const int riga = _rigasel; + + TSheet_field& calendario = sfield(F_CALENDARIO); + TToken_string& rigacal = calendario.row(riga); + TSheet_field& sheet = sfield(F_SHEET); + TLocalisamfile file(LF_RILORE); + FOR_EACH_SHEET_ROW(sheet, r, row) { TToken_string& riga = *(TToken_string*)row; - const char tipora = riga.get_char(sheet.cid2index(S_RISOATT)); - const TString16 codice = tipora == 'R' ? riga.get(sheet.cid2index(S_CODRIS)) : riga.get(sheet.cid2index(S_CODATT)); - const TDate& dadata = riga.get(sheet.cid2index(S_DADATA)); - const TDate& adata = riga.get(sheet.cid2index(S_ADATA)); - const TString4 tpora = riga.get(sheet.cid2index(S_TPORA)); - const TString80 codcosto = riga.get(sheet.cid2index(S_CODCOSTO)); - const TString80 codcms = riga.get(sheet.cid2index(S_CODCMS)); - const TString80 codfase = riga.get(sheet.cid2index(S_CODFASE)); - - const int qtaore = riga.get_int(sheet.cid2index(S_QTAORE)); - const TString& tmp = riga.get(sheet.cid2index(S_COSTO)); - const real costo(tmp); - - TString4 mese; mese.format("%02d", adata.month()); + const char tipora = riga.get_char(sheet.cid2index(S_RISOATT)); + const TString16 codice = tipora == 'R' ? riga.get(sheet.cid2index(S_CODRIS)) : riga.get(sheet.cid2index(S_CODATT)); + const TString4 tpora = riga.get(sheet.cid2index(S_TPORA)); + const TString80 codcosto = rigacal.get(calendario.cid2index(C_CODCOSTO)); + const TString80 codcms = rigacal.get(calendario.cid2index(C_CODCMS)); + const TString80 codfase = rigacal.get(calendario.cid2index(C_CODFASE)); + const int qtaore = riga.get_int(sheet.cid2index(S_QTAORE)); + const TString& tmp = riga.get(sheet.cid2index(S_COSTO)); + const real costo(tmp); - TRilevamento_ore rilroa('C', tipora, codice, adata.year(), mese, tpora); + const TString4 mese = get(F_MESE); + const int anno = get_int(F_ANNO); + + TRilevamento_ore rilroa('C', tipora, codice, get_int(F_ANNO), get(F_MESE), tpora); if(!rilroa.empty() && qtaore == 0) rilroa.remove(file); else @@ -538,21 +411,21 @@ void TRilevamento_cons_msk::registra() rilroa.set_tipo('C'); rilroa.set_tipora(tipora); rilroa.set_codice(codice); - rilroa.set_anno(adata.year()); + rilroa.set_anno(anno); rilroa.set_mese(mese); rilroa.set_tpora(tpora); rilroa.set_codcosto(codcosto); rilroa.set_codcms(codcms); rilroa.set_codfase(codfase); - rilroa.set_dadata(dadata); - rilroa.set_adata(adata); + rilroa.set_dadata(data); + rilroa.set_adata(data); rilroa.set_qtaore(qtaore); rilroa.set_costo(costo); int err = rilroa.rewrite_write(file); } } - riempi_sheet();*/ + riempi_sheet(); } void TRilevamento_cons_msk::notify_focus_field(short id) @@ -564,6 +437,8 @@ void TRilevamento_cons_msk::notify_focus_field(short id) TToken_string& riga = calendario.row(calendario.selected()); const int giorno = calendario.current_column() - calendario.cid2index(C_1); TDate data(giorno, get_int(F_MESE), get_int(F_ANNO)); + _datasel = data; + _rigasel = calendario.selected(); riempi_risoatt(data, riga.get(0), riga.get(1), riga.get(2)); } } @@ -575,11 +450,37 @@ bool TRilevamento_cons_msk::on_field_event(TOperable_field& f, TField_event e, l { case DLG_DEFAULT: if(e == fe_button) + { + _mode = 'D'; carica_default(); - case F_ANNO: - case F_MESE: - if(e == fe_modify) + } + break; + case DLG_CERCA: + if(e == fe_button) + { + _mode = 'F'; riempi_sheet(); + } + break; + case DLG_SAVEREC: + if(e == fe_button) + { + _mode = 'S'; + registra(); + } + case S_RISOATT: + case S_CODRIS: + case S_CODATT: + case S_TPORA: + if(e == fe_modify) + { + if(get(S_RISOATT).full() && (get(F_CODRIS).full() || get(F_CODRIS).full()) && get(S_TPORA).full()) + { + TSheet_field& sheet = sfield(F_SHEET); + proponi_costo(sheet.row(sheet.selected())); + } + } + break; default: break; } return true; diff --git a/ci/ci2200a.uml b/ci/ci2200a.uml index f476b6738..cfbedcc23 100755 --- a/ci/ci2200a.uml +++ b/ci/ci2200a.uml @@ -14,12 +14,6 @@ BEGIN PICTURE TOOL_FINDREC END -BUTTON DLG_NEWREC 2 2 -BEGIN - PROMPT 1 1 "Nuovo" - PICTURE TOOL_NEWREC -END - BUTTON DLG_SAVEREC 2 2 BEGIN PROMPT 1 1 "Salva" @@ -123,21 +117,37 @@ END STRING F_CODCOSTO 20 15 BEGIN PROMPT 2 3 "C.d.C. " + USE CDC + INPUT CODCOSTO F_CODCOSTO + DISPLAY "Codice@16" CODCOSTO + DISPLAY "Descrizione@50" DESCRIZ + OUTPUT F_CODCOSTO CODCOSTO END STRING F_CODCMS 20 15 BEGIN - PROMPT 31 4 "Cms. " + PROMPT 2 4 "Cms. " + USE COMMESSE + INPUT CODCMS F_CODCMS + DISPLAY "Codice@16" CODCMS + DISPLAY "Descrizione@50" DESCRIZ + OUTPUT F_CODCMS CODCMS END STRING F_CODFASE 10 8 BEGIN - PROMPT 60 5 "Fase " + PROMPT 2 5 "Fase " + USE FASI + INPUT CODCMSFAS F_CODCMS SELECT + INPUT CODFASE F_CODFASE + DISPLAY "Codice@16" CODFASE + DISPLAY "Descrizione@50" DESCRIZ + OUTPUT F_CODFASE CODFASE END SPREADSHEET F_CALENDARIO -16 4 BEGIN - PROMPT 1 10 "" + PROMPT 1 7 "" ITEM "Centro di\nCosto@8F" ITEM "Codice\nCommessa@8F" ITEM "Codice\nFase@5F" @@ -174,9 +184,9 @@ BEGIN ITEM "31" END -SPREADSHEET F_SHEET -10 0 +SPREADSHEET F_SHEET -15 0 BEGIN - PROMPT 1 15 "" + PROMPT 1 12 "" ITEM "Tipo" ITEM "Codice@16" ITEM "Tipo\nOra@5" @@ -198,171 +208,200 @@ END STRING C_CODCOSTO 20 15 BEGIN PROMPT 2 2 "C.d.C. " + USE COMMESSE + INPUT CODCMS C_CODCOSTO + DISPLAY "Codice@16" CODCMS + DISPLAY "Descrizione@50" DESCRIZ + OUTPUT C_CODCOSTO CODCMS + CHECKTYPE REQUIRED END STRING C_CODCMS 20 15 BEGIN PROMPT 30 2 "Cms. " + USE COMMESSE + INPUT CODCMS C_CODCMS + DISPLAY "Codice@16" CODCMS + DISPLAY "Descrizione@50" DESCRIZ + OUTPUT C_CODCMS CODCMS + CHECKTYPE REQUIRED END STRING C_CODFASE 10 8 BEGIN PROMPT 59 2 "Fase " + USE FASI + INPUT CODCMSFAS F_CODCMS SELECT + INPUT CODFASE F_CODFASE + DISPLAY "Codice@16" CODFASE + DISPLAY "Descrizione@50" DESCRIZ + OUTPUT F_CODFASE CODFASE + CHECKTYPE REQUIRED END STRING C_1 1 BEGIN - PROMPT 2 4 "1" + PROMPT 2 4 " 1" END STRING C_2 1 BEGIN - PROMPT 2 4 "1" + PROMPT 6 4 " 2" END STRING C_3 1 BEGIN - PROMPT 2 4 "1" + PROMPT 10 4 " 3" END STRING C_4 1 BEGIN - PROMPT 2 4 "1" + PROMPT 14 4 " 4" END STRING C_5 1 BEGIN - PROMPT 2 4 "1" + PROMPT 18 4 " 5" END STRING C_6 1 BEGIN - PROMPT 2 4 "1" + PROMPT 22 4 " 6" END STRING C_7 1 BEGIN - PROMPT 2 4 "1" + PROMPT 26 4 " 7" END STRING C_8 1 BEGIN - PROMPT 2 4 "1" + PROMPT 30 4 " 8" END STRING C_9 1 BEGIN - PROMPT 2 4 "1" + PROMPT 34 4 " 9" END STRING C_10 1 BEGIN - PROMPT 2 4 "1" + PROMPT 38 4 "10" END STRING C_11 1 BEGIN - PROMPT 2 4 "1" + PROMPT 42 4 "11" END STRING C_12 1 BEGIN - PROMPT 2 4 "1" + PROMPT 46 4 "12" END STRING C_13 1 BEGIN - PROMPT 2 4 "1" + PROMPT 50 4 "13" END STRING C_14 1 BEGIN - PROMPT 2 4 "1" + PROMPT 54 4 "14" END STRING C_15 1 BEGIN - PROMPT 2 4 "1" + PROMPT 58 4 "15" END STRING C_16 1 BEGIN - PROMPT 2 4 "1" + PROMPT 62 4 "16" END STRING C_17 1 BEGIN - PROMPT 2 4 "1" + PROMPT 66 4 "17" END STRING C_18 1 BEGIN - PROMPT 2 4 "1" + PROMPT 70 4 "18" END STRING C_19 1 BEGIN - PROMPT 2 4 "1" + PROMPT 2 5 "19" END STRING C_20 1 BEGIN - PROMPT 2 4 "1" + PROMPT 6 5 "20" END STRING C_21 1 BEGIN - PROMPT 2 4 "1" + PROMPT 10 5 "21" END STRING C_22 1 BEGIN - PROMPT 2 4 "1" + PROMPT 14 5 "22" END STRING C_23 1 BEGIN - PROMPT 2 4 "1" + PROMPT 18 5 "23" END STRING C_24 1 BEGIN - PROMPT 2 4 "1" + PROMPT 22 5 "24" END STRING C_25 1 BEGIN - PROMPT 2 4 "1" + PROMPT 26 5 "25" END STRING C_26 1 BEGIN - PROMPT 2 4 "1" + PROMPT 30 5 "26" END STRING C_27 1 BEGIN - PROMPT 2 4 "1" + PROMPT 34 5 "27" END STRING C_28 1 BEGIN - PROMPT 2 4 "1" + PROMPT 38 5 "28" END STRING C_29 1 BEGIN - PROMPT 2 4 "1" + PROMPT 42 5 "29" END STRING C_30 1 BEGIN - PROMPT 2 4 "1" + PROMPT 46 5 "30" END STRING C_31 1 BEGIN - PROMPT 2 4 "1" + PROMPT 50 5 "31" +END + +ENDPAGE + +TOOLBAR "" 0 0 0 2 + +BUTTON DLG_CANCEL 2 2 +BEGIN + PROMPT 4 1 "Annulla" + PICTURE TOOL_CANCEL END ENDPAGE @@ -383,7 +422,7 @@ BEGIN MESSAGE SHOW,1@|HIDE,2@|RESET,2@ ITEM "A|Attrezzatura" MESSAGE HIDE,1@|SHOW,2@|RESET,1@ - FLAGS "GDZ" + FLAGS "GZ" END STRING S_CODRIS 16 @@ -397,16 +436,15 @@ BEGIN OUTPUT S_CODRIS CODTAB OUTPUT S_DESRIS S0 CHECKTYPE REQUIRED - FLAGS "GD" + FLAGS "G" GROUP 1 - MESSAGE COPY,S_CODATT + CHECKTYPE REQUIRED END STRING S_DESRIS 50 BEGIN PROMPT 2 6 "Descrizione " CHECKTYPE NORMAL - FLAGS "D" GROUP 1 END @@ -421,7 +459,7 @@ BEGIN OUTPUT S_CODATT CODTAB OUTPUT S_DESATT S0 CHECKTYPE REQUIRED - FLAGS "GD" + FLAGS "G" GROUP 2 MESSAGE COPY,S_CODRIS END @@ -430,7 +468,6 @@ STRING S_DESATT 50 BEGIN PROMPT 2 6 "Descrizione " CHECKTYPE NORMAL - FLAGS "D" GROUP 2 END @@ -442,7 +479,7 @@ BEGIN DISPLAY "Codice@16" CODTAB DISPLAY "Descrizione@50" S0 OUTPUT S_TPORA CODTAB - FLAGS "D" + CHECKTYPE REQUIRED END NUMBER S_QTAORE 6