diff --git a/include/relapp.cpp b/include/relapp.cpp index 59c475510..0604e507e 100755 --- a/include/relapp.cpp +++ b/include/relapp.cpp @@ -1,4 +1,4 @@ -// $Id: relapp.cpp,v 1.29 1994-11-16 15:51:05 guy Exp $ +// $Id: relapp.cpp,v 1.30 1994-11-17 12:15:01 alex Exp $ #include #include #include @@ -892,3 +892,31 @@ bool TRelation_application::filter() return TRUE; } + +void TRelation_application::set_link(TMask * m, const char * keyexpr) + +{ + CHECK(m != NULL, "Invalid mask pointer"); + CHECK(keyexpr != NULL, "Invalid expression"); + TToken_string body(keyexpr); + const int key = body.get_int(); + + _lnflag = TRUE; + + const char* v = body.get(); + + const int max = m->fields(); + for (int i = 0; i < max && v != NULL; i++) + { + TMask_field& f = m->fld(i); + + if (f.active() && f.dlg() > 0 && f.in_key(key)) + { + const TString s(v); + _fixed.add(format("%d=%s", f.dlg(), (const char*) s)); + v = body.get(); + } + } +} + + diff --git a/include/relapp.h b/include/relapp.h index cc5c6e379..2ab7c4e24 100755 --- a/include/relapp.h +++ b/include/relapp.h @@ -104,6 +104,7 @@ public: virtual ~TRelation_application(); bool filtered() const { return _fixed.not_empty(); } bool find(byte key = 0); + void set_link(TMask * m, const char * keyexpr); }; #endif