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:
guy 2004-05-28 13:48:41 +00:00
parent 108b0b8ac6
commit fe2e1eb01e
3 changed files with 89 additions and 30 deletions

@ -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)