From 2848710c89152b4f4e3ff41d7f95d760ba8d0027 Mon Sep 17 00:00:00 2001 From: guy Date: Fri, 6 Feb 1998 16:10:34 +0000 Subject: [PATCH] isam.h Aggiunta macro megaf..a FOR_EACH_FILE_RECORD Tolta classe fantasma TTransaction mask.cpp Aggiunto riconoscimento ufficiale dei TTree_field maskfld.cpp Implementazione dei nuovi, nonche' ovviamente fichissimi TWindowed_field maskfld.h Aggiunti i TWindowed_field e i TTree_field da essi derivati git-svn-id: svn://10.65.10.50/trunk@6145 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- include/isam.h | 15 ++++---------- include/mask.cpp | 21 +++++++++---------- include/maskfld.cpp | 49 +++++++++++++++++++++++++++++++++++++++++++++ include/maskfld.h | 43 +++++++++++++++++++++++++++++++++++++++ 4 files changed, 106 insertions(+), 22 deletions(-) diff --git a/include/isam.h b/include/isam.h index e5b128b95..7408ac61a 100755 --- a/include/isam.h +++ b/include/isam.h @@ -839,18 +839,11 @@ public: TRecfield(TRectype& rec, const char* name, int from = 0, int to = -1); }; -/* +#define FOR_EACH_FILE_RECORD(isamfile) \ +for (int _e##isamfile = isamfile.first(); \ + _e##isamfile == NOERR; \ + _e##isamfile = isamfile.next()) - class TTransaction - { - public: - // @FPUB - void begin(); - void end(bool success = TRUE); - void abort() { end(FALSE);} - }; - - */ #ifdef __ISAM_CPP #define extern diff --git a/include/mask.cpp b/include/mask.cpp index f5e4d9a34..4b2c03527 100755 --- a/include/mask.cpp +++ b/include/mask.cpp @@ -469,7 +469,7 @@ bool TMask::check_fields() for (int i = 0; i < max; i++) { TMask_field& f = fld(i); - const bool on = f.active() || (f.shown() && f.is_kind_of(CLASS_SHEET_FIELD)); + const bool on = f.active() || (f.shown() && f.is_sheet()); if (on) // Don't test inactive fields { if (f.parent() != curpage) @@ -847,6 +847,7 @@ TMask_field* TMask::parse_field(TScanner& scanner) if (k == "GO") return new TGolem_field(this); if (k == "BR") return new TBrowsefile_field(this); if (k == "SP") return new TSheet_field(this); + if (k == "TR") return new TTree_field(this); return NULL; } @@ -926,28 +927,26 @@ WINDOW TMask::read_page( while (scanner.popkey() != "EN") { TMask_field* f = parse_field(scanner); -#ifdef DBG if (f == NULL) { +#ifdef DBG const int f = fields(); - TString e("Unknown control at position "); e << f; - if (f > 0) e << ".\nLast good one was " << fld(f-1).dlg() << ": " << fld(f-1).prompt(); - yesnofatal_box(e); + TString e; + e << "Campo non riconosciuto alla posizione " << f; + if (f > 0) + e << ".\nL'ultimo riconosciuto e' " << fld(f-1).dlg() << ": " << fld(f-1).prompt(); + error_box(e); +#endif while (scanner.popkey() != "EN"); } -#endif - - if (f != NULL) + else { const long start = clock(); - f->construct(scanner, w); add_field(f); - _build_time += clock()-start; } } - return w; } diff --git a/include/maskfld.cpp b/include/maskfld.cpp index cb09839cc..4b568f201 100755 --- a/include/maskfld.cpp +++ b/include/maskfld.cpp @@ -4216,5 +4216,54 @@ const char* TZoom_field::win2raw(const char* data) const const char* TZoom_field::get_first_line() const { return raw2win(_str); } +/////////////////////////////////////////////////////////// +// TWindowed field +/////////////////////////////////////////////////////////// +void TWindowed_field::enable(bool on) +{ + TOperable_field::enable(on); + if (_win) + _win->activate(on); +} +void TWindowed_field::show(bool on) +{ + TOperable_field::show(on); + if (_win && _win->is_open() != on) + { + if (on) + _win->open(); + else + _win->close(); + } +} + +void TWindowed_field::parse_head(TScanner& scanner) +{ + _ctl_data._width = scanner.integer(); + _ctl_data._size = scanner.integer(); +} + +void TWindowed_field::set_win(TWindow* w) +{ + if (_win) + delete _win; + _win = w; +} + +void TWindowed_field::create(WINDOW parent) +{ + _dlg = _ctl_data._dlg; + _parent = parent; +// Example of what should be done in derived classes +// set_win(new TSpecial_window(_ctl_data._x, _ctl_data._y, +// _ctl_data._width, _ctl_data._size, +// parent, this)); +} + +TWindowed_field::~TWindowed_field() +{ + if (_win) + delete _win; +} diff --git a/include/maskfld.h b/include/maskfld.h index 4bd24888b..5f0b39613 100755 --- a/include/maskfld.h +++ b/include/maskfld.h @@ -1412,6 +1412,49 @@ public: virtual ~TGolem_field(); }; +class TWindowed_field : public TOperable_field +{ + WINDOW _parent; + short _dlg; + TWindow* _win; + +protected: // TMask_field + virtual void parse_head(TScanner& scanner); + virtual void create(WINDOW parent); + virtual void enable(bool on = TRUE); + virtual void show(bool on = TRUE); + +public: // TMask_field + virtual short dlg() const { return _dlg; } + virtual WINDOW parent() const { return _parent; } + +public: + TWindow& win() const { CHECK(_win, "NULL Window in field"); return *_win; } + void set_win(TWindow* w); + + TWindowed_field(TMask* m) : TOperable_field(m), _win(NULL) { } + virtual ~TWindowed_field(); +}; + +// Implemented in tree.cpp +class TTree; +class TTree_field : public TWindowed_field +{ +protected: // TObject + word class_id() const; + bool is_kind_of(word cid) const; + +protected: // TMask_field + virtual void create(WINDOW parent); + +public: + TTree* tree() const; + void set_tree(TTree* t); + + TTree_field(TMask* m) : TWindowed_field(m) { } + virtual ~TTree_field() { } +}; + #endif // __MASKFLD_H