Patch level : 2.1 nopatch

Files correlati     :
Ricompilazione Demo : [ ]
Commento            :

Aggiunte fichissime alla stampa report


git-svn-id: svn://10.65.10.50/trunk@12180 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2004-06-15 14:53:17 +00:00
parent 0126346ff7
commit f72c70c29b
8 changed files with 275 additions and 121 deletions

View File

@ -100,6 +100,24 @@ bool TReport_base_mask::on_field_event(TOperable_field& o, TField_event e, long
{ {
switch (o.dlg()) switch (o.dlg())
{ {
case F_FGCOLOR:
if (e == fe_button)
{
_fgcolor = xvt_dm_post_choose_color(win(), _fgcolor);
force_update();
}
break;
case F_BGCOLOR:
if (e == fe_button)
{
_bgcolor = xvt_dm_post_choose_color(win(), _bgcolor);
force_update();
}
break;
case F_PATTERN:
if (e == fe_modify)
force_update();
break;
case F_FONT_SELECT: case F_FONT_SELECT:
if (e == fe_button) if (e == fe_button)
{ {
@ -240,6 +258,8 @@ void TReport_field_mask::vedo_non_vedo()
show(F_DYNAMIC_HEIGHT, type == 'S'); show(F_DYNAMIC_HEIGHT, type == 'S');
show(F_FGCOLOR, type != 'I'); show(F_FGCOLOR, type != 'I');
show(F_BGCOLOR, type != 'L'); show(F_BGCOLOR, type != 'L');
show(F_PATTERN, type != 'L' && type != 'I');
show(F_RADIUS, type != 'L' && type != 'I');
show(F_FONT_SELECT, is_text); show(F_FONT_SELECT, is_text);
show(F_SOURCE, (is_text || type == 'I') && type != 'T'); show(F_SOURCE, (is_text || type == 'I') && type != 'T');
show(F_SOURCE2, is_text && type != 'T'); show(F_SOURCE2, is_text && type != 'T');
@ -260,7 +280,14 @@ bool TReport_field_mask::on_field_event(TOperable_field& o, TField_event e, long
{ {
case F_TYPE: case F_TYPE:
if (e == fe_init || e == fe_modify) if (e == fe_init || e == fe_modify)
{
vedo_non_vedo(); vedo_non_vedo();
if (e == fe_modify)
{
if (strchr("ELR", o.get()[0]) != NULL && get_int(F_BORDER) == 0)
set(F_BORDER, 2); // Propongo un bordo visibile per le linee
}
}
break; break;
case F_X: case F_X:
case F_Y: case F_Y:
@ -272,20 +299,6 @@ bool TReport_field_mask::on_field_event(TOperable_field& o, TField_event e, long
set_num(o.dlg(), num); // Reformat set_num(o.dlg(), num); // Reformat
} }
break; break;
case F_FGCOLOR:
if (e == fe_button)
{
_fgcolor = xvt_dm_post_choose_color(win(), _fgcolor);
force_update();
}
break;
case F_BGCOLOR:
if (e == fe_button)
{
_bgcolor = xvt_dm_post_choose_color(win(), _bgcolor);
force_update();
}
break;
case F_LIST: case F_LIST:
if (e == fe_close) if (e == fe_close)
{ {
@ -364,6 +377,8 @@ void TReport_field_mask::set_field(const TReport_field& rf)
str[0] = rf.vertical_alignment(); str[0] = rf.vertical_alignment();
set(F_VALIGN, str); set(F_VALIGN, str);
set(F_BORDER, rf.border()); set(F_BORDER, rf.border());
set(F_PATTERN, rf.pattern());
set_num(F_RADIUS, rf.radius());
_fgcolor = rf.fore_color(); _fgcolor = rf.fore_color();
_bgcolor = rf.back_color(); _bgcolor = rf.back_color();
set(F_TEXT, rf.picture()); set(F_TEXT, rf.picture());
@ -389,14 +404,16 @@ void TReport_field_mask::get_field(TReport_field& rf) const
rf.set_size(get_num(F_DX), get_num(F_DY)); rf.set_size(get_num(F_DX), get_num(F_DY));
rf.show(!get_bool(F_HIDDEN)); rf.show(!get_bool(F_HIDDEN));
rf.activate(!get_bool(F_DISABLED)); rf.activate(!get_bool(F_DISABLED));
rf.hide_zeroes(get_bool(F_HIDE_ZEROES)); rf.hide_zeroes(field(F_HIDE_ZEROES).active() && get_bool(F_HIDE_ZEROES));
rf.set_dynamic_height(get_bool(F_DYNAMIC_HEIGHT)); rf.set_dynamic_height(get_bool(F_DYNAMIC_HEIGHT));
rf.set_groups(get(F_GROUPS)); rf.set_groups(get(F_GROUPS));
rf.set_codval(get(F_CODVAL)); rf.set_codval(get(F_CODVAL));
rf.set_link(get(F_LINK)); rf.set_link(get(F_LINK));
rf.set_horizontal_alignment(get(F_HALIGN)[0]); rf.set_horizontal_alignment(get(F_HALIGN)[0]);
rf.set_vertical_alignment(get(F_VALIGN)[0]); rf.set_vertical_alignment(get(F_VALIGN)[0]);
rf.set_pattern((PAT_STYLE)get_int(F_PATTERN));
rf.set_border(get_int(F_BORDER)); rf.set_border(get_int(F_BORDER));
rf.set_radius(get_num(F_RADIUS));
rf.set_fore_color(_fgcolor); rf.set_fore_color(_fgcolor);
rf.set_back_color(_bgcolor); rf.set_back_color(_bgcolor);
if (strchr("VP", rf.type()) != NULL) if (strchr("VP", rf.type()) != NULL)
@ -519,6 +536,7 @@ TReport_sheet::TReport_sheet(TReport_section& sec)
class TSection_properties_mask : public TReport_base_mask class TSection_properties_mask : public TReport_base_mask
{ {
protected: protected:
virtual void update();
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly); virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
void set_num(short id, long num); void set_num(short id, long num);
short get_num(short id) const; short get_num(short id) const;
@ -531,6 +549,25 @@ public:
TSection_properties_mask(TReport_section& rs); TSection_properties_mask(TReport_section& rs);
}; };
void TSection_properties_mask::update()
{
for (int i = 0; i < 2; i++)
{
TMask_field& fld = field(i == 0 ? F_FGCOLOR : F_BGCOLOR);
if (fld.active() && fld.parent() == win())
{
RCT rctfld; fld.get_rect(rctfld);
const int x = rctfld.right / CHARX + 1;
const int y = rctfld.top / ROWY + 1;
RCT& rct = resize_rect(x, y, -3, 1, W_PLAIN, win());
rct.top = rctfld.top; rct.bottom = rctfld.bottom;
xi_draw_3d_rect((XinWindow)win(), (XinRect*)&rct, TRUE, 2, MASK_LIGHT_COLOR,
i == 0 ? _fgcolor : _bgcolor, MASK_DARK_COLOR);
}
}
TReport_base_mask::update();
}
void TSection_properties_mask::set_num(short id, long num) void TSection_properties_mask::set_num(short id, long num)
{ {
set(id, num2str(num)); set(id, num2str(num));
@ -601,7 +638,13 @@ void TSection_properties_mask::set_section(const TReport_section& rs)
set(F_REPEAT, rs.repeat_on_page()); set(F_REPEAT, rs.repeat_on_page());
set(F_DISABLED, rs.deactivated()); set(F_DISABLED, rs.deactivated());
set(F_BORDER, rs.border());
set(F_PATTERN, rs.pattern());
set_num(F_RADIUS, rs.radius());
_fgcolor = rs.fore_color();
_bgcolor = rs.back_color();
set_font_info(rs.font()); set_font_info(rs.font());
set(F_PRESCRIPT, rs.prescript()); set(F_PRESCRIPT, rs.prescript());
set(F_POSTSCRIPT, rs.postscript()); set(F_POSTSCRIPT, rs.postscript());
@ -627,6 +670,11 @@ void TSection_properties_mask::get_section(TReport_section& rs) const
rs.keep_with_next(get_bool(F_KEEP_WITH_NEXT)); rs.keep_with_next(get_bool(F_KEEP_WITH_NEXT));
rs.set_repeat_on_page(get_bool(F_REPEAT)); rs.set_repeat_on_page(get_bool(F_REPEAT));
rs.set_pattern((PAT_STYLE)get_int(F_PATTERN));
rs.set_border(get_int(F_BORDER));
rs.set_radius(get_num(F_RADIUS));
rs.set_fore_color(_fgcolor);
rs.set_back_color(_bgcolor);
TReport_font f; TReport_font f;
if (get_font_info(f)) if (get_font_info(f))
rs.set_font(f); rs.set_font(f);
@ -1098,6 +1146,7 @@ void TReport_mask::section_properties()
{ {
case K_ENTER: case K_ENTER:
m.get_section(rs); m.get_section(rs);
_tree.goto_node(rs.type(), rs.level());
_is_dirty = true; _is_dirty = true;
break; break;
case K_DEL: case K_DEL:
@ -1107,7 +1156,6 @@ void TReport_mask::section_properties()
const int l = rs.level(); const int l = rs.level();
rs.report().kill_section(t, l); rs.report().kill_section(t, l);
_tree.goto_node(t, l-1); _tree.goto_node(t, l-1);
tfield(F_SECTIONS).select_current();
_is_dirty = true; _is_dirty = true;
} }
break; break;

View File

@ -40,6 +40,8 @@
#define F_SOURCE2 145 #define F_SOURCE2 145
#define F_HIDE_DOTS 146 #define F_HIDE_DOTS 146
#define F_DYNAMIC_HEIGHT 147 #define F_DYNAMIC_HEIGHT 147
#define F_RADIUS 148
#define F_PATTERN 149
#define F_LEVEL 160 #define F_LEVEL 160
#define F_GROUP_BY 161 #define F_GROUP_BY 161

View File

@ -73,15 +73,14 @@ END
TEXT F_REPORT_TITLE TEXT F_REPORT_TITLE
BEGIN BEGIN
PROMPT 41 6 "Corpo di livello 0" PROMPT 41 7 "Corpo di livello 0"
END END
REPORT F_REPORT -3 -3 REPORT F_REPORT -3 -3
BEGIN BEGIN
PROMPT 21 7 "" PROMPT 21 8 ""
END END
BUTTON F_FLD_ADD 10 2 BUTTON F_FLD_ADD 10 2
BEGIN BEGIN
PROMPT -16 -1 "Campo +" PROMPT -16 -1 "Campo +"

View File

@ -5,13 +5,13 @@ PAGE "Campo" -1 -1 72 17
LIST F_TYPE 1 16 LIST F_TYPE 1 16
BEGIN BEGIN
PROMPT 1 0 "Tipo " PROMPT 1 0 "Tipo "
ITEM "T|Testo" ITEM "T|Testo fisso"
ITEM "S|Stringa" ITEM "S|Stringa"
ITEM "N|Numero" ITEM "N|Numero"
ITEM "V|Valuta" ITEM "V|Valuta"
ITEM "P|Prezzo" ITEM "P|Prezzo"
ITEM "D|Data" ITEM "D|Data"
ITEM "A|Array" ITEM "A|Array (Lista)"
ITEM "I|Immagine" ITEM "I|Immagine"
ITEM "L|Linea" ITEM "L|Linea"
ITEM "R|Rettangolo" ITEM "R|Rettangolo"
@ -157,20 +157,52 @@ BEGIN
PROMPT 2 5 "Colore ~Sfondo" PROMPT 2 5 "Colore ~Sfondo"
END END
BUTTON F_FONT_SELECT 14 2
BEGIN
PROMPT 2 7 "~Font"
END
LIST F_BORDER 1 12 LIST F_BORDER 1 12
BEGIN BEGIN
PROMPT 2 10 "Bordo " PROMPT 2 7 "Bordo "
ITEM "0|Nessuno" ITEM "0|Nessuno"
MESSAGE HIDE,F_RADIUS
ITEM "1|Sottile" ITEM "1|Sottile"
MESSAGE SHOW,F_RADIUS
ITEM "2|Normale" ITEM "2|Normale"
MESSAGE SHOW,F_RADIUS
ITEM "3|Spesso" ITEM "3|Spesso"
MESSAGE SHOW,F_RADIUS
END END
NUMBER F_RADIUS 3
BEGIN
PROMPT 32 7 "Raggio smussatura "
FLAGS "U"
END
LIST F_PATTERN 1 18
BEGIN
PROMPT 2 8 "Stile "
ITEM "2|Pieno"
MESSAGE SHOW,F_BGCOLOR
ITEM "1|Trasparente"
MESSAGE HIDE,F_BGCOLOR
ITEM "3|Linee orizzontali"
MESSAGE SHOW,F_BGCOLOR
ITEM "4|Linee verticali"
MESSAGE SHOW,F_BGCOLOR
ITEM "5|Diagonali \"
MESSAGE SHOW,F_BGCOLOR
ITEM "6|Diagonali /"
MESSAGE SHOW,F_BGCOLOR
ITEM "7|Griglia"
MESSAGE SHOW,F_BGCOLOR
ITEM "8|Griglia diagonale"
MESSAGE SHOW,F_BGCOLOR
END
BUTTON F_FONT_SELECT 14 2
BEGIN
PROMPT 2 10 "~Font"
END
BUTTON DLG_CANCEL 10 2 BUTTON DLG_CANCEL 10 2
BEGIN BEGIN
PROMPT -13 -1 "" PROMPT -13 -1 ""

View File

@ -91,11 +91,6 @@ BEGIN
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
END END
BUTTON F_FONT_SELECT 10 2
BEGIN
PROMPT -13 -3 "~Font"
END
BUTTON DLG_OK 10 2 BUTTON DLG_OK 10 2
BEGIN BEGIN
PROMPT -13 -1 "" PROMPT -13 -1 ""
@ -113,6 +108,75 @@ END
ENDPAGE ENDPAGE
PAGE "Aspetto" -1 -1 72 16
LIST F_BORDER 1 12
BEGIN
PROMPT 2 1 "Bordo "
ITEM "0|Nessuno"
MESSAGE HIDE,F_RADIUS
ITEM "1|Sottile"
MESSAGE SHOW,F_RADIUS
ITEM "2|Normale"
MESSAGE SHOW,F_RADIUS
ITEM "3|Spesso"
MESSAGE SHOW,F_RADIUS
END
NUMBER F_RADIUS 3
BEGIN
PROMPT 26 1 "Raggio smussatura "
FLAGS "U"
END
BUTTON F_FGCOLOR 14 1
BEGIN
PROMPT 2 2 "Colore ~Bordo"
END
LIST F_PATTERN 1 18
BEGIN
PROMPT 2 4 "Sfondo "
ITEM "1|Trasparente"
MESSAGE HIDE,F_BGCOLOR
ITEM "2|Pieno"
MESSAGE SHOW,F_BGCOLOR
ITEM "3|Linee orizzontali"
MESSAGE SHOW,F_BGCOLOR
ITEM "4|Linee verticali"
MESSAGE SHOW,F_BGCOLOR
ITEM "5|Diagonali \"
MESSAGE SHOW,F_BGCOLOR
ITEM "6|Diagonali /"
MESSAGE SHOW,F_BGCOLOR
ITEM "7|Griglia"
MESSAGE SHOW,F_BGCOLOR
ITEM "8|Griglia diagonale"
MESSAGE SHOW,F_BGCOLOR
END
BUTTON F_BGCOLOR 14 1
BEGIN
PROMPT 2 5 "Colore ~Sfondo"
END
BUTTON F_FONT_SELECT 14 2
BEGIN
PROMPT 2 10 "~Font"
END
BUTTON DLG_CANCEL 10 2
BEGIN
PROMPT -13 -1 ""
END
BUTTON DLG_OK 10 2
BEGIN
PROMPT -33 -1 ""
END
ENDPAGE
PAGE "Avanzate" -1 -1 50 16 PAGE "Avanzate" -1 -1 50 16
MEMO F_PRESCRIPT 48 7 MEMO F_PRESCRIPT 48 7

View File

@ -1,49 +0,0 @@
PAGE "Monitor" -1 -1 50 20
LIST 101 24 -3
BEGIN
PROMPT 0 0 ""
END
STACK 102 -3 10
BEGIN
PROMPT 27 0 ""
END
STACK 103 -3 -3
BEGIN
PROMPT 27 11 ""
END
BUTTON DLG_NEXTREC 9 2
BEGIN
PROMPT -14 -1 ""
PICTURE 124
MESSAGE EXIT,K_F11
END
BUTTON DLG_LASTREC 9 2
BEGIN
PROMPT -24 -1 ""
PICTURE 1671
MESSAGE EXIT,K_F10
END
BUTTON DLG_ELABORA 9 2
BEGIN
PROMPT -34 -1 ""
PICTURE BMP_LASTREC
MESSAGE EXIT,K_F5
END
BUTTON DLG_QUIT 9 2
BEGIN
PROMPT -44 -1 ""
MESSAGE EXIT,K_QUIT
END
ENDPAGE
ENDMASK

View File

@ -4,6 +4,7 @@
#include <diction.h> #include <diction.h>
#include <image.h> #include <image.h>
#include <mask.h> #include <mask.h>
#include <reprint.h>
#include "ba8300.h" #include "ba8300.h"
#include "ba8301.h" #include "ba8301.h"
@ -321,9 +322,10 @@ class TReport_window : public TField_window
PNT _pt_click, _pt_drag_offset; PNT _pt_click, _pt_drag_offset;
RCT _rct_drag; RCT _rct_drag;
TArray _clipboard;
TReport_image_cache _images; TReport_image_cache _images;
static TArray _clipboard;
protected: protected:
virtual void handler(WINDOW win, EVENT* ep); virtual void handler(WINDOW win, EVENT* ep);
virtual void update(); virtual void update();
@ -341,6 +343,7 @@ protected:
void popup_cut(); void popup_cut();
void popup_copy(); void popup_copy();
void popup_paste(); void popup_paste();
bool do_zoom(int k, bool reflect);
int cpi() const; int cpi() const;
int lpi() const; int lpi() const;
@ -365,6 +368,8 @@ public:
virtual ~TReport_window() { } virtual ~TReport_window() { }
}; };
TArray TReport_window::_clipboard;
void TReport_window::set_report_section(TReport_section& rs) void TReport_window::set_report_section(TReport_section& rs)
{ {
_report = &rs.report(); _report = &rs.report();
@ -372,7 +377,6 @@ void TReport_window::set_report_section(TReport_section& rs)
_level = rs.level(); _level = rs.level();
} }
bool TReport_window::pick(const TPoint& ptlog) const bool TReport_window::pick(const TPoint& ptlog) const
{ {
TReport_section& rs = curr_section(); TReport_section& rs = curr_section();
@ -683,6 +687,29 @@ bool TReport_window::test_corner(const RCT& rct, const PNT& pt, PNT& opposite) c
return test == 2; return test == 2;
} }
bool TReport_window::do_zoom(int k, bool reflect)
{
const int n = _dpi.v+k;
const bool ok = n >= 48 && n < 300;
if (ok)
{
_dpi.h = _dpi.v = n;
curr_section().unmap_font();
force_update();
if (reflect)
{
const short buddy = owner().dlg() == F_REPORT ? F_REPORTH : F_REPORT;
TWindowed_field& fld = (TWindowed_field&)owner().mask().field(buddy);
TReport_window& win = (TReport_window&)fld.win();
win.do_zoom(k, false);
}
}
return ok;
}
void TReport_window::handler(WINDOW win, EVENT* ep) void TReport_window::handler(WINDOW win, EVENT* ep)
{ {
switch (ep->type) switch (ep->type)
@ -840,20 +867,10 @@ void TReport_window::handler(WINDOW win, EVENT* ep)
popup_paste(); popup_paste();
break; break;
case POPUP_ZOOMIN: case POPUP_ZOOMIN:
if (_dpi.v < 300) do_zoom(+24, true);
{
_dpi.h = _dpi.v = _dpi.v + 24;
curr_section().unmap_font();
force_update();
}
break; break;
case POPUP_ZOOMOUT: case POPUP_ZOOMOUT:
if (_dpi.v > 48) do_zoom(-24, true);
{
_dpi.h = _dpi.v = _dpi.v - 24;
curr_section().unmap_font();
force_update();
}
break; break;
case POPUP_PROPERTIES: case POPUP_PROPERTIES:
{ {
@ -872,6 +889,19 @@ void TReport_window::handler(WINDOW win, EVENT* ep)
break; break;
} }
break; break;
case E_HSCROLL:
{ // Riflette l'evento E_HSCROLL sull'altra finestra di anteprima spacciandolo per E_USER
const short buddy = owner().dlg() == F_REPORT ? F_REPORTH : F_REPORT;
TWindowed_field& fld = (TWindowed_field&)owner().mask().field(buddy);
ep->type = E_USER;
dispatch_event(fld.win().win(), *ep, false);
ep->type = E_HSCROLL;
}
break;
case E_USER:
// Mi e' arrivato un E_HSCROLL camuffato E_USER dall'altra finestra di anteprima
ep->type = E_HSCROLL;
break;
default: default:
break; break;
} }
@ -900,34 +930,57 @@ TPoint TReport_window::dev2log(const PNT& pt) const
void TReport_window::draw_grid() void TReport_window::draw_grid()
{ {
const int k = 100;
clear(COLOR_WHITE); clear(COLOR_WHITE);
const int max = 196;
const int k = 100;
for (int i = 1; i < max; i++)
{
set_pen(i%10 ? MAKE_COLOR(232,232,255) : MAKE_COLOR(255,192,255));
line(0, i*k, max*k, i*k);
line(i*k, 0, i*k, max*k);
}
const TReport_section& rs = curr_section(); const TReport_section& rs = curr_section();
int x = rs.width();
int y = rs.height(); int y = rs.height();
if (x <= 0) x = 196*k;
if (y <= 0) // Sezione ad altezza variabile if (y <= 0) // Sezione ad altezza variabile
{ {
for (int i = 0; i < rs.items(); i++) for (int i = 0; i < rs.items(); i++)
{ {
const TReport_field& rf = rs.field(i); const TReport_field& rf = rs.field(i);
const int fy = rf.get_rect().bottom(); const TRectangle& rct = rf.get_rect();
const int fy = rct.bottom();
if (fy > y) y = fy; if (fy > y) y = fy;
} }
const int mod = y % 100; const int mod = y % k;
if (mod != 0) y += 100-mod; if (mod != 0) y += k-mod;
} }
if (y > 0) // Disegna barra di fine sezione
if (rs.type() == 'B' && rs.level() == 0)
x = y = 196*k;
// Disegna l'eventuale sfondo di sezione
const bool draw_back = y > 0 && (rs.border() > 0
|| (rs.pattern() >= PAT_SOLID && rs.back_color() != COLOR_WHITE));
if (draw_back)
{ {
const PNT p = log2dev(0, y); const PNT p = log2dev(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());
rad = min(pr.h-p0.h, pr.v-p0.v);
}
advanced_draw_rect(*this, rct, rs.pattern(), rs.border(), rs.fore_color(), rs.back_color(), rad);
}
for (int i = x/k; i > 0; i--)
{
set_pen(i%10 ? MAKE_COLOR(232,232,255) : MAKE_COLOR(255,192,255));
line(0, i*k, x, i*k);
line(i*k, 0, i*k, y <= 0 ? x : y);
}
if (y > 0) // Disegna barra di fine sezione
{
const PNT p = log2dev(x, y);
RCT rct; xvt_vobj_get_client_rect(win(), &rct); RCT rct; xvt_vobj_get_client_rect(win(), &rct);
if (p.v < rct.bottom) if (p.v < rct.bottom)
{ {
@ -937,7 +990,6 @@ void TReport_window::draw_grid()
xvt_dwin_draw_rect(win(), &rct); xvt_dwin_draw_rect(win(), &rct);
} }
} }
} }
void TReport_window::draw_broken_paper(const TReport_field& rf) void TReport_window::draw_broken_paper(const TReport_field& rf)
@ -967,6 +1019,12 @@ void TReport_window::draw_broken_paper(const TReport_field& rf)
void TReport_window::draw_field(const TReport_field& rf) void TReport_window::draw_field(const TReport_field& rf)
{ {
RCT r; TWindow::log2dev(rf.get_rect(), r); RCT r; TWindow::log2dev(rf.get_rect(), r);
int rad = 0;
if (rf.radius() > 0)
{
const int width = r.right - r.left;
rad = rf.radius() * width / rf.get_rect().width();
}
PAT_STYLE back_pattern = PAT_HOLLOW; PAT_STYLE back_pattern = PAT_HOLLOW;
const int k = (rf.hidden() ? 1 : 0) + (rf.deactivated() ? 2 : 0); const int k = (rf.hidden() ? 1 : 0) + (rf.deactivated() ? 2 : 0);
@ -981,7 +1039,7 @@ void TReport_window::draw_field(const TReport_field& rf)
switch (rf.type()) switch (rf.type())
{ {
case 'E': case 'E':
if (advanced_set_draw_tools(*this, rf.border(), rf.fore_color(), rf.back_color())) if (advanced_set_draw_tools(*this, rf.pattern(), rf.border(), rf.fore_color(), rf.back_color()))
xvt_dwin_draw_oval(win(), &r); xvt_dwin_draw_oval(win(), &r);
back_pattern = PAT_HOLLOW; back_pattern = PAT_HOLLOW;
break; break;
@ -993,11 +1051,11 @@ void TReport_window::draw_field(const TReport_field& rf)
const TImage* img = _images.image(name); const TImage* img = _images.image(name);
if (img != NULL && img->ok()) if (img != NULL && img->ok())
img->draw(win(), r); img->draw(win(), r);
advanced_draw_rect(*this, r, rf.border(), rf.fore_color(), COLOR_WHITE); advanced_draw_rect(*this, r, PAT_HOLLOW, rf.border(), rf.fore_color(), COLOR_WHITE, 0);
} }
break; break;
case 'L': case 'L':
if (advanced_set_draw_tools(*this, rf.border(), rf.fore_color(), COLOR_WHITE)) if (advanced_set_draw_tools(*this, PAT_SOLID, rf.border(), rf.fore_color(), COLOR_WHITE))
{ {
const PNT f = { r.top, r.left }; const PNT f = { r.top, r.left };
xvt_dwin_draw_set_pos(win(), f); xvt_dwin_draw_set_pos(win(), f);
@ -1007,11 +1065,11 @@ void TReport_window::draw_field(const TReport_field& rf)
back_pattern = PAT_HOLLOW; back_pattern = PAT_HOLLOW;
break; break;
case 'R': case 'R':
advanced_draw_rect(*this, r, rf.border(), rf.fore_color(), rf.back_color()); advanced_draw_rect(*this, r, rf.pattern(), rf.border(), rf.fore_color(), rf.back_color(), rad);
break; break;
case 'T': case 'T':
{ {
advanced_draw_rect(*this, r, rf.border(), rf.fore_color(), rf.back_color()); advanced_draw_rect(*this, r, rf.pattern(), rf.border(), rf.fore_color(), rf.back_color(), rad);
xvt_dwin_set_font(win(), rf.font().get_xvt_font(*this)); xvt_dwin_set_font(win(), rf.font().get_xvt_font(*this));
set_color(rf.fore_color(), rf.back_color()); set_color(rf.fore_color(), rf.back_color());
TString str = rf.picture(); TString str = rf.picture();
@ -1024,9 +1082,9 @@ void TReport_window::draw_field(const TReport_field& rf)
else else
{ {
if (rf.border() <= 0) // Rendi piu' visibile il bordo dei campi che non ce l'hanno if (rf.border() <= 0) // Rendi piu' visibile il bordo dei campi che non ce l'hanno
advanced_draw_rect(*this, r, 1, COLOR_LTGRAY, COLOR_WHITE); advanced_draw_rect(*this, r, PAT_HOLLOW, 1, COLOR_LTGRAY, COLOR_WHITE, 0);
else else
advanced_draw_rect(*this, r, rf.border(), rf.fore_color(), rf.back_color()); advanced_draw_rect(*this, r, rf.pattern(), rf.border(), rf.fore_color(), rf.back_color(), rad);
} }
if (rf.link().not_empty()) if (rf.link().not_empty())
@ -1061,7 +1119,7 @@ void TReport_window::draw_field(const TReport_field& rf)
} }
if (rf.selected()) if (rf.selected())
{ {
advanced_set_draw_tools(*this, 0, COLOR_WHITE, COLOR_GRAY); advanced_set_draw_tools(*this, PAT_SOLID, 0, COLOR_WHITE, COLOR_GRAY);
const int k = 5; const int k = 5;
RCT s = r; s.right = s.left+k; s.bottom = s.top+k; RCT s = r; s.right = s.left+k; s.bottom = s.top+k;
xvt_dwin_draw_rect(win(), &s); xvt_dwin_draw_rect(win(), &s);

View File

@ -9,7 +9,7 @@ PAGE "Libri sociali" -1 -1 78 9
NUMBER FLD_TABITL_CODTAB 2 NUMBER FLD_TABITL_CODTAB 2
BEGIN BEGIN
PROMPT 2 1 "Codice " PROMPT 2 1 "Codice "
FIELD %ITL->CODTAB FIELD CODTAB
HELP "Codice del libro sociale" HELP "Codice del libro sociale"
USE %ITL USE %ITL
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
@ -25,7 +25,7 @@ END
STRING FLD_TABITL_S0 50 STRING FLD_TABITL_S0 50
BEGIN BEGIN
PROMPT 2 3 "Descrizione " PROMPT 2 3 "Descrizione "
FIELD %ITL->S0 FIELD S0
HELP "Nome del libro sociale" HELP "Nome del libro sociale"
USE %ITL KEY 2 USE %ITL KEY 2
CHECKTYPE REQUIRED CHECKTYPE REQUIRED