diff --git a/ba/ba0.cpp b/ba/ba0.cpp index 3fd512dd9..9115e1a0e 100755 --- a/ba/ba0.cpp +++ b/ba/ba0.cpp @@ -13,12 +13,6 @@ #include #include -#if XVT_OS == XVT_OS_WIN -#define STRICT -#include -#include -#endif - #include #include "ba0.h" @@ -262,15 +256,6 @@ COLOR TColor_mask::cid2color(short cid) const return color[i]; } -#if XVT_OS == XVT_OS_WIN - -inline COLORREF COLOR2RGB(COLOR c) -{ - return RGB(XVT_COLOR_GET_RED(c), XVT_COLOR_GET_GREEN(c), XVT_COLOR_GET_BLUE(c)); -} - -#endif - bool TColor_mask::color_handler(TMask_field& f, KEY k) { bool ok = TRUE; @@ -280,57 +265,8 @@ bool TColor_mask::color_handler(TMask_field& f, KEY k) TColor_mask& m = (TColor_mask&)f.mask(); const char* name = m.cid2name(f.dlg()); COLOR col = m.get_color_entry(name); - -#if XVT_OS == XVT_OS_WIN - CHOOSECOLOR cc; - memset(&cc, 0, sizeof(cc)); - - HWND hwnd = (HWND)xvt_vobj_get_attr(m.win(), ATTR_NATIVE_WINDOW); - HDC hdc = GetDC(hwnd); - - PALETTEENTRY* pe = NULL; - int max_entries = 0; - if (GetDeviceCaps(hdc, RASTERCAPS) & RC_PALETTE) - { - max_entries = GetDeviceCaps(hdc, SIZEPALETTE); - pe = new PALETTEENTRY[max_entries]; - GetSystemPaletteEntries(hdc, 0, max_entries, pe); - } - ReleaseDC(hwnd, hdc); - - unsigned long custom_colors[16]; - for (int c = 0; c < 16; c++) - { - if (pe) - { - const PALETTEENTRY& e = pe[c < 8 ? c : max_entries - 16 + c]; - custom_colors[c] = RGB(e.peRed, e.peGreen, e.peBlue); - } - else - { - const byte val = (c & 0x8) ? 255 : 127; - const byte red = (c & 0x1) ? val : 0; - const byte green = (c & 0x2) ? val : 0; - const byte blue = (c & 0x4) ? val : 0; - custom_colors[c] = RGB(red, green, blue); - } - } - if (pe) - { - delete pe; - pe = NULL; - } - - cc.lStructSize = sizeof(cc); - cc.hwndOwner = hwnd; - cc.rgbResult = COLOR2RGB(col); - cc.lpCustColors = custom_colors; - cc.Flags = CC_RGBINIT; - - ok = ChooseColor(&cc) != 0; - col = RGB2COLOR(GetRValue(cc.rgbResult), GetGValue(cc.rgbResult), GetBValue(cc.rgbResult)); -#endif - + col = choose_color(col, m.win()); + ok = col != COLOR_INVALID; if (ok) { m.set_color_entry(name, col); diff --git a/ba/ba3100.cpp b/ba/ba3100.cpp index 0531a82ed..3e9b76ac9 100755 --- a/ba/ba3100.cpp +++ b/ba/ba3100.cpp @@ -10,7 +10,7 @@ #include "batbver.h" #define REG_JOURNAL 5 -#define Versamenti_table "%VER" +#define TAB_VERSAMENTI "%VER" class TGeneric_table_app : public Tab_application { @@ -24,6 +24,7 @@ class TGeneric_table_app : public Tab_application void load_rec_in_disabled_fields(TMask& m); void copy_rec_in_insert_fields(TMask& m); // ------------------------------------------------------------ + protected: // TRelation_application virtual bool user_destroy() ; virtual bool user_create() ; @@ -34,21 +35,26 @@ protected: // TRelation_application virtual int rewrite(const TMask& m); public: - bool exist_journal() {return _exist_journal;} + bool exist_journal() { return _exist_journal; } char frequenza_versamenti(long firm, int year) const; - TGeneric_table_app() : _exist_journal(FALSE), _stampa_intest(FALSE) {} + TGeneric_table_app(); virtual ~TGeneric_table_app() {} }; -HIDDEN inline TGeneric_table_app& app() { return (TGeneric_table_app&) main_app();} +HIDDEN inline TGeneric_table_app& app() { return (TGeneric_table_app&)main_app(); } +TGeneric_table_app::TGeneric_table_app() + : _exist_journal(FALSE), _stampa_intest(FALSE), _ver(NULL) +{ +} // - tabella versamenti-specific ------------------------------- void TGeneric_table_app::load_rec_in_disabled_fields(TMask& m) // carica il record del periodo precedente a quello immesso // nei campi disabilitati relativi. -{ +{ + CHECK(_ver, "Null table"); TString key(m.get(F_ANNOES)); key << m.get(F_MESEES); @@ -97,7 +103,7 @@ void TGeneric_table_app::copy_rec_in_insert_fields(TMask& m) void TGeneric_table_app::init_insert_mode(TMask& m) { - TString n(get_tabname()); + const TString& n = get_tabname(); if (n == "REG") { const long ditta = get_firm(); @@ -110,8 +116,7 @@ void TGeneric_table_app::init_insert_mode(TMask& m) _oldditta = ditta; _oldanno = anno; - TTable reg(get_tabname()); - reg.zero(); + TTable reg("REG"); reg.put("CODTAB", m.get(F_ANNO)); TRectype to(reg.curr()); @@ -122,7 +127,7 @@ void TGeneric_table_app::init_insert_mode(TMask& m) } } else - if (n == Versamenti_table) + if (n == TAB_VERSAMENTI) { // Se il record e' nuovo prima carica il record precedente load_rec_in_disabled_fields(m); @@ -135,7 +140,7 @@ void TGeneric_table_app::init_insert_mode(TMask& m) void TGeneric_table_app::init_modify_mode(TMask& m) { Tab_application::init_modify_mode(m); - TString n(get_tabname()); + const TString& n = get_tabname(); if (n == "REG") { TString16 config; @@ -147,7 +152,7 @@ void TGeneric_table_app::init_modify_mode(TMask& m) m.enable(F_CONFIG, what >= 0); } else - if (n == Versamenti_table) + if (n == TAB_VERSAMENTI) load_rec_in_disabled_fields(m); } @@ -404,51 +409,54 @@ HIDDEN bool mese_handler(TMask_field& f, KEY k) bool TGeneric_table_app::user_create() { - Tab_application::user_create(); - const TString& name = get_tabname(); - TMask& mask = *get_mask(); - - if (name == "REG") + bool ok = Tab_application::user_create(); + if (ok) { - mask.set_handler(F_TIPO, tiporeg_handler); - mask.set_handler(F_PRINTER, printer_handler); + const TString& name = get_tabname(); + TMask& mask = *get_mask(); - TConfig st(CONFIG_STUDIO, "cg"); - _stampa_intest = st.get_bool("StiReg"); - } - if (name == "%DEL") - { - mask.set_handler(F_MESEDEL, mese_handler); - mask.set_handler(F_IMPORTO, impdel_handler); - mask.set_handler(F_INTERESSI, intdel_handler); - mask.set_handler(F_BANCA1, coddel_handler); - mask.set_handler(F_CONCESSIONE, coddel_handler); - } - if (name == "CAM") - set_search_field(FLD_TABCAM_D0); - if (name == Versamenti_table) - { - _ver = new TTable(Versamenti_table); - _ver->put("CODTAB","199301"); - if (_ver->read() != NOERR) // Se %VER non esiste la crea + if (name == "REG") { + mask.set_handler(F_TIPO, tiporeg_handler); + mask.set_handler(F_PRINTER, printer_handler); + + TConfig st(CONFIG_STUDIO, "cg"); + _stampa_intest = st.get_bool("StiReg"); + } + if (name == "%DEL") + { + mask.set_handler(F_MESEDEL, mese_handler); + mask.set_handler(F_IMPORTO, impdel_handler); + mask.set_handler(F_INTERESSI, intdel_handler); + mask.set_handler(F_BANCA1, coddel_handler); + mask.set_handler(F_CONCESSIONE, coddel_handler); + } + if (name == "CAM") + set_search_field(FLD_TABCAM_D0); + if (name == TAB_VERSAMENTI) + { + _ver = new TTable(TAB_VERSAMENTI); _ver->put("CODTAB","199301"); - _ver->put("R0","1.5"); _ver->put("R1","1.5"); - _ver->put("R2","1.5"); _ver->put("R3","1.5"); _ver->put("R4","1.5"); - _ver->put("R5","50500"); _ver->put("R7","200000"); - _ver->put("R11","88"); _ver->put("R12","88"); - if (_ver->write() != NOERR) - error_box("Errore %d in scrittura sulla tabella %VER",_ver->status()); + if (_ver->read() != NOERR) // Se %VER non esiste la crea + { + _ver->put("CODTAB","199301"); + _ver->put("R0","1.5"); _ver->put("R1","1.5"); + _ver->put("R2","1.5"); _ver->put("R3","1.5"); _ver->put("R4","1.5"); + _ver->put("R5","50500"); _ver->put("R7","200000"); + _ver->put("R11","88"); _ver->put("R12","88"); + if (_ver->write() != NOERR) + error_box("Errore %d in scrittura sulla tabella %VER",_ver->status()); + } } } - return TRUE; + return ok; } bool TGeneric_table_app::user_destroy() { - TString n(get_tabname()); - if (n == Versamenti_table) + const TString& n = get_tabname(); + if (n == TAB_VERSAMENTI) delete _ver; return Tab_application::user_destroy(); } @@ -471,7 +479,8 @@ int TGeneric_table_app::rewrite(const TMask& m) int ba3100(int argc, char* argv[]) { - TGeneric_table_app a ; - a.run(argc, argv, "Tabella"); + TGeneric_table_app* a = new TGeneric_table_app; + a->run(argc, argv, "Tabella"); + delete a; // Bella battuta! return 0; } diff --git a/ba/ba3400.cpp b/ba/ba3400.cpp index dea86e8fa..45ebfcdb9 100755 --- a/ba/ba3400.cpp +++ b/ba/ba3400.cpp @@ -31,12 +31,12 @@ TTestrel_application::TTestrel_application(const char* name, const char* num) bool TTestrel_application::user_create() { - _msk = new TMask(_maskname); - int id = atoi(_num); if (id > 0) _rel = new TRelation(id); else _rel = new TRelation(_num); + _msk = new TMask(_maskname); + return TRUE; } @@ -44,6 +44,7 @@ bool TTestrel_application::user_destroy() { delete _msk; delete _rel; + return TRUE; } diff --git a/ba/ba883.cpp b/ba/ba883.cpp index 92ab08764..fc91b3634 100755 --- a/ba/ba883.cpp +++ b/ba/ba883.cpp @@ -1,11 +1,85 @@ #include -#include -#include #include +#include #include -#include +/////////////////////////////////////////////////////////// + +class TTab_application : public TRelation_application +{ + TMask* _msk; + TRelation* _rel; + +protected: + virtual TMask* get_mask(int mode); + virtual TRelation* get_relation() const; + virtual bool changing_mask(int mode); + virtual bool user_create(); + virtual bool user_destroy(); + +public: + TTab_application(); + virtual ~TTab_application(); +}; + +// @cmember Costruttore +TTab_application::TTab_application() + : _msk(NULL), _rel(NULL) +{ } + +// @cmember Distruttore +TTab_application::~TTab_application() +{ } + +// @cmember Indica se la futura ritornera' una maschera diversa +// dalla corrente. +bool TTab_application::changing_mask(int mode) +{ return FALSE; } + +// @cmember Richiede la maschera da usare +TMask* TTab_application::get_mask(int mode) +{ + CHECK(_msk, "Null mask"); + return _msk; +} + +// @cmember Ritorna la relazione da modificare +TRelation* TTab_application::get_relation() const +{ + CHECK(_rel, "Null relation"); + return _rel; +} + + +bool TTab_application::user_create() +{ + if (argc() < 3) + return FALSE; + + TString16 tabname = argv(2); + tabname.upper(); + _rel = new TRelation(tabname); + + TString16 t(tabname); + if (t[0] == '%') t.ltrim(1); + TString16 m; m << "BATB" << t; + _msk = new TMask(m) ; + + TString80 tit = _msk->get_caption(); + set_title(tit); + + return TRUE; +} + +bool TTab_application::user_destroy() +{ + if (_msk) delete _msk; + if (_rel) delete _rel; + return TRUE; +} + + /////////////////////////////////////////////////////////// // Test Relapp @@ -41,12 +115,12 @@ TTestrel_application::TTestrel_application(const char* name, const char* num) bool TTestrel_application::user_create() { - _msk = new TMask(_maskname); - - int id = atoi(_num); + const int id = atoi(_num); if (id > 0) _rel = new TRelation(id); else _rel = new TRelation(_num); + _msk = new TMask(_maskname); + return TRUE; } @@ -235,8 +309,16 @@ int main(int argc, char** argv) } else { - TTestrel_application a(argv[1], argv[2]); - a.run(argc, argv, "Test Relation Application"); + if (isdigit(argv[2][0])) + { + TTestrel_application a(argv[1], argv[2]); + a.run(argc, argv, "Test Relation Application"); + } + else + { + TTab_application a; + a.run(argc, argv, "Test Table Application"); + } } return 0; diff --git a/ba/batbreg.uml b/ba/batbreg.uml index 04724de08..7551bb654 100755 --- a/ba/batbreg.uml +++ b/ba/batbreg.uml @@ -45,8 +45,8 @@ BEGIN DISPLAY "Codice" CODTAB[5,7] DISPLAY "Descrizione @50" S0 DISPLAY "Tipo" I0 - OUTPUT F_CODICE CODTAB[5,7] OUTPUT F_ANNO CODTAB[1,4] + OUTPUT F_CODICE CODTAB[5,7] OUTPUT F_DESCR S0 CHECKTYPE REQUIRED MESSAGE COPY,20@