Patch level : 2.1 nopatch
Files correlati : Ricompilazione Demo : [ ] Commento : Aggiunto nuovo codice modulo per Report di stampa personalizzati Correzioni varie sull'editor dei report git-svn-id: svn://10.65.10.50/trunk@12147 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
82496e7b61
commit
4e940e81c4
@ -8,7 +8,7 @@ se Contabilita' Semplificata
|
|||||||
cg Contabilita' Generale
|
cg Contabilita' Generale
|
||||||
st Gestione studi
|
st Gestione studi
|
||||||
mi Modello IVA 11
|
mi Modello IVA 11
|
||||||
ai Archiviazione Immagini
|
rs Report di stampa
|
||||||
ce Cespiti
|
ce Cespiti
|
||||||
ad Anagrafici Dichiarazioni
|
ad Anagrafici Dichiarazioni
|
||||||
sc Saldaconto
|
sc Saldaconto
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
#define MIAUT 9
|
#define MIAUT 9
|
||||||
#define AIAUT 10
|
#define AIAUT 10
|
||||||
#define CEAUT 11
|
#define CEAUT 11
|
||||||
#define ADAUT 12
|
#define RSAUT 12
|
||||||
#define SCAUT 13
|
#define SCAUT 13
|
||||||
#define SRAUT 14
|
#define SRAUT 14
|
||||||
#define CMAUT 15
|
#define CMAUT 15
|
||||||
|
@ -844,7 +844,7 @@ bool TSocketClient::HttpSoap(CONNID id, const char* cmd)
|
|||||||
if (cmd == NULL || *cmd == '\0')
|
if (cmd == NULL || *cmd == '\0')
|
||||||
return ok;
|
return ok;
|
||||||
|
|
||||||
char hostname[64];
|
char hostname[256];
|
||||||
xvt_sys_get_host_name(hostname, sizeof(hostname));
|
xvt_sys_get_host_name(hostname, sizeof(hostname));
|
||||||
|
|
||||||
TString content(256);
|
TString content(256);
|
||||||
|
@ -1251,7 +1251,7 @@ void TPrinter::read_configuration(
|
|||||||
const TString& host = iniptr->get("Host");
|
const TString& host = iniptr->get("Host");
|
||||||
if (host.not_empty())
|
if (host.not_empty())
|
||||||
{
|
{
|
||||||
char hostname[32];
|
char hostname[256];
|
||||||
xvt_sys_get_host_name(hostname, sizeof(hostname));
|
xvt_sys_get_host_name(hostname, sizeof(hostname));
|
||||||
read_rcd = (host == hostname); // Safe to read
|
read_rcd = (host == hostname); // Safe to read
|
||||||
if (!read_rcd)
|
if (!read_rcd)
|
||||||
@ -1340,7 +1340,7 @@ void TPrinter::save_configuration()
|
|||||||
prini.set("Lines", _lines_per_inch); // Linee per pollice
|
prini.set("Lines", _lines_per_inch); // Linee per pollice
|
||||||
prini.set("Graphic", _isgraphics ? "X" : ""); // Grafica attiva
|
prini.set("Graphic", _isgraphics ? "X" : ""); // Grafica attiva
|
||||||
|
|
||||||
char hostname[80];
|
char hostname[256];
|
||||||
xvt_sys_get_host_name(hostname, sizeof(hostname));
|
xvt_sys_get_host_name(hostname, sizeof(hostname));
|
||||||
prini.set("Host", hostname);
|
prini.set("Host", hostname);
|
||||||
prini.set("User", user());
|
prini.set("User", user());
|
||||||
|
@ -376,16 +376,17 @@ void advanced_draw_paragraph(TWindow& win, TString& para, const RCT& rct,
|
|||||||
const bool acapo = para.find('\n') >= 0;
|
const bool acapo = para.find('\n') >= 0;
|
||||||
const bool parag = para.find(char(0xB6)) >= 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);
|
||||||
int leading, ascent, descent;
|
const int ky = 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 int rct_height = rct.bottom - rct.top;
|
||||||
|
int rows = rct_height / ky;
|
||||||
|
|
||||||
|
if (acapo || parag || rows > 1) // Devo scrivere piu' righe?
|
||||||
|
{
|
||||||
|
const int kx = xvt_dwin_get_text_width(win.win(), "ABCDEFGH", 8) / 8;
|
||||||
const unsigned columns = (rct.right - rct.left) / kx;
|
const unsigned columns = (rct.right - rct.left) / kx;
|
||||||
int rows = rct_height / ky;
|
|
||||||
|
|
||||||
if (parag)
|
if (parag)
|
||||||
para.replace(char('0xB6'), '\n');
|
para.replace(char('0xB6'), '\n');
|
||||||
@ -1939,8 +1940,8 @@ bool TReport::execute_prescript()
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Script dei poveri: lancia la maschera associata al report
|
// Script dei poveri: lancia la maschera associata al report
|
||||||
TFilename msk = _path; msk.ext("msk");
|
TFilename msk = _path.name(); msk.ext("msk");
|
||||||
if (msk.exist())
|
if (msk.custom_path())
|
||||||
{
|
{
|
||||||
const KEY key = run_form(msk.name());
|
const KEY key = run_form(msk.name());
|
||||||
ok = key != K_ESC && key != K_QUIT;
|
ok = key != K_ESC && key != K_QUIT;
|
||||||
@ -2005,7 +2006,7 @@ bool TReport::get_record_field(const TString& name, TVariant& var) const
|
|||||||
}
|
}
|
||||||
var = _recordset->get(str);
|
var = _recordset->get(str);
|
||||||
if (!var.is_null())
|
if (!var.is_null())
|
||||||
return true;
|
found = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return found;
|
return found;
|
||||||
@ -2400,12 +2401,31 @@ bool TReport::on_link(const TReport_link& lnk)
|
|||||||
const int logicnum = table2logic(table);
|
const int logicnum = table2logic(table);
|
||||||
if (logicnum >= LF_USER)
|
if (logicnum >= LF_USER)
|
||||||
{
|
{
|
||||||
TRectype rec(logicnum);
|
TRectype rec(logicnum);;
|
||||||
|
if (logicnum == LF_TAB || logicnum == LF_TABCOM)
|
||||||
|
rec.settab(table.right(3));
|
||||||
|
|
||||||
TAssoc_array& fields = lnk.fields();
|
TAssoc_array& fields = lnk.fields();
|
||||||
|
TAssoc_array delayed;
|
||||||
FOR_EACH_ASSOC_OBJECT(fields, h, k, o)
|
FOR_EACH_ASSOC_OBJECT(fields, h, k, o)
|
||||||
{
|
{
|
||||||
const TString* var = (const TString*)o;
|
const TFieldref fld(k, logicnum);
|
||||||
rec.put(k, *var);
|
if (fld.from() > 0)
|
||||||
|
delayed.add(k, *o);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
const TString* var = (const TString*)o;
|
||||||
|
fld.write(*var, rec);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (delayed.items() > 0)
|
||||||
|
{
|
||||||
|
FOR_EACH_ASSOC_OBJECT(delayed, h, k, o)
|
||||||
|
{
|
||||||
|
const TFieldref fld(k, logicnum);
|
||||||
|
const TString* var = (const TString*)o;
|
||||||
|
fld.write(*var, rec);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return rec.edit();
|
return rec.edit();
|
||||||
}
|
}
|
||||||
|
@ -152,7 +152,7 @@ void TPrint_preview_window::update()
|
|||||||
{
|
{
|
||||||
const TPoint res = _book->page_res();
|
const TPoint res = _book->page_res();
|
||||||
const int lpi = _book->lpi();
|
const int lpi = _book->lpi();
|
||||||
for (int i = 1; ; i++)
|
for (int i = 1; lpi > 0; i++)
|
||||||
{
|
{
|
||||||
set_pen(i%lpi ? MAKE_COLOR(232,232,255) : MAKE_COLOR(255,192,255));
|
set_pen(i%lpi ? MAKE_COLOR(232,232,255) : MAKE_COLOR(255,192,255));
|
||||||
const short y = i * res.y / lpi;
|
const short y = i * res.y / lpi;
|
||||||
@ -161,7 +161,7 @@ void TPrint_preview_window::update()
|
|||||||
line(0, y, (short)size.x, y);
|
line(0, y, (short)size.x, y);
|
||||||
}
|
}
|
||||||
const int cpi = _book->cpi();
|
const int cpi = _book->cpi();
|
||||||
for (int j = 1; ; j++)
|
for (int j = 1; cpi > 0; j++)
|
||||||
{
|
{
|
||||||
set_pen(j%10 ? MAKE_COLOR(232,232,255) : MAKE_COLOR(255,192,255));
|
set_pen(j%10 ? MAKE_COLOR(232,232,255) : MAKE_COLOR(255,192,255));
|
||||||
const short x = j * res.x / cpi;
|
const short x = j * res.x / cpi;
|
||||||
@ -865,7 +865,7 @@ bool TBook::print_page(TWindow& win, size_t page)
|
|||||||
if (img != NULL)
|
if (img != NULL)
|
||||||
img->draw(win.win(), rct);
|
img->draw(win.win(), rct);
|
||||||
}
|
}
|
||||||
if (str.starts_with("<line/>"))
|
if (str == "<line/>")
|
||||||
{
|
{
|
||||||
PNT fr = { rct.top, rct.left };
|
PNT fr = { rct.top, rct.left };
|
||||||
PNT to = { rct.bottom, rct.right };
|
PNT to = { rct.bottom, rct.right };
|
||||||
@ -904,7 +904,7 @@ bool TBook::print_page(TWindow& win, size_t page)
|
|||||||
break;
|
break;
|
||||||
stringona << str;
|
stringona << str;
|
||||||
}
|
}
|
||||||
advanced_draw_text(win, stringona, rct, _horizontal_alignment, _vertical_alignment);
|
advanced_draw_paragraph(win, stringona, rct, _horizontal_alignment, _vertical_alignment);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (str.starts_with("<text_align "))
|
if (str.starts_with("<text_align "))
|
||||||
@ -950,7 +950,7 @@ bool TBook::export_text(const TFilename& fname) const
|
|||||||
ofstream ofs(fname);
|
ofstream ofs(fname);
|
||||||
|
|
||||||
TString_array page;
|
TString_array page;
|
||||||
int row, col, wid;
|
int row, col, wid, hei;
|
||||||
|
|
||||||
const TPoint res = page_res();
|
const TPoint res = page_res();
|
||||||
|
|
||||||
@ -965,7 +965,19 @@ bool TBook::export_text(const TFilename& fname) const
|
|||||||
row = y * lpi() / res.y;
|
row = y * lpi() / res.y;
|
||||||
col = x * cpi() / res.x;
|
col = x * cpi() / res.x;
|
||||||
wid = dx * cpi() / res.x;
|
wid = dx * cpi() / res.x;
|
||||||
|
hei = dy * cpi() / res.y;
|
||||||
} else
|
} else
|
||||||
|
if (str == "<line/>")
|
||||||
|
{
|
||||||
|
if (hei == 0 && wid > 0)
|
||||||
|
{
|
||||||
|
if (page.objptr(row) == NULL)
|
||||||
|
page.add("", row);
|
||||||
|
TString& line = page.row(row++);
|
||||||
|
const TString stringona(wid, '-');
|
||||||
|
line.overwrite(stringona, col);
|
||||||
|
}
|
||||||
|
}
|
||||||
if (str.starts_with("<page "))
|
if (str.starts_with("<page "))
|
||||||
{
|
{
|
||||||
page.destroy();
|
page.destroy();
|
||||||
@ -1323,7 +1335,7 @@ bool TReport_book::init(TReport& rep)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TReport_book::add(TReport& rep)
|
bool TReport_book::add(TReport& rep, bool progind)
|
||||||
{
|
{
|
||||||
if (!init(rep))
|
if (!init(rep))
|
||||||
return false;
|
return false;
|
||||||
@ -1337,7 +1349,10 @@ bool TReport_book::add(TReport& rep)
|
|||||||
|
|
||||||
TString msg = TR("Elaborazione report");
|
TString msg = TR("Elaborazione report");
|
||||||
msg << ' ' << _report->filename();
|
msg << ' ' << _report->filename();
|
||||||
TProgind pi(rex->items(), msg, true, true);
|
|
||||||
|
TProgind* pi = NULL;
|
||||||
|
if (progind)
|
||||||
|
pi = new TProgind(rex->items(), msg, true, true);
|
||||||
|
|
||||||
TString_array oldgroup, newgroup;
|
TString_array oldgroup, newgroup;
|
||||||
const int max_group = _report->find_max_level('H');
|
const int max_group = _report->find_max_level('H');
|
||||||
@ -1413,9 +1428,12 @@ bool TReport_book::add(TReport& rep)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pi.addstatus(1);
|
if (pi != NULL)
|
||||||
if (pi.iscancelled())
|
{
|
||||||
_print_aborted = true;
|
pi->addstatus(1);
|
||||||
|
if (pi->iscancelled())
|
||||||
|
_print_aborted = true;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
if (!_print_aborted)
|
if (!_print_aborted)
|
||||||
@ -1454,7 +1472,10 @@ bool TReport_book::add(TReport& rep)
|
|||||||
_report->execute_postscript();
|
_report->execute_postscript();
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
if (pi != NULL)
|
||||||
|
delete pi;
|
||||||
|
|
||||||
|
return !_print_aborted;
|
||||||
}
|
}
|
||||||
|
|
||||||
int TReport_book::lpi() const
|
int TReport_book::lpi() const
|
||||||
@ -1512,6 +1533,11 @@ bool TReport_book::on_link(const TReport_link& lnk)
|
|||||||
return ok;
|
return ok;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TReport_book::TReport_book(const char* name)
|
||||||
|
: TBook(name), _report(NULL)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
// Remote control interface
|
// Remote control interface
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
|
@ -89,13 +89,13 @@ protected:
|
|||||||
long print_section(char type, int level);
|
long print_section(char type, int level);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
bool add(TReport& report);
|
bool add(TReport& report, bool progind = true);
|
||||||
|
|
||||||
virtual int lpi() const;
|
virtual int lpi() const;
|
||||||
virtual int cpi() const;
|
virtual int cpi() const;
|
||||||
virtual bool print(size_t pagefrom = 0, size_t pageto = 0, size_t copies = 0);
|
virtual bool print(size_t pagefrom = 0, size_t pageto = 0, size_t copies = 0);
|
||||||
|
|
||||||
TReport_book(const char* name = NULL) : TBook(name) { }
|
TReport_book(const char* name = NULL);
|
||||||
};
|
};
|
||||||
|
|
||||||
void abort_printing();
|
void abort_printing();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user