Patch level : 2.1 nopatch
Files correlati : Ricompilazione Demo : [ ] Commento : git-svn-id: svn://10.65.10.50/trunk@12127 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
		
							parent
							
								
									108b0b8ac6
								
							
						
					
					
						commit
						fe2e1eb01e
					
				@ -733,7 +733,14 @@ void TRecordset::parsed_text(TString& sql) const
 | 
			
		||||
        if (var.type() == _datefld)
 | 
			
		||||
          s.format("%ld", var.as_date().date2ansi());
 | 
			
		||||
        else
 | 
			
		||||
        {
 | 
			
		||||
          s = var.as_string();
 | 
			
		||||
          for (int i = 0; s[i]; i++)
 | 
			
		||||
          {
 | 
			
		||||
            if (s[i] == '\'')
 | 
			
		||||
              s.insert("'", i++);
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
        if ((var.is_string() && s[0] != '\'') || var.is_null())
 | 
			
		||||
        {
 | 
			
		||||
          s.insert("'");
 | 
			
		||||
@ -1247,11 +1254,14 @@ static int query_get_items(void* jolly, int argc, char** values, char** columns)
 | 
			
		||||
  return q->on_get_items(argc, values, columns);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool TSQL_recordset::ask_variables(bool all)
 | 
			
		||||
bool TSQL_recordset::set_var(const char* name, const TVariant& var, bool create)
 | 
			
		||||
{
 | 
			
		||||
  const bool ok = TRecordset::ask_variables(all);
 | 
			
		||||
  const bool ok = TRecordset::set_var(name, var, create);
 | 
			
		||||
  if (ok)
 | 
			
		||||
  {
 | 
			
		||||
    _items = 0;
 | 
			
		||||
    _page.destroy();
 | 
			
		||||
  }
 | 
			
		||||
  return ok;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -1932,14 +1942,6 @@ TRecnotype TISAM_recordset::current_row() const
 | 
			
		||||
  return c != NULL ? c->pos() : -1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool TISAM_recordset::ask_variables(bool all)
 | 
			
		||||
{
 | 
			
		||||
  bool ok = TRecordset::ask_variables(all);
 | 
			
		||||
  if (ok)
 | 
			
		||||
    reset();
 | 
			
		||||
  return ok; 
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TRecnotype TISAM_recordset::items() const 
 | 
			
		||||
{
 | 
			
		||||
  TCursor* c = cursor();
 | 
			
		||||
@ -1980,6 +1982,14 @@ void TISAM_recordset::reset()
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool TISAM_recordset::set_var(const char* name, const TVariant& var, bool create)
 | 
			
		||||
{
 | 
			
		||||
  const bool ok = TRecordset::set_var(name, var, create);
 | 
			
		||||
  if (ok)
 | 
			
		||||
    reset();
 | 
			
		||||
  return ok;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void TISAM_recordset::set(const char* use)
 | 
			
		||||
{
 | 
			
		||||
  reset();
 | 
			
		||||
 | 
			
		||||
@ -146,7 +146,7 @@ public: // TRecordset
 | 
			
		||||
  virtual unsigned int columns() const;
 | 
			
		||||
  virtual const TRecordset_column_info& column_info(unsigned int c) const;
 | 
			
		||||
  virtual const TVariant& get(unsigned int column) const;
 | 
			
		||||
  virtual bool ask_variables(bool all);
 | 
			
		||||
  virtual bool set_var(const char* name, const TVariant& var, bool create = false);
 | 
			
		||||
  const TString& query_text() const { return _sql; }
 | 
			
		||||
 | 
			
		||||
public:
 | 
			
		||||
@ -190,10 +190,9 @@ public:
 | 
			
		||||
  virtual const TRecordset_column_info& column_info(unsigned int c) const;
 | 
			
		||||
  virtual const TVariant& get(unsigned int column) const;
 | 
			
		||||
  virtual const TVariant& get(const char* column_name) const;
 | 
			
		||||
  virtual bool ask_variables(bool all);
 | 
			
		||||
  virtual bool set_var(const char* name, const TVariant& var, bool create = false);
 | 
			
		||||
  virtual const TString& query_text() const { return _use; }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  TISAM_recordset(const char* use);
 | 
			
		||||
  virtual ~TISAM_recordset();
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
@ -55,6 +55,9 @@ protected:
 | 
			
		||||
  virtual void update();
 | 
			
		||||
  virtual bool on_key(KEY k);
 | 
			
		||||
 | 
			
		||||
  void update_scroll_range();
 | 
			
		||||
  void do_scroll(int kx, int ky);
 | 
			
		||||
 | 
			
		||||
public:
 | 
			
		||||
  virtual PNT log2dev(long lx, long ly) const;
 | 
			
		||||
 | 
			
		||||
@ -71,12 +74,29 @@ PNT TPrint_preview_window::log2dev(long lx, long ly) const
 | 
			
		||||
  pnt.v = short(ly * _zoom / res.y);
 | 
			
		||||
 | 
			
		||||
  const TPoint orig = origin();
 | 
			
		||||
  pnt.h -= short(orig.x*10);
 | 
			
		||||
  pnt.v -= short(orig.y*10);
 | 
			
		||||
  pnt.h -= short(orig.x);
 | 
			
		||||
  pnt.v -= short(orig.y);
 | 
			
		||||
 | 
			
		||||
  return pnt;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void TPrint_preview_window::update_scroll_range()
 | 
			
		||||
{
 | 
			
		||||
  const TPoint size = _book->page_size();
 | 
			
		||||
  const TPoint res = _book->page_res();
 | 
			
		||||
 | 
			
		||||
  PNT pnt;
 | 
			
		||||
  pnt.h = short(size.x * _zoom / res.x);
 | 
			
		||||
  pnt.v = short(size.y * _zoom / res.y);
 | 
			
		||||
 | 
			
		||||
  RCT rct; xvt_vobj_get_client_rect(win(), &rct);
 | 
			
		||||
  pnt.h -= rct.right; if (pnt.h < 0) pnt.h = 0;
 | 
			
		||||
  pnt.v -= rct.bottom; if (pnt.v < 0) pnt.v = 0;
 | 
			
		||||
 
 | 
			
		||||
  update_thumb(0, 0);
 | 
			
		||||
  set_scroll_max(pnt.h, pnt.v);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void TPrint_preview_window::update()
 | 
			
		||||
{
 | 
			
		||||
  clear(MASK_BACK_COLOR);
 | 
			
		||||
@ -161,13 +181,25 @@ void TPrint_preview_window::handler(WINDOW win, EVENT* ep)
 | 
			
		||||
      bool processed = true;
 | 
			
		||||
      switch(ep->v.cmd.tag)
 | 
			
		||||
      {
 | 
			
		||||
      case POPUP_FIRST  : _page = 1; break;
 | 
			
		||||
      case POPUP_PREV   : if (_page > 1) _page--; break;
 | 
			
		||||
      case POPUP_FIRST  : 
 | 
			
		||||
        processed = _page > 1; 
 | 
			
		||||
        if (processed) _page = 1; 
 | 
			
		||||
        break;
 | 
			
		||||
      case POPUP_PREV   : 
 | 
			
		||||
        processed = _page > 1; 
 | 
			
		||||
        if (processed) _page--; 
 | 
			
		||||
        break;
 | 
			
		||||
      case POPUP_SEARCH : page_select(); break;
 | 
			
		||||
      case POPUP_NEXT   : if (_page < _book->pages()) _page++; break;
 | 
			
		||||
      case POPUP_LAST   : _page = _book->pages(); break;
 | 
			
		||||
      case POPUP_ZOOMIN : if (_zoom < 300) { _zoom += 25; } break;
 | 
			
		||||
      case POPUP_ZOOMOUT: if (_zoom >  50) { _zoom -= 25; } break;
 | 
			
		||||
      case POPUP_NEXT   : 
 | 
			
		||||
        processed = _page < _book->pages(); 
 | 
			
		||||
        if (processed) _page++; 
 | 
			
		||||
        break;
 | 
			
		||||
      case POPUP_LAST   : 
 | 
			
		||||
        processed = _page < _book->pages(); 
 | 
			
		||||
        if (processed) _page = _book->pages(); 
 | 
			
		||||
        break;
 | 
			
		||||
      case POPUP_ZOOMIN : if (_zoom < 300) { _zoom += 25; update_scroll_range(); } break;
 | 
			
		||||
      case POPUP_ZOOMOUT: if (_zoom >  50) { _zoom -= 25; update_scroll_range(); } break;
 | 
			
		||||
      case POPUP_GRID   : break;
 | 
			
		||||
      default:processed = false; break;
 | 
			
		||||
      }
 | 
			
		||||
@ -184,6 +216,23 @@ void TPrint_preview_window::handler(WINDOW win, EVENT* ep)
 | 
			
		||||
  TField_window::handler(win, ep);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void TPrint_preview_window::do_scroll(int kx, int ky)
 | 
			
		||||
{
 | 
			
		||||
  const TPoint& r = range();
 | 
			
		||||
  TPoint or = origin();
 | 
			
		||||
  or.x += kx * r.x/8;
 | 
			
		||||
  or.y += ky * r.y/6;
 | 
			
		||||
  if (or.x < 0) or.x = 0;
 | 
			
		||||
  if (or.x > r.x) or.x = r.x;
 | 
			
		||||
  if (or.y < 0) or.y = 0;
 | 
			
		||||
  if (or.y > r.y) or.y = r.y;
 | 
			
		||||
  if (or != origin())
 | 
			
		||||
  {
 | 
			
		||||
    update_thumb(or.x, or.y);
 | 
			
		||||
    force_update();
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool TPrint_preview_window::on_key(KEY k)
 | 
			
		||||
{
 | 
			
		||||
  bool ok = true;
 | 
			
		||||
@ -193,10 +242,14 @@ bool TPrint_preview_window::on_key(KEY k)
 | 
			
		||||
  case '-'     : dispatch_e_menu(win(), POPUP_ZOOMOUT); break;
 | 
			
		||||
  case K_HOME  :
 | 
			
		||||
  case K_LHOME : dispatch_e_menu(win(), POPUP_FIRST); break;
 | 
			
		||||
  case K_LEFT  : dispatch_e_menu(win(), POPUP_PREV); break;
 | 
			
		||||
  case K_RIGHT : dispatch_e_menu(win(), POPUP_NEXT); break;
 | 
			
		||||
  case K_PREV  : dispatch_e_menu(win(), POPUP_PREV); break;
 | 
			
		||||
  case K_NEXT  : dispatch_e_menu(win(), POPUP_NEXT); break;
 | 
			
		||||
  case K_END:
 | 
			
		||||
  case K_LEND  : dispatch_e_menu(win(), POPUP_LAST); break;
 | 
			
		||||
  case K_LEFT  : do_scroll(-1, 0); break;
 | 
			
		||||
  case K_RIGHT : do_scroll(+1, 0); break;
 | 
			
		||||
  case K_UP    : do_scroll(0, -1); break;
 | 
			
		||||
  case K_DOWN  : do_scroll(0, +1); break;
 | 
			
		||||
  case 'G'     : 
 | 
			
		||||
  case 'g'     : dispatch_e_menu(win(), POPUP_GRID); break;
 | 
			
		||||
  default      : ok = TField_window::on_key(k); break;
 | 
			
		||||
@ -208,8 +261,7 @@ TPrint_preview_window::TPrint_preview_window(int x, int y, int dx, int dy, WINDO
 | 
			
		||||
                                             TWindowed_field* owner, TBook* book)
 | 
			
		||||
: TField_window(x, y, dx, dy, parent, owner), _book(book), _page(1), _zoom(100)
 | 
			
		||||
{ 
 | 
			
		||||
  RCT rct; xvt_vobj_get_client_rect(win(), &rct);
 | 
			
		||||
  set_scroll_max(rct.right, rct.bottom);
 | 
			
		||||
  update_scroll_range();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
///////////////////////////////////////////////////////////
 | 
			
		||||
@ -1132,11 +1184,9 @@ bool TReport_book::add(TReport& rep)
 | 
			
		||||
  }
 | 
			
		||||
  if (!_print_aborted)
 | 
			
		||||
  {
 | 
			
		||||
    if (max_group >= 2) // Devo stampare tutte le code dei raggrupamenti
 | 
			
		||||
    {
 | 
			
		||||
      for (int g = 2; g <= max_group; g++)
 | 
			
		||||
        _delta.y += print_section('F', g);
 | 
			
		||||
    }
 | 
			
		||||
    // Devo stampare tutte le code degli eventuali raggrupamenti
 | 
			
		||||
    for (int g = max_group; g >= 2 ; g--)
 | 
			
		||||
      _delta.y += print_section('F', g);
 | 
			
		||||
 | 
			
		||||
    TReport_section* fl = _report->find_section('F',1);
 | 
			
		||||
    if (fl != NULL)          // Gestione footer last (se esite)
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user