Patch level : 10.0

Files correlati     : ba8.exe
Ricompilazione Demo : [ ]
Commento            :
Corretta anteprima testi fissi su piu' righe.
Aggiunti controlli su coordinate negative indesiderate nei campi di stampa.


git-svn-id: svn://10.65.10.50/trunk@19556 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2009-11-02 14:53:05 +00:00
parent 70e207f055
commit e258cd5470
4 changed files with 218 additions and 97 deletions

View File

@ -148,7 +148,7 @@ public:
void TReport_sheet::get_row(long r, TToken_string& row)
{
const TReport_field& rf = (const TReport_field&)_section[r];
const TRectangle& rect = rf.get_rect();
const TReport_rct& rect = rf.get_rect();
row = checked(r) ? "X" : " ";
row.add(rf.type_name());
row.add(rf.id());
@ -362,7 +362,7 @@ void TSection_properties_mask::get_section(TReport_section& rs) const
{
if (field(F_X).active())
{
const TPoint pos(get_num(F_X), get_num(F_Y));
const TReport_pnt pos(get_num(F_X), get_num(F_Y));
rs.set_pos(pos);
}
rs.set_width(get_num(F_DX));
@ -861,7 +861,16 @@ void TReport_mask::add_field()
TReport_section& rs = curr_section();
TReport_field* rf = new TReport_field(&rs);
rf->set_type('S');
rf->set_pos(0, rs.compute_size().y+100);
int y = 0;
for (int i = 0; i < rs.items(); i++)
{
const TReport_field& f = rs.field(i);
const int bottom = f.get_rect().bottom();
if (bottom > y)
y = bottom;
}
rf->set_pos(0, y);
TReport_field_mask m(*rf);
m.disable(DLG_DELREC);
if (m.run() == K_ENTER)

View File

@ -704,7 +704,7 @@ void TReport_field_mask::set_field(const TReport_field& rf)
char str[2] = { rf.type(), '\0' };
set(F_TYPE, str, true);
const TRectangle& r = rf.get_rect();
const TReport_rct& r = rf.get_rect();
set(F_ID, rf.id());
set_num(F_X, r.left());
set_num(F_Y, r.top());
@ -834,15 +834,19 @@ class TReport_window : public TField_window
bool _draw_bg;
int _dragging;
TPoint _pt_drag_start;
TReport_pnt _pt_drag_start;
PNT _pt_click, _pt_drag_offset;
RCT _rct_drag;
TReport_image_cache _images;
int _default_row_height;
//int _default_row_height;
static TArray _clipboard;
private:
virtual TPoint dev2log(const PNT& pt) const;
virtual PNT log2dev(long x, long y) const;
protected:
virtual long handler(WINDOW win, EVENT* ep);
virtual void update();
@ -851,8 +855,8 @@ protected:
protected:
void draw_bg();
void draw_grid();
void snap(TPoint& pnt, bool shift) const;
void snap(TRectangle& pnt, bool shift) const;
void snap(TReport_pnt& pnt, bool shift) const;
void snap(TReport_rct& pnt, bool shift) const;
void draw_dragster();
void draw_field(const TReport_field& rf);
void draw_broken_paper(const TReport_field& rf);
@ -868,23 +872,27 @@ protected:
bool advanced_set_draw_tools(PAT_STYLE pat, int border, COLOR fore, COLOR back);
void advanced_draw_rect(const RCT& r, PAT_STYLE pat, int border, COLOR fore, COLOR back, int radius, int shade);
void offset_selection(TReport_section& rs, const TReport_size& p); // low level offset
public:
virtual PNT log2dev(long x, long y) const;
virtual TPoint dev2log(const PNT& pt) const;
PNT rep2dev(const TReport_pnt& pt) const;
void rep2dev(const TReport_rct& rr, RCT& dr) const;
void dev2rep(const RCT& dr, TReport_rct& rr) const;
TReport_pnt dev2rep(const PNT& pt) const;
TReport_section& curr_section() const { return _report->section(_type, _level); }
void set_report_section(TReport_section& rs);
int get_selection_rect(TRectangle& rct) const;
bool pick(const TPoint& ptlog) const;
int get_selection_rect(TReport_rct& rct) const;
bool pick(const TReport_pnt& ptlog) const;
void clear_selection();
bool select(const TRectangle& rct, bool inter);
void offset_selection(const TPoint& p);
void resize_selection(const TPoint& p);
bool select(const TReport_rct& rct, bool inter);
void offset_selection(const TReport_size& p); // safe offset with <0 checking
void resize_selection(const TReport_size& p);
bool test_corner(const RCT& rct, const PNT& pt, PNT& opposite) const;
TReport_field* first_selected() const;
bool add_field(const TRectangle& rct);
bool add_field(const TReport_rct& rct);
TReport_window(int x, int y, int dx, int dy, WINDOW parent, TWindowed_field* owner);
virtual ~TReport_window() { }
@ -902,14 +910,14 @@ void TReport_window::set_report_section(TReport_section& rs)
xvt_pane_set_title(win(), str);
}
bool TReport_window::pick(const TPoint& ptlog) const
bool TReport_window::pick(const TReport_pnt& ptlog) const
{
TReport_section& rs = curr_section();
FOR_EACH_ARRAY_ITEM_BACK(rs, i, o)
{
TReport_field& f = *(TReport_field*)o;
const TRectangle& rct = f.get_rect();
const TReport_rct& rct = f.get_rect();
if (rct.contains(ptlog))
{
f.select();
@ -929,7 +937,7 @@ void TReport_window::clear_selection()
}
}
int TReport_window::get_selection_rect(TRectangle& rct) const
int TReport_window::get_selection_rect(TReport_rct& rct) const
{
TReport_section& rs = curr_section();
int full = 0;
@ -938,7 +946,7 @@ int TReport_window::get_selection_rect(TRectangle& rct) const
const TReport_field& f = *(const TReport_field*)o;
if (f.selected())
{
const TRectangle& fr = f.get_rect();
const TReport_rct& fr = f.get_rect();
if (!full)
rct = fr;
else
@ -949,19 +957,33 @@ int TReport_window::get_selection_rect(TRectangle& rct) const
return full;
}
void TReport_window::offset_selection(const TPoint& p)
void TReport_window::offset_selection(TReport_section& rs, const TReport_size& p)
{
TReport_section& rs = curr_section();
FOR_EACH_ARRAY_ITEM(rs, i, o)
{
TReport_field& f = *(TReport_field*)o;
if (f.selected())
f.offset(p);
}
}
void TReport_window::offset_selection(const TReport_size& p)
{
TReport_section& rs = curr_section();
offset_selection(rs, p);
// Se sposto fuori dal foglio riporto dentro la selezione
TReport_rct selrct; get_selection_rect(selrct);
if (selrct.x < 0 || selrct.y < 0)
{
const TReport_size off(selrct.x < 0 ? -selrct.x : 0, selrct.y < 0 ? -selrct.y : 0);
offset_selection(rs, off);
}
rs.sort();
}
void TReport_window::resize_selection(const TPoint& p)
void TReport_window::resize_selection(const TReport_size& p)
{
TReport_section& rs = curr_section();
FOR_EACH_ARRAY_ITEM(rs, i, o)
@ -969,7 +991,7 @@ void TReport_window::resize_selection(const TPoint& p)
TReport_field& f = *(TReport_field*)o;
if (f.selected())
{
TPoint s = f.get_rect().size(); s += p;
TReport_size s = f.get_rect().size(); s += p;
if (s.x > 0 && s.y > 0)
f.set_size(s.x, s.y);
}
@ -988,7 +1010,7 @@ TReport_field* TReport_window::first_selected() const
return NULL;
}
bool TReport_window::select(const TRectangle& rct, bool inter)
bool TReport_window::select(const TReport_rct& rct, bool inter)
{
bool some = false;
clear_selection();
@ -997,7 +1019,7 @@ bool TReport_window::select(const TRectangle& rct, bool inter)
FOR_EACH_ARRAY_ITEM(rs, i, o)
{
TReport_field& f = *(TReport_field*)o;
const TRectangle& r = f.get_rect();
const TReport_rct& r = f.get_rect();
const bool yes = inter ? rct.intersects(r) : rct.contains(r);
if (yes)
{
@ -1016,7 +1038,7 @@ void TReport_window::draw_dragster()
set_mode(M_COPY);
}
void TReport_window::snap(TPoint& pnt, bool shift) const
void TReport_window::snap(TReport_pnt& pnt, bool shift) const
{
const int kx = shift ? 10 : 100;
const int ky = shift ? 10 : 50;
@ -1024,52 +1046,57 @@ void TReport_window::snap(TPoint& pnt, bool shift) const
pnt.y = ((pnt.y+ky/2) / ky) * ky;
}
void TReport_window::snap(TRectangle& rct, bool shift) const
void TReport_window::snap(TReport_rct& rct, bool shift) const
{
TPoint p0 = rct;
TReport_pnt p0 = rct;
snap(p0, shift);
TPoint p1(rct.right(), rct.bottom());
TReport_pnt p1(rct.right(), rct.bottom());
snap(p1, shift);
p1 -= p0;
rct.set(p0, p1);
rct.set(p0, p1-p0);
}
bool TReport_window::on_key(KEY k)
{
switch (k)
{
case 'G':
dispatch_e_menu(win(), POPUP_UNGROUP);
return true;
case 'g':
dispatch_e_menu(win(), POPUP_GROUP);
return true;
case K_LEFT:
offset_selection(TPoint(-50, 0));
offset_selection(TReport_size(-50, 0));
force_update();
return true;
case K_LEFT+K_SHIFT:
resize_selection(TPoint(-50, 0));
resize_selection(TReport_size(-50, 0));
force_update();
return true;
case K_RIGHT:
offset_selection(TPoint(+50, 0));
offset_selection(TReport_size(+50, 0));
force_update();
return true;
case K_RIGHT+K_SHIFT:
resize_selection(TPoint(+50, 0));
resize_selection(TReport_size(+50, 0));
force_update();
return true;
case K_DOWN:
offset_selection(TPoint(0, +25));
offset_selection(TReport_size(0, +25));
force_update();
return true;
case K_DOWN+K_SHIFT:
resize_selection(TPoint(0, +25));
resize_selection(TReport_size(0, +25));
force_update();
return true;
case K_UP:
offset_selection(TPoint(0, -25));
offset_selection(TReport_size(0, -25));
force_update();
return true;
case K_UP+K_SHIFT:
resize_selection(TPoint(0, -25));
resize_selection(TReport_size(0, -25));
force_update();
return true;
case K_DEL:
@ -1106,10 +1133,10 @@ bool TReport_window::on_key(KEY k)
void TReport_window::popup_menu()
{
MENU_ITEM menu[16]; // Stiamo larghi
MENU_ITEM menu[32]; // Stiamo larghi
memset(menu, 0, sizeof(menu));
TRectangle rct;
TReport_rct rct;
const bool ful = curr_section().items() > 0;
const bool sel = ful && get_selection_rect(rct) != 0;
const bool clp = _clipboard.items() > 0;
@ -1120,20 +1147,22 @@ void TReport_window::popup_menu()
menu[ 2].tag = POPUP_PASTE; menu[ 2].text = (char*)TR("Incolla"); menu[2].enabled = clp;
menu[ 3].tag = POPUP_DUP; menu[ 3].text = (char*)TR("Duplica"); menu[3].enabled = sel;
menu[ 4].tag = POPUP_CLEAR; menu[ 4].text = (char*)TR("Cancella"); menu[4].enabled = sel;
menu[ 5].tag = -1; menu[ 5].separator = true;
menu[ 6].tag = POPUP_ZOOMIN; menu[ 6].text = (char*)TR("Zoom +"); menu[6].enabled = _dpi.v < 300;
menu[ 7].tag = POPUP_ZOOMOUT; menu[ 7].text = (char*)TR("Zoom -"); menu[7].enabled = _dpi.v > 48;
menu[ 8].tag = POPUP_BACKGROUND; menu[ 8].text = (char*)TR("Mostra sfondo");
menu[ 8].enabled = menu[8].checkable = sbg; menu[8].checked = sbg && _draw_bg;
menu[ 9].tag = -1; menu[ 9].separator = true;
menu[10].tag = POPUP_SELALL; menu[10].text = (char*)TR("Seleziona tutto"); menu[10].enabled = ful;
menu[11].tag = POPUP_UNSELALL; menu[11].text = (char*)TR("Deseleziona tutto"); menu[11].enabled = ful;
menu[12].tag = -1; menu[12].separator = true;
menu[13].tag = POPUP_PROPERTIES; menu[13].text = "Proprieta'"; menu[13].enabled = true;
menu[14].tag = POPUP_NEWFIELD; menu[14].text = "Nuovo"; menu[14].enabled = true;
menu[ 5].tag = POPUP_GROUP; menu[ 5].text = (char*)TR("Raggruppa");menu[5].enabled = sel;
menu[ 6].tag = POPUP_UNGROUP; menu[ 6].text = (char*)TR("Dividi"); menu[6].enabled = sel;
menu[ 7].tag = -1; menu[ 7].separator = true;
menu[ 8].tag = POPUP_ZOOMIN; menu[ 8].text = (char*)TR("Zoom +"); menu[8].enabled = _dpi.v < 300;
menu[ 9].tag = POPUP_ZOOMOUT; menu[ 9].text = (char*)TR("Zoom -"); menu[9].enabled = _dpi.v > 48;
menu[10].tag = POPUP_BACKGROUND; menu[10].text = (char*)TR("Mostra sfondo");
menu[10].enabled = menu[10].checkable = sbg; menu[10].checked = sbg && _draw_bg;
menu[11].tag = -1; menu[11].separator = true;
menu[12].tag = POPUP_SELALL; menu[12].text = (char*)TR("Seleziona tutto"); menu[12].enabled = ful;
menu[13].tag = POPUP_UNSELALL; menu[13].text = (char*)TR("Deseleziona tutto"); menu[13].enabled = ful;
menu[14].tag = -1; menu[14].separator = true;
menu[15].tag = POPUP_PROPERTIES; menu[15].text = "Proprieta'"; menu[15].enabled = true;
menu[16].tag = POPUP_NEWFIELD; menu[16].text = "Nuovo"; menu[16].enabled = true;
_pt_drag_start = dev2log(_pt_click);
_pt_drag_start = dev2rep(_pt_click);
xvt_menu_popup(menu, win(), _pt_click, XVT_POPUP_CENTER, 0);
}
@ -1174,19 +1203,25 @@ void TReport_window::popup_paste()
{
if (_clipboard.items() > 0)
{
const TRectangle& rct = ((TReport_field&)_clipboard[0]).get_rect();
const TPoint off(_pt_drag_start.x-rct.left(), _pt_drag_start.y-rct.top());
clear_selection();
TReport_section& rs = curr_section();
FOR_EACH_ARRAY_ITEM(_clipboard, i, o)
const TReport_rct& rct = ((const TReport_field&)_clipboard[0]).get_rect();
TReport_pnt diff(_pt_drag_start.x-rct.left(), _pt_drag_start.y-rct.top());
snap(diff, false);
if (diff.x != 0 || diff.y != 0)
{
const TReport_field& oldf = *(TReport_field*)o;
TReport_field* newf = new TReport_field(oldf);
newf->select();
newf->offset(off);
rs.add(newf);
clear_selection();
TReport_section& rs = curr_section();
FOR_EACH_ARRAY_ITEM(_clipboard, i, o)
{
const TReport_field& oldf = *(TReport_field*)o;
TReport_field* newf = new TReport_field(oldf);
newf->select();
rs.add(newf);
}
offset_selection(TReport_size(diff.x, diff.y));
force_update();
}
force_update();
}
}
@ -1245,7 +1280,7 @@ bool TReport_window::do_zoom(int k, bool reflect)
return ok;
}
bool TReport_window::add_field(const TRectangle& rct)
bool TReport_window::add_field(const TReport_rct& rct)
{
TReport_section& rs = curr_section();
TReport_field* rf = new TReport_field(&rs);
@ -1280,8 +1315,8 @@ long TReport_window::handler(WINDOW win, EVENT* ep)
{
case 0:
{
const TPoint pt = dev2log(_pt_click);
TRectangle rct;
const TReport_pnt pt = dev2rep(_pt_click);
TReport_rct rct;
int full = get_selection_rect(rct);
if (!full || !rct.contains(pt))
{
@ -1292,7 +1327,7 @@ long TReport_window::handler(WINDOW win, EVENT* ep)
}
if (full > 0)
{
TWindow::log2dev(rct, _rct_drag);
rep2dev(rct, _rct_drag);
if (full == 1 && test_corner(_rct_drag, ep->v.mouse.where, _pt_drag_offset))
{
@ -1333,9 +1368,9 @@ long TReport_window::handler(WINDOW win, EVENT* ep)
case E_MOUSE_MOVE:
{
TMask& m = owner().mask();
const TPoint p = dev2log(ep->v.mouse.where);
const TReport_pnt p = dev2rep(ep->v.mouse.where);
TString16 str; str.format("r:%3d c:%3d", p.y/100, p.x/100);
TString16 str; str.format("r:%5.1lf c:%5.1lf", p.y/100.0, p.x/100.0);
statbar_set_title(TASK_WIN, str);
if (_dragging != 0)
@ -1377,7 +1412,7 @@ long TReport_window::handler(WINDOW win, EVENT* ep)
{
_rct_drag.right = pt.h;
_rct_drag.bottom = pt.v;
TRectangle rct; TWindow::dev2log(_rct_drag, rct);
TReport_rct rct; dev2rep(_rct_drag, rct);
const bool something = select(rct, pt.h < _rct_drag.left);
if (!something && ep->v.mouse.control)
add_field(rct);
@ -1387,17 +1422,17 @@ long TReport_window::handler(WINDOW win, EVENT* ep)
{
pt.h -= _pt_drag_offset.h;
pt.v -= _pt_drag_offset.v;
TPoint offset = dev2log(pt);
TReport_pnt offset = dev2rep(pt);
snap(offset, ep->v.mouse.shift != 0);
offset.x -= _pt_drag_start.x;
offset.y -= _pt_drag_start.y;
offset_selection(offset);
offset_selection(TReport_size(offset.x, offset.y));
}
break;
case 3:
{
TReport_field* rf = first_selected();
TRectangle rct; TWindow::dev2log(_rct_drag, rct);
TReport_rct rct; dev2rep(_rct_drag, rct);
snap(rct, ep->v.mouse.shift != 0);
rf->set_pos(rct.x, rct.y);
rf->set_size(rct.width(), rct.height());
@ -1414,6 +1449,7 @@ long TReport_window::handler(WINDOW win, EVENT* ep)
}
break;
case E_MOUSE_DBL:
_pt_drag_start = dev2rep(ep->v.mouse.where);
dispatch_e_menu(win, POPUP_PROPERTIES);
break;
case E_COMMAND:
@ -1475,6 +1511,34 @@ long TReport_window::handler(WINDOW win, EVENT* ep)
case POPUP_NEWFIELD:
dispatch_e_menu(parent(), POPUP_NEWFIELD);
break;
case POPUP_GROUP:
case POPUP_UNGROUP:
{
TToken_string gruppi(16, ' ');
xvt_dm_post_string_prompt(TR("Codice gruppo"), gruppi.get_buffer(), gruppi.size());
gruppi.strip_double_spaces(); gruppi.trim();
if (gruppi.full())
{
if (isdigit(gruppi[0]))
{
TReport_section& rs = curr_section();
FOR_EACH_ARRAY_ITEM(rs, i, o)
{
TReport_field& f = *(TReport_field*)o;
if (f.selected())
{
if (ep->v.cmd.tag == POPUP_GROUP)
f.add_groups(gruppi);
else
f.del_groups(gruppi);
}
}
}
else
error_box(TR("Codice gruppo non numerico"));
}
}
break;
default:
break;
}
@ -1498,10 +1562,10 @@ long TReport_window::handler(WINDOW win, EVENT* ep)
return TField_window::handler(win, ep);
}
PNT TReport_window::log2dev(long x, long y) const
{
x -= origin().x * 100L;
y -= origin().y * 100L;
PNT TReport_window::log2dev(long rx, long ry) const
{
const int x = rx - origin().x * 100L;
const int y = ry - origin().y * 100L;
PNT p;
p.h = short((x * _dpi.h) / (cpi() * 100L));
p.v = short((y * _dpi.v) / (lpi() * 100L));
@ -1509,7 +1573,7 @@ PNT TReport_window::log2dev(long x, long y) const
}
TPoint TReport_window::dev2log(const PNT& pt) const
{
{
TPoint p;
p.x = pt.h * 100L * cpi() / _dpi.h;
p.y = pt.v * 100L * lpi() / _dpi.v;
@ -1518,6 +1582,34 @@ TPoint TReport_window::dev2log(const PNT& pt) const
return p;
}
PNT TReport_window::rep2dev(const TReport_pnt& pt) const
{
return log2dev(pt.x, pt.y);
}
TReport_pnt TReport_window::dev2rep(const PNT& pt) const
{
const TPoint p = dev2log(pt);
return TReport_pnt(p.x, p.y);
}
void TReport_window::dev2rep(const RCT& dr, TReport_rct& rr) const
{
const PNT dp0 = { dr.top, dr.left };
const PNT dp1 = { dr.bottom, dr.right };
const TReport_pnt p0 = dev2rep(dp0);
const TReport_pnt p1 = dev2rep(dp1);
rr.set(p0, p1-p0);
}
void TReport_window::rep2dev(const TReport_rct& rr, RCT& dr) const
{
const PNT dp0 = rep2dev(rr);
const PNT dp1 = rep2dev(TReport_pnt(rr.right(), rr.bottom()));
xvt_rect_set(&dr, dp0.h, dp0.v, dp1.h, dp1.v);
}
bool TReport_window::advanced_set_draw_tools(PAT_STYLE pat, int border, COLOR fore, COLOR back)
{
const bool has_pen = border > 0;
@ -1580,7 +1672,7 @@ void TReport_window::draw_grid()
for (int i = 0; i < rs.items(); i++)
{
const TReport_field& rf = rs.field(i);
const TRectangle& rct = rf.get_rect();
const TReport_rct& rct = rf.get_rect();
const int fy = rct.bottom();
if (fy > y) y = fy;
}
@ -1596,13 +1688,13 @@ void TReport_window::draw_grid()
|| (rs.pattern() >= PAT_SOLID && rs.back_color() != COLOR_WHITE));
if (draw_back)
{
const PNT p = log2dev(x, y);
const PNT p = rep2dev(TReport_pnt(x, y));
RCT rct; xvt_rect_set(&rct, 0, 0, p.h, p.v);
int rad = 0;
if (rs.radius() > 0)
{
const PNT p0 = log2dev(0,0);
const PNT pr = log2dev(rs.radius(),rs.radius());
const PNT p0 = rep2dev(TReport_pnt(0,0));
const PNT pr = rep2dev(TReport_pnt(rs.radius(),rs.radius()));
rad = min(pr.h-p0.h, pr.v-p0.v);
}
advanced_draw_rect(rct, rs.pattern(), rs.border(), rs.fore_color(), rs.back_color(), rad, 0);
@ -1617,7 +1709,7 @@ void TReport_window::draw_grid()
if (y > 0) // Disegna barra di fine sezione
{
const PNT p = log2dev(x, y);
const PNT p = rep2dev(TReport_pnt(x, y));
RCT rct; xvt_vobj_get_client_rect(win(), &rct);
if (p.v < rct.bottom)
{
@ -1632,7 +1724,7 @@ void TReport_window::draw_grid()
void TReport_window::draw_broken_paper(const TReport_field& rf)
{
set_pen(COLOR_LTGRAY);
const TRectangle& dr = rf.get_rect();
const TReport_rct& dr = rf.get_rect();
const int b = dr.bottom()-100;
line(short(dr.x), short(b), short(dr.x), short(dr.y));
line(short(dr.x), short(dr.y), short(dr.right()), short(dr.y));
@ -1655,7 +1747,8 @@ void TReport_window::draw_broken_paper(const TReport_field& rf)
void TReport_window::draw_field(const TReport_field& rf)
{
RCT r; TWindow::log2dev(rf.get_rect(), r);
const TReport_rct& rf_rect = rf.get_rect();
RCT r; rep2dev(rf_rect, r);
int rad = 0;
if (rf.radius() > 0)
@ -1715,11 +1808,29 @@ void TReport_window::draw_field(const TReport_field& rf)
case 'T':
{
advanced_draw_rect(r, rf.pattern(), rf.border(), rf.fore_color(), rf.back_color(), rad, off);
xvt_dwin_set_font(win(), rf.font().get_xvt_font(*this));
set_color(rf.fore_color(), rf.back_color());
TString str = rf.picture();
advanced_draw_text_line(win(), str, r, rf.horizontal_alignment(), rf.vertical_alignment());
const TString& str = rf.picture();
if (str.full())
{
bool printed = false;
xvt_dwin_set_font(win(), rf.font().get_xvt_font(*this));
set_color(rf.fore_color(), rf.back_color());
if (rf_rect.height() > 100 && rf_rect.width() > 100)
{
TParagraph_string para(str, rf_rect.width()/100);
if (para.items() > 1)
{
TString_array text;
FOR_EACH_TOKEN(para, line)
text.add(line);
const int d10rh = (r.bottom-r.top)*1000/rf_rect.height(); // Altezza standard di 10 righe di testo
advanced_draw_paragraph(win(), text, r, rf.horizontal_alignment(), rf.vertical_alignment(), d10rh);
printed = true;
}
}
if (!printed)
advanced_draw_text_line(win(), str, r, rf.horizontal_alignment(), rf.vertical_alignment());
}
}
break;
default :
@ -1811,7 +1922,6 @@ void TReport_window::draw_bg()
update_thumb(origin().x, origin().y - offset_y);
}
}
}
void TReport_window::update()
@ -1820,9 +1930,9 @@ void TReport_window::update()
draw_bg();
draw_grid(); // Disegna griglia
const TRectangle rect_riga(0,0,1000,100);
RCT rct_riga; TWindow::log2dev(rect_riga, rct_riga);
_default_row_height = rct_riga.bottom - rct_riga.top;
//const TReport_rct rect_riga(0,0,1000,100);
//RCT rct_riga; rep2dev(rect_riga, rct_riga);
//_default_row_height = rct_riga.bottom - rct_riga.top;
const TReport_section& rs = curr_section();
for (int i = 0; i < rs.items(); i++)

View File

@ -133,5 +133,7 @@ short str2num(const TString& str);
#define POPUP_PROPERTIES 20893
#define POPUP_NEWFIELD 20894
#define POPUP_SECTION 20895
#define POPUP_GROUP 20896
#define POPUP_UNGROUP 20897
#endif

View File

@ -422,7 +422,7 @@ void TFormer_mask::import_sections(TScanner& scan, TReport& rep)
{
if (type == 'F')
{
const TPoint abolute_footer_pos(0, -height);
const TReport_pnt abolute_footer_pos(0, -height);
cur_sec.set_pos(abolute_footer_pos);
}
}