#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 { WINDOW _statbar; 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(); TLocalisamfile& file() const { return *get_relation()->lfile(); } bool test_key(byte k, bool err); bool save(bool check_dirty); void enable_query(); void set_toolbar(bool all); void set_fixed(); // Fissa i campi non modificabili int set_mode(int mode); // Seleziona il nuovo modo e ritorna il vecchio void set_limits(byte what = 0x3); bool search_mode(); // Attiva la maschera di ricerca void query_mode(bool pre_ins = FALSE); // Entra in modo ricerca void query_insert_mode() { query_mode(TRUE); } void insert_mode(); // Entra in modo inserimento bool modify_mode(); // Entra in modo modifica bool main_loop(); // Ciclo principale TMask_field* get_search_field() const; void setkey(); protected: 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