Patch level : 2.1 50

Files correlati     : ba8
Ricompilazione Demo : [ ]
Commento            :


git-svn-id: svn://10.65.10.50/trunk@12123 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2004-05-27 16:01:00 +00:00
parent a411b609ba
commit 94f7fc2db2
2 changed files with 59 additions and 31 deletions

View File

@ -871,8 +871,8 @@ void TReport_mask::on_print()
#else
TReport_book book;
#endif
book.add(_report);
book.print_or_preview();
if (book.add(_report))
book.print_or_preview();
}
TReport_section& TReport_mask::curr_section()

View File

@ -311,6 +311,7 @@ class TReport_window : public TField_window
RCT _rct_drag;
TArray _clipboard;
TReport_image_cache _images;
protected:
virtual void handler(WINDOW win, EVENT* ep);
@ -447,10 +448,37 @@ void TReport_window::snap_drag(PNT& pnt) const
pnt.v = (pnt.v / ky) * ky;
}
#define POPUP_CUT 20883
#define POPUP_COPY 20884
#define POPUP_PASTE 20885
#define POPUP_DUP 20886
#define POPUP_CLEAR 20887
#define POPUP_PROPERTIES 20888
#define POPUP_NEWFIELD 20889
bool TReport_window::on_key(KEY k)
{
switch (k)
{
case K_LEFT:
offset_selection(TPoint(-50, 0));
force_update();
return true;
case K_RIGHT:
offset_selection(TPoint(+50, 0));
force_update();
return true;
case K_DOWN:
offset_selection(TPoint(0, +50));
force_update();
return true;
case K_UP:
offset_selection(TPoint(0, -50));
force_update();
return true;
case K_DEL:
dispatch_e_menu(win(), POPUP_CUT);
return true;
case K_ENTER:
owner().mask().send_key(K_SPACE, F_FLD_PROPERTIES);
break;
@ -472,14 +500,6 @@ bool TReport_window::on_key(KEY k)
return TField_window::on_key(k);
}
#define POPUP_CUT 20883
#define POPUP_COPY 20884
#define POPUP_PASTE 20885
#define POPUP_DUP 20886
#define POPUP_CLEAR 20887
#define POPUP_PROPERTIES 20888
#define POPUP_NEWFIELD 20889
void TReport_window::popup_menu(EVENT* ep)
{
MENU_ITEM menu[16]; // Stiamo larghi
@ -740,6 +760,34 @@ void TReport_window::draw_grid()
line(0, i*k, max*k, i*k);
line(i*k, 0, i*k, max*k);
}
const TReport_section& rs = curr_section();
int y = rs.height();
if (y <= 0) // Sezione ad altezza variabile
{
for (int i = 0; i < rs.items(); i++)
{
const TReport_field& rf = rs.field(i);
const int fy = rf.get_rect().bottom();
if (fy > y) y = fy;
}
const int mod = y % 100;
if (mod != 0) y += 100-mod;
}
if (y > 0) // Disegna barra di fine sezione
{
const PNT p = log2dev(0, y);
RCT rct; xvt_vobj_get_client_rect(win(), &rct);
if (p.v < rct.bottom)
{
hide_pen();
set_brush(COLOR_LTGRAY, PAT_DIAGCROSS);
rct.top = p.v;
xvt_dwin_draw_rect(win(), &rct);
}
}
}
void TReport_window::draw_broken_paper(const TReport_field& rf)
@ -792,7 +840,7 @@ void TReport_window::draw_field(const TReport_field& rf)
TVariant var;
_report->evaluate(rf.field(), var, _alfafld);
const TString& name = var.as_string();
const TImage* img = _report->image(name);
const TImage* img = _images.image(name);
if (img != NULL && img->ok())
img->draw(win(), r);
advanced_draw_rect(*this, r, rf.border(), rf.fore_color(), COLOR_WHITE);
@ -878,30 +926,10 @@ void TReport_window::update()
draw_grid(); // Disegna griglia
const TReport_section& rs = curr_section();
int y = rs.height();
const bool is_dynamic = y <= 0; // Sezione ad altezza variabile
for (int i = 0; i < rs.items(); i++)
{
const TReport_field& rf = rs.field(i);
draw_field(rf);
if (is_dynamic)
{
const int fy = rf.get_rect().bottom();
if (fy > y) y = fy;
}
}
if (y > 0) // Disegna barra di fine sezione
{
if (is_dynamic)
{
const int mod = y % 100;
if (mod != 0) y += 100-mod;
}
hide_pen();
set_brush(COLOR_LTGRAY, PAT_DIAGCROSS);
bar(0, y, 19600, 6600);
}
}