diff --git a/ba/ba1100.cpp b/ba/ba1100.cpp index e99743500..10aa668c9 100755 --- a/ba/ba1100.cpp +++ b/ba/ba1100.cpp @@ -50,10 +50,10 @@ protected: virtual void print(); virtual void do_print(TPrinter & p, TRec_sheet & r); const char* dumpfilename(const FileDes& dep) const; - + public: - TManutenzione_app() : _browse(NULL), _rec(NULL), _mask(NULL), _firm(0) {} + TManutenzione_app() : _browse(NULL), _rec(NULL), _mask(NULL), _firm(0) {} }; HIDDEN void build_filelist(const char *path, TArray & list) diff --git a/ba/ba1100.h b/ba/ba1100.h index e304df025..c4bf3f790 100755 --- a/ba/ba1100.h +++ b/ba/ba1100.h @@ -9,6 +9,10 @@ #include #endif +#ifndef __MASKFLD_H +class TMask_field; +#endif + #include "ba1100a.h" /////////////////////////////////////////////////////////// @@ -69,7 +73,11 @@ public: class TEdit_file : public TObject { + + static bool memo_handler(TMask_field& f, KEY k); + protected: + KEY edit_record(TRectype& rec, bool readonly = FALSE); public: diff --git a/ba/ba1102.cpp b/ba/ba1102.cpp index 086885d56..ef215b888 100755 --- a/ba/ba1102.cpp +++ b/ba/ba1102.cpp @@ -7,6 +7,63 @@ #include "ba1100.h" +// ORRIBILERRIMO +// ma chemmefotte? +HIDDEN TRectype* __rec; +HIDDEN TRelation* __rel; +HIDDEN TMask* __msk; +HIDDEN int __mid; + +bool TEdit_file::memo_handler(TMask_field& f, KEY k) +{ + bool ok = TRUE; + + if (k == K_SPACE) + { + int memoidx = f.dlg() - 400; + + // recuperate memo id and god (it.: godi) + int mcnt = 0; + long val = -1l; + + for (int i = 0; i < __rec->items(); i++) + { + if (__rec->type(__rec->fieldname(i)) == _memofld) + { + if (memoidx == mcnt++) + { + val = __rec->get_long(__rec->fieldname(i)); + break; + } + } + } + + ok = val != -1l; + if (ok) + { + // edit memo with apposit maskerings + TMask mm("Edit campo memo", 1, 78, 20); + mm.add_memo(501, 0, __rec->fieldname(i), 1, 1, 76,16); + mm.add_button(DLG_OK, 0, "", -12, -1, 9, 2); + mm.add_button(DLG_CANCEL, 0, "", -22, -1, 9, 2); + // build fieldref + TString80 fref; + // UARNIN! Non funziona necessariamente per le tabelle + // ma non abbiamo tabelle coi memo e quindi camm' ifottamme' + fref << __rec->num() << "->" << __rec->fieldname(i); + mm.field(501).set_field(fref); + // se tutto va bene basta fare cosi' + mm.autoload(__rel); + if (mm.run() == K_ENTER) + { + mm.autosave(__rel); + __msk->set (__mid,__rec->get(__rec->fieldname(i))); + } + // se invece va male, l'e' istes + } + } + return ok; +} bool TEdit_file::browse(int logicnum, const char* name) { @@ -18,6 +75,10 @@ bool TEdit_file::browse(int logicnum, const char* name) TToken_string head(256); TToken_string trac(256); + // DIO CHE ORRORE! MA CHECCEPOSSOFA'? + __rel = &relation; + // E POI, DICIAMOLO, CHEMMEFOTTAMME'? + const char* n; trac.add(""); head.add("@1"); @@ -137,6 +198,7 @@ KEY TEdit_file::edit_record(TRectype& rec, bool readonly) int curpage = 0, currow = 1, nid = 100; const char* cp; + int mcnt =0; for(int i = 0; (cp = rec.fieldname(i)) != NULL; i++) { @@ -165,6 +227,16 @@ KEY TEdit_file::edit_record(TRectype& rec, bool readonly) case _longzerofld: m.add_number(nid++, curpage, s, 3, currow, len, "Z", rec.ndec(cp)); break; + case _memofld: + m.add_number(nid++, curpage, s, 3, currow, len, "Z", rec.ndec(cp)); + m.enable(nid-1, FALSE); + // memo del caz: add bottone per l'editing etc + m.add_button (400+(mcnt++), curpage, "Edit", 35, currow, 9, 1); + __rec = &rec; + __msk = &m; + __mid = nid-1; + m.set_handler(400+(mcnt-1), memo_handler); + break; default: break; }