#include <applicat.h>
#include <automask.h>
#include <form.h>

//--------------FORM-----------------------
class TEntrFor_form : public TForm
{
private:
  TSorted_cursor* _sc;
  
protected:
  virtual bool validate(TForm_item& cf, TToken_string& s);
  void output_values(const TRectype & rec, const char * output, TForm_item & cf);
  const TRectype* find_original_rdoc(const TRectype& row) const; 
            
public:
  void set_testata() {set_header(1,TRUE);}
  virtual TCursor* cursor() const { return _sc; }
  TEntrFor_form();
  virtual ~TEntrFor_form();
};

//-------------MASCHERA-------------------
class TEntrFor_mask : public TAutomask
{
  TRelation * _rel;
  TCursor * _cur;

protected:
  bool on_field_event(TOperable_field& o, TField_event e, long jolly);
public:

  TEntrFor_mask();
  
  virtual ~TEntrFor_mask(){};
};

//------------APPLICAZIONE----------------
class TEntrFor: public TSkeleton_application
{
  TEntrFor_mask * _mask;
  TEntrFor_form * _form;
  TString4 _tiporit;
  bool _dettaglio;
  long _ritant;
  
protected:

  virtual const char * extra_modules() const {return "ve";}

  virtual bool create(void);
  virtual bool destroy(void);
  virtual void main_loop();

  void print_header();
  void print_footer();
  void print_line(const TString& r, const long j);
  void set_dettaglio();
  
public:
  void add_filter_range(TString& filtro, short id1, short id2, const char* campo) const;
  void add_filter_expr(TString& filtro, short id, const char* campo, const char* cmp) const;
  TString4 get_tiporit() const {return _tiporit;};  
  long get_ritardo() const {return _ritant;};
  bool get_dettaglio() const {return _dettaglio;};
  
  TEntrFor() : _dettaglio(TRUE), _ritant(0L) {}
  virtual ~TEntrFor() {}
};

//metodo per richiamare l'applicazione principale (serve per avere il valore di un intero,
//ricavato nell'applicazione,nel form)
inline TEntrFor& app() { return (TEntrFor&) main_app(); }