#ifndef __RELAPP_H #define __RELAPP_H #ifndef __APPLICAT_H #include #endif #ifndef __RELATION_H #include #endif #ifndef __MASK_H #include #endif class TKey_array; class TRelation_application : public TApplication { TMask * _mask; TKey_array* _maskeys; long _first, _last; int _search_id; TString _autoins_caller; bool _lnflag; TToken_string _fixed; virtual bool create(); virtual bool destroy(); bool filter(); bool test_key(byte k, bool err); bool save(bool check_dirty); void enable_query(); void set_toolbar(bool all); int set_mode(int mode); // Seleziona il nuovo modo e ritorna il vecchio void set_limits(byte what = 0x3); void query_insert_mode() { query_mode(TRUE); } void insert_mode(); // Entra in modo inserimento virtual bool main_loop(); // Ciclo principale TMask_field* get_search_field() const; protected: TLocalisamfile& file() const { return *get_relation()->lfile(); } void set_fixed(); // Fissa i campi non modificabili bool search_mode(); // Attiva la maschera di ricerca void query_mode(bool pre_ins = FALSE); // Entra in modo ricerca bool modify_mode(); // Entra in modo modifica void setkey(); bool lnflag() const { return _lnflag;} long first() const { return _first;} long last() const { return _first;} TMask& curr_mask() const { return *_mask; } const TString& autoins_caller() const { return _autoins_caller;} virtual bool menu(MENU_TAG m); virtual bool user_create() pure; virtual bool user_destroy() pure; virtual TMask* get_mask(int mode) pure; virtual bool changing_mask(int mode) pure; virtual TRelation* get_relation() const pure; virtual int read(TMask& m); virtual int write(const TMask& m); virtual int rewrite(const TMask& m); virtual bool remove(); virtual const char* get_next_key() { return ""; } virtual bool protected_record(TRectype&) { return FALSE; } virtual void init_query_mode(TMask&) { } virtual void init_query_insert_mode(TMask& m) { init_query_mode(m); } virtual void init_insert_mode(TMask&) { } virtual void init_modify_mode(TMask&) { } virtual void write_enable(const bool on = TRUE) { get_relation()->write_enable(-1, on); } void write_disable() { write_enable(FALSE); } bool autonum(TMask* m, bool rec); void set_search_field(short id) { _search_id = id;} bool has_filtered_cursor() const { return filtered() || force_cursor_usage();} public: TRelation_application(); virtual ~TRelation_application(); bool filtered() const { return _fixed.not_empty(); } void set_first(long first) { _first = first;} void set_last(long last) { _last = last;} bool find(byte key = 0); virtual bool force_cursor_usage() const { return FALSE;} }; #endif