Patch level : 2.1 nopatch
Files correlati : Ricompilazione Demo : [ ] Commento : git-svn-id: svn://10.65.10.50/trunk@12125 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
		
							parent
							
								
									94f7fc2db2
								
							
						
					
					
						commit
						0af9c76914
					
				@ -550,6 +550,7 @@ void TSection_properties_mask::vedo_non_vedo()
 | 
			
		||||
  show(F_GROUP_BY, type == 'H' && level > 1);
 | 
			
		||||
  show(F_KEEP_WITH_NEXT, level > 1 && type == 'H');
 | 
			
		||||
  show(F_HIDE_IF_NEEDED, level == 0 && type != 'B');
 | 
			
		||||
  show(F_REPEAT, level > 1 && type == 'H');
 | 
			
		||||
  enable(DLG_DELREC, level > 1);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -592,12 +593,12 @@ void TSection_properties_mask::set_section(const TReport_section& rs)
 | 
			
		||||
  set(F_CONDITION, rs.condition());
 | 
			
		||||
  set(F_GROUP_BY, rs.grouped_by());
 | 
			
		||||
 | 
			
		||||
  set(F_HIDE_IF_NEEDED, rs.hidden_if_needed() ? "X" : "");
 | 
			
		||||
  set(F_HIDDEN, rs.hidden() ? "X" : "");
 | 
			
		||||
  set(F_HIDE_IF_NEEDED, rs.hidden_if_needed());
 | 
			
		||||
  set(F_HIDDEN, rs.hidden());
 | 
			
		||||
  set(F_PAGE_BREAK, rs.page_break());
 | 
			
		||||
  set(F_KEEP_WITH_NEXT, rs.keep_with_next());
 | 
			
		||||
 | 
			
		||||
  set(F_DISABLED, rs.deactivated() ? "X" : "");
 | 
			
		||||
  set(F_REPEAT, rs.repeat_on_page());
 | 
			
		||||
  set(F_DISABLED, rs.deactivated());
 | 
			
		||||
 | 
			
		||||
  set_font_info(rs.font());
 | 
			
		||||
  set(F_PRESCRIPT, rs.prescript());
 | 
			
		||||
@ -623,6 +624,7 @@ void TSection_properties_mask::get_section(TReport_section& rs) const
 | 
			
		||||
  rs.hide_if_needed(get_bool(F_HIDE_IF_NEEDED));
 | 
			
		||||
  rs.force_page_break(get_bool(F_PAGE_BREAK));
 | 
			
		||||
  rs.keep_with_next(get_bool(F_KEEP_WITH_NEXT));
 | 
			
		||||
  rs.set_repeat_on_page(get_bool(F_REPEAT));
 | 
			
		||||
 | 
			
		||||
  TReport_font f;
 | 
			
		||||
  if (get_font_info(f))
 | 
			
		||||
 | 
			
		||||
@ -44,6 +44,7 @@
 | 
			
		||||
#define F_PAGE_BREAK     163
 | 
			
		||||
#define F_KEEP_WITH_NEXT 164
 | 
			
		||||
#define F_CONDITION      165
 | 
			
		||||
#define F_REPEAT         166
 | 
			
		||||
 | 
			
		||||
#define F_SQL            201
 | 
			
		||||
#define F_IMPORT_QRY     202
 | 
			
		||||
 | 
			
		||||
@ -68,6 +68,14 @@ BEGIN
 | 
			
		||||
  FLAGS "H"
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
BOOLEAN F_REPEAT
 | 
			
		||||
BEGIN
 | 
			
		||||
  // Visibile per testate di livello > 1
 | 
			
		||||
  PROMPT 1 6 "Ripeti sezione ad inizio pagina"
 | 
			
		||||
  FLAGS "H"
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
MEMO F_CONDITION 48 3
 | 
			
		||||
BEGIN
 | 
			
		||||
  // Visibile sezioni con livello > 0
 | 
			
		||||
 | 
			
		||||
@ -343,6 +343,7 @@ public:
 | 
			
		||||
  void clear_selection();
 | 
			
		||||
  void select(const TRectangle& rct);
 | 
			
		||||
  void offset_selection(const TPoint& p);
 | 
			
		||||
  void resize_selection(const TPoint& p);
 | 
			
		||||
 | 
			
		||||
  void set_report(TReport* rep) { _report = rep; }
 | 
			
		||||
 | 
			
		||||
@ -419,6 +420,21 @@ void TReport_window::offset_selection(const TPoint& p)
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void TReport_window::resize_selection(const TPoint& p)
 | 
			
		||||
{
 | 
			
		||||
  TReport_section& rs = curr_section();
 | 
			
		||||
  FOR_EACH_ARRAY_ITEM(rs, i, o)
 | 
			
		||||
  {
 | 
			
		||||
    TReport_field& f = *(TReport_field*)o;
 | 
			
		||||
    if (f.selected())
 | 
			
		||||
    {
 | 
			
		||||
      TPoint s = f.get_rect().size(); s += p;
 | 
			
		||||
      if (s.x > 0 && s.y > 0)
 | 
			
		||||
        f.set_size(s.x, s.y);
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void TReport_window::select(const TRectangle& rct) 
 | 
			
		||||
{
 | 
			
		||||
  clear_selection();
 | 
			
		||||
@ -443,7 +459,7 @@ void TReport_window::draw_dragster()
 | 
			
		||||
void TReport_window::snap_drag(PNT& pnt) const
 | 
			
		||||
{
 | 
			
		||||
  const int kx = _dpi.h / cpi();
 | 
			
		||||
  const int ky = _dpi.v / lpi();
 | 
			
		||||
  const int ky = _dpi.v / (lpi()*2);
 | 
			
		||||
  pnt.h = (pnt.h / kx) * kx;
 | 
			
		||||
  pnt.v = (pnt.v / ky) * ky;
 | 
			
		||||
}
 | 
			
		||||
@ -461,21 +477,37 @@ bool TReport_window::on_key(KEY k)
 | 
			
		||||
  switch (k)
 | 
			
		||||
  {
 | 
			
		||||
  case K_LEFT:
 | 
			
		||||
    offset_selection(TPoint(-50, 0));
 | 
			
		||||
    offset_selection(TPoint(-100, 0));
 | 
			
		||||
    force_update();
 | 
			
		||||
    return true;
 | 
			
		||||
  case K_LEFT+K_SHIFT:
 | 
			
		||||
    resize_selection(TPoint(-100, 0));
 | 
			
		||||
    force_update();
 | 
			
		||||
    return true;
 | 
			
		||||
  case K_RIGHT:
 | 
			
		||||
    offset_selection(TPoint(+50, 0));
 | 
			
		||||
    offset_selection(TPoint(+100, 0));
 | 
			
		||||
    force_update();
 | 
			
		||||
    return true;
 | 
			
		||||
  case K_RIGHT+K_SHIFT:
 | 
			
		||||
    resize_selection(TPoint(+100, 0));
 | 
			
		||||
    force_update();
 | 
			
		||||
    return true;
 | 
			
		||||
  case K_DOWN:
 | 
			
		||||
    offset_selection(TPoint(0, +50));
 | 
			
		||||
    force_update();
 | 
			
		||||
    return true;
 | 
			
		||||
  case K_DOWN+K_SHIFT:
 | 
			
		||||
    resize_selection(TPoint(0, +100));
 | 
			
		||||
    force_update();
 | 
			
		||||
    return true;
 | 
			
		||||
  case K_UP:  
 | 
			
		||||
    offset_selection(TPoint(0, -50));
 | 
			
		||||
    force_update();
 | 
			
		||||
    return true;
 | 
			
		||||
  case K_UP+K_SHIFT:
 | 
			
		||||
    resize_selection(TPoint(0, -100));
 | 
			
		||||
    force_update();
 | 
			
		||||
    return true;
 | 
			
		||||
  case K_DEL:  
 | 
			
		||||
    dispatch_e_menu(win(), POPUP_CUT);
 | 
			
		||||
    return true;
 | 
			
		||||
@ -860,10 +892,13 @@ void TReport_window::draw_field(const TReport_field& rf)
 | 
			
		||||
    advanced_draw_rect(*this, r, rf.border(), rf.fore_color(), rf.back_color());
 | 
			
		||||
    break;
 | 
			
		||||
  case 'T': 
 | 
			
		||||
    advanced_draw_rect(*this, r, rf.border(), rf.fore_color(), rf.back_color());
 | 
			
		||||
    xvt_dwin_set_font(win(), rf.font().get_xvt_font(*this));
 | 
			
		||||
    set_color(rf.fore_color(), rf.back_color());
 | 
			
		||||
    advanced_draw_text(*this, rf.picture(), r, rf.horizontal_alignment(), rf.vertical_alignment()); 
 | 
			
		||||
    {
 | 
			
		||||
      advanced_draw_rect(*this, r, rf.border(), rf.fore_color(), rf.back_color());
 | 
			
		||||
      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_paragraph(*this, str, r, rf.horizontal_alignment(), rf.vertical_alignment()); 
 | 
			
		||||
    }
 | 
			
		||||
    break;
 | 
			
		||||
  default : 
 | 
			
		||||
    if (rf.dynamic_height())
 | 
			
		||||
@ -896,7 +931,7 @@ void TReport_window::draw_field(const TReport_field& rf)
 | 
			
		||||
      str << rf.id();
 | 
			
		||||
    else
 | 
			
		||||
      str = rf.field();
 | 
			
		||||
    advanced_draw_text(*this, str, r, rf.horizontal_alignment(), rf.vertical_alignment()); 
 | 
			
		||||
    advanced_draw_paragraph(*this, str, r, rf.horizontal_alignment(), rf.vertical_alignment()); 
 | 
			
		||||
    break;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -370,6 +370,52 @@ void advanced_draw_text(TWindow& win, const char* text, const RCT& r,
 | 
			
		||||
    xvt_dwin_draw_text(win.win(), x, y, text, -1);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void advanced_draw_paragraph(TWindow& win, TString& para, const RCT& rct, 
 | 
			
		||||
                             char halign, char valign)
 | 
			
		||||
{
 | 
			
		||||
  const bool acapo = para.find('\n') >= 0;
 | 
			
		||||
  const bool parag = para.find(char(0xB6)) >= 0;
 | 
			
		||||
 | 
			
		||||
  if (acapo || parag) // Devo scrivere piu' righe?
 | 
			
		||||
  {
 | 
			
		||||
    int leading, ascent, descent;
 | 
			
		||||
    xvt_dwin_get_font_metrics(win.win(), &leading, &ascent, &descent);
 | 
			
		||||
    const int kx = xvt_dwin_get_text_width(win.win(), "ABCDEFGH", 8) / 8; 
 | 
			
		||||
    const int ky = leading + ascent + descent;
 | 
			
		||||
 | 
			
		||||
    const int rct_height = rct.bottom - rct.top;
 | 
			
		||||
    const unsigned columns = (rct.right - rct.left) / kx;
 | 
			
		||||
    int rows = rct_height / ky;
 | 
			
		||||
 | 
			
		||||
    if (parag)
 | 
			
		||||
      para.replace(char('0xB6'), '\n');
 | 
			
		||||
    TParagraph_string str(para, columns);
 | 
			
		||||
    if (str.items() < rows)
 | 
			
		||||
      rows = str.items();
 | 
			
		||||
 | 
			
		||||
    int ybase = rct.top;
 | 
			
		||||
    switch (valign)
 | 
			
		||||
    {
 | 
			
		||||
    case 'C': ybase += (rct_height - rows*ky) / 2; break;
 | 
			
		||||
    case 'B': ybase += rct_height - rows*ky; break;
 | 
			
		||||
    default : break;
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    for (int row = 0; row < rows; row++)
 | 
			
		||||
    {
 | 
			
		||||
      RCT rctline = rct;
 | 
			
		||||
      rctline.top = ybase + ky*row;
 | 
			
		||||
      rctline.bottom = rctline.top + ky;
 | 
			
		||||
      const char* line = str.get();
 | 
			
		||||
      if (halign == 'J' && (row == rows-1 || strlen(line) < columns/2))
 | 
			
		||||
        halign = 'L';
 | 
			
		||||
      advanced_draw_text(win, line, rctline, halign, 'T'); 
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  else
 | 
			
		||||
    advanced_draw_text(win, para, rct, halign, valign); 
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void set_num_attr(TXmlItem& item, const char* attr, long num, short def = 0)
 | 
			
		||||
{
 | 
			
		||||
  if (num != def)
 | 
			
		||||
@ -630,6 +676,7 @@ void TReport_section::save(TXmlItem& root) const
 | 
			
		||||
  item.SetAttr("hidden_if_needed", hidden_if_needed());
 | 
			
		||||
  item.SetAttr("pagebreak", _page_break);
 | 
			
		||||
  item.SetAttr("keep_with_next", keep_with_next());
 | 
			
		||||
  item.SetAttr("repeat", repeat_on_page());
 | 
			
		||||
  if (condition().not_empty())
 | 
			
		||||
    item.AddChild("condition") << condition();
 | 
			
		||||
  if (grouped_by().not_empty())
 | 
			
		||||
@ -655,6 +702,7 @@ void TReport_section::load(const TXmlItem& sec)
 | 
			
		||||
  force_page_break(sec.GetBoolAttr("pagebreak"));
 | 
			
		||||
  keep_with_next(sec.GetBoolAttr("keep_with_next"));
 | 
			
		||||
  hide_if_needed(sec.GetBoolAttr("hidden_if_needed"));
 | 
			
		||||
  set_repeat_on_page(sec.GetBoolAttr("repeat"));
 | 
			
		||||
  show(!sec.GetBoolAttr("hidden"));
 | 
			
		||||
  activate(!sec.GetBoolAttr("deactivated"));
 | 
			
		||||
 | 
			
		||||
@ -702,7 +750,8 @@ void TReport_section::load(const TXmlItem& sec)
 | 
			
		||||
 | 
			
		||||
TReport_section::TReport_section(TReport& r, char t, int l) 
 | 
			
		||||
               : _report(r), _type(t), _level(l), _font(NULL), 
 | 
			
		||||
                 _size(0,0), _pos(0,0), _page_break(false), _hidden_if_needed(false),
 | 
			
		||||
                 _size(0,0), _pos(0,0), 
 | 
			
		||||
                 _page_break(false), _hidden_if_needed(false), _repeat(false),
 | 
			
		||||
                 _hidden(false), _deactivated(false)
 | 
			
		||||
{ }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -147,7 +147,7 @@ class TReport_section : public TArray
 | 
			
		||||
  TPoint _pos;  // Posizione assoluta in centesimi, default (0,0)
 | 
			
		||||
  TPoint _size; // Dimensioni in centesimi, default (0,0) 
 | 
			
		||||
  TString _condition, _groupby;
 | 
			
		||||
  bool _page_break, _hidden_if_needed, _keep_with_next;
 | 
			
		||||
  bool _page_break, _hidden_if_needed, _keep_with_next, _repeat;
 | 
			
		||||
  bool _hidden, _deactivated;
 | 
			
		||||
  TReport_script _prescript, _postscript;
 | 
			
		||||
 | 
			
		||||
@ -178,9 +178,10 @@ public:
 | 
			
		||||
  bool compute_rect(TRectangle& rct) const;
 | 
			
		||||
  const TPoint& pos() const { return _pos; }
 | 
			
		||||
  void set_pos(const TPoint& p) { _pos = p; }
 | 
			
		||||
 | 
			
		||||
  bool page_break() const { return _page_break; }
 | 
			
		||||
  void force_page_break(bool pb) { _page_break = pb; }
 | 
			
		||||
  void set_repeat_on_page(bool r) { _repeat = r; }
 | 
			
		||||
  bool repeat_on_page() const { return _repeat; }
 | 
			
		||||
 | 
			
		||||
  const TString& condition() const { return _condition; }
 | 
			
		||||
  void set_condition(const char* str) { _condition = str; }
 | 
			
		||||
@ -356,7 +357,6 @@ public:
 | 
			
		||||
 | 
			
		||||
//  virtual void draw_rect(TWindow& win) const;
 | 
			
		||||
//  virtual void draw_text(TWindow& win, const char* text, TReport_draw_mode mode) const;
 | 
			
		||||
  
 | 
			
		||||
//  virtual void draw(TWindow& win, TReport_draw_mode mode) const;
 | 
			
		||||
 | 
			
		||||
  virtual bool print_tools(TBook& book) const;
 | 
			
		||||
@ -495,5 +495,7 @@ bool advanced_set_draw_tools(TWindow& win, int border, COLOR fore, COLOR back);
 | 
			
		||||
void advanced_draw_rect(TWindow& win, const RCT& r, int border, COLOR fore, COLOR back);
 | 
			
		||||
void advanced_draw_text(TWindow& win, const char* text, const RCT& r, 
 | 
			
		||||
                        char halign, char valign);
 | 
			
		||||
void advanced_draw_paragraph(TWindow& win, TString& text, const RCT& r, 
 | 
			
		||||
                             char halign, char valign);
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
@ -117,7 +117,7 @@ void TPrint_preview_window::popup_menu(EVENT* ep)
 | 
			
		||||
  menu[5].tag = POPUP_ZOOMIN;  menu[5].text = (char*)TR("Zoom +");   menu[5].enabled = _zoom < 300;
 | 
			
		||||
  menu[6].tag = POPUP_ZOOMOUT; menu[6].text = (char*)TR("Zoom -");   menu[6].enabled = _zoom > 50;
 | 
			
		||||
  menu[7].tag = -1;            menu[7].separator = true;
 | 
			
		||||
  menu[8].tag = POPUP_GRID;    menu[8].text = (char*)TR("Griglia");  menu[8].enabled = true; 
 | 
			
		||||
  menu[8].tag = POPUP_GRID;    menu[8].text = (char*)TR("Griglia");  menu[8].enabled = false; 
 | 
			
		||||
                               menu[8].checkable = true;             menu[8].checked = false;
 | 
			
		||||
 | 
			
		||||
  const PNT& p = ep->v.mouse.where;
 | 
			
		||||
@ -667,7 +667,7 @@ bool TBook::print_page(TWindow& win, size_t page)
 | 
			
		||||
          break;
 | 
			
		||||
        stringona << str;
 | 
			
		||||
      }
 | 
			
		||||
      advanced_draw_text(win, stringona, rct, _horizontal_alignment, _vertical_alignment);
 | 
			
		||||
      advanced_draw_paragraph(win, stringona, rct, _horizontal_alignment, _vertical_alignment);
 | 
			
		||||
      continue;
 | 
			
		||||
    }
 | 
			
		||||
    if (str.starts_with("<text_align"))
 | 
			
		||||
@ -792,7 +792,7 @@ bool TBook::preview()
 | 
			
		||||
{
 | 
			
		||||
  TPreview_mask msk(this);
 | 
			
		||||
  const KEY k = msk.run();
 | 
			
		||||
  if (k ==  ' ')
 | 
			
		||||
  if (k !=  K_QUIT)
 | 
			
		||||
    print();
 | 
			
		||||
  return true;
 | 
			
		||||
}
 | 
			
		||||
@ -841,7 +841,6 @@ TPoint TReport_book::log2dev(const TPoint& ptlog) const
 | 
			
		||||
  TPoint ptdev;
 | 
			
		||||
  ptdev.x = (ptlog.x * _phr) / (100 * _report->cpi());
 | 
			
		||||
  ptdev.y = (ptlog.y * _pvr) / (100 * _report->lpi());
 | 
			
		||||
 | 
			
		||||
  return ptdev;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -849,7 +848,6 @@ void TReport_book::define_frame(const TRectangle& r)
 | 
			
		||||
{
 | 
			
		||||
  TPoint ptlog = r; ptlog += _delta;
 | 
			
		||||
  TPoint szlog = r.size();
 | 
			
		||||
 | 
			
		||||
  const TRectangle rect(log2dev(ptlog), log2dev(szlog));
 | 
			
		||||
  TBook::define_frame(rect);
 | 
			
		||||
}
 | 
			
		||||
@ -942,6 +940,24 @@ void TReport_book::create_links(const TReport_section& rs)
 | 
			
		||||
*/
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void TReport_book::reprint_group_headers()
 | 
			
		||||
{
 | 
			
		||||
  const int max_group = _report->find_max_level('H');
 | 
			
		||||
  for (int level = max_group; level >= 2; level--)
 | 
			
		||||
  {
 | 
			
		||||
    TReport_section& rs = _report->section('H', level);
 | 
			
		||||
    if (rs.repeat_on_page())
 | 
			
		||||
    {
 | 
			
		||||
      const long height = rs.compute_size().y; // Compute size after the initilization script!
 | 
			
		||||
      if (height > 0)
 | 
			
		||||
      {
 | 
			
		||||
        rs.print(*this);
 | 
			
		||||
        _delta.y += height;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
long TReport_book::print_section(TReport_section& rs)
 | 
			
		||||
{
 | 
			
		||||
  if (_print_aborted)
 | 
			
		||||
@ -975,6 +991,8 @@ long TReport_book::print_section(TReport_section& rs)
 | 
			
		||||
    {
 | 
			
		||||
      close_page();
 | 
			
		||||
      open_page();
 | 
			
		||||
      if (rs.type() == 'B')
 | 
			
		||||
        reprint_group_headers();
 | 
			
		||||
    }
 | 
			
		||||
    if (_page_is_open)
 | 
			
		||||
      rs.print(*this);
 | 
			
		||||
@ -1049,7 +1067,7 @@ bool TReport_book::add(TReport& rep)
 | 
			
		||||
  {
 | 
			
		||||
    if (max_group >= 2) // Gestione raggruppamenti
 | 
			
		||||
    {
 | 
			
		||||
      int changed = 0;
 | 
			
		||||
      int first_changed = 0;
 | 
			
		||||
      TVariant var;
 | 
			
		||||
      for (int g = 2; g <= max_group; g++)
 | 
			
		||||
      {
 | 
			
		||||
@ -1058,9 +1076,12 @@ bool TReport_book::add(TReport& rep)
 | 
			
		||||
        const TString& grp = var.as_string();
 | 
			
		||||
        newgroup.add(grp, g);
 | 
			
		||||
        if (newgroup.row(g) != oldgroup.row(g) || rex->current_row() == 0)
 | 
			
		||||
          changed = g;
 | 
			
		||||
        {
 | 
			
		||||
          if (first_changed == 0)
 | 
			
		||||
            first_changed = g;
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
      if (changed)
 | 
			
		||||
      if (first_changed)
 | 
			
		||||
      {
 | 
			
		||||
        oldgroup = newgroup;
 | 
			
		||||
 | 
			
		||||
@ -1070,10 +1091,10 @@ bool TReport_book::add(TReport& rep)
 | 
			
		||||
        
 | 
			
		||||
        if (rex->current_row() > 0)
 | 
			
		||||
        {
 | 
			
		||||
          for (int g = 2; g <= changed; g++)
 | 
			
		||||
          for (int g = max_group; g >= first_changed ; g--)
 | 
			
		||||
            _delta.y += print_section('F', g);
 | 
			
		||||
        }
 | 
			
		||||
        for (int g = changed; g >= 2 ; g--)
 | 
			
		||||
        for (int g = first_changed; g <= max_group; g++)
 | 
			
		||||
          _delta.y += print_section('H', g);
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -79,6 +79,7 @@ protected:
 | 
			
		||||
  virtual void define_frame(const TRectangle& r);
 | 
			
		||||
 | 
			
		||||
  bool init(TReport& rep);
 | 
			
		||||
  void reprint_group_headers();
 | 
			
		||||
  long print_section(TReport_section& rs);
 | 
			
		||||
  long print_section(char type, int level);
 | 
			
		||||
  void create_links(const TReport_section& rs);
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user