Report - печать детали по координатам
Добавлено: 03 Апрель 2008, 7:20
C 5.5 ШВС
Руками формирую отчет для заполнения бланка.
Сперва - Первая деталь заполняет весь лист одиночными полями.
Затем в середине листа заполняю таблицу.
Т.е. в цикле вывожу вторую деталь по числу строк.
Выставляю координату первой строки таблицы по Y для печати второй
детали - печатаю первую строку
Для последовательной печати остальных строк выставляю Y в 0 для этой
же, второй детали - печатаю остальные строки.
Вывожу отчет и вижу:
первая строка - в начале листа (т.е. Y как бы 0, хотя координату
выставлял)
остальные строки - там где положено в таблице, в центре листа, по
порядку.
Привожу код
report REPORT,AT(0,0,210,292),PAPER(PAPER:A4),PRE(RPT),FONT('Arial Cyr',10,,FONT:regular),MM
page1 DETAIL,AT(,,210,290),USE(?Page1),FONT(,10,COLOR:Black,FONT:bold),ABSOLUTE
....
T_line DETAIL,AT(5,,210,6),USE(?T_line),FONT(,9,,FONT:regular)
STRING(@n2),AT(4,1,4,4),USE(pn_d1v),RIGHT,FONT(,10,COLOR:Black,,CHARSET:ANSI),#ORIG(pn_d1v)
STRING(@s40),AT(17,1,77,4),USE(D1V:NAME),LEFT(2),FONT(,,COLOR:Black,,CHARSET:ANSI),#ORIG(D1V:NAME)
STRING(@s14),AT(140,1,33,5),USE(d1v_dsdn),CENTER,FONT(,,COLOR:Black,,CHARSET:ANSI),#ORIG(d1v_dsdn)
END
code
....
print(rpt:page1)
....
set(d1v:fnp_k,d1v:fnp_k)
pn_d1v = 0
loop
next(d1v)
if errorcode(); break.
pn_d1v += 1
if pn_d1v = 1 !для первой строки
SETTARGET(Report)
?t_line{prop:at,2} = 146
SETTARGET
elsif pn_d1v = 2 !для второй и последующих
SETTARGET(Report)
?t_line{prop:at,2} = 0
SETTARGET
.
print(rpt:t_line)
.
Руками формирую отчет для заполнения бланка.
Сперва - Первая деталь заполняет весь лист одиночными полями.
Затем в середине листа заполняю таблицу.
Т.е. в цикле вывожу вторую деталь по числу строк.
Выставляю координату первой строки таблицы по Y для печати второй
детали - печатаю первую строку
Для последовательной печати остальных строк выставляю Y в 0 для этой
же, второй детали - печатаю остальные строки.
Вывожу отчет и вижу:
первая строка - в начале листа (т.е. Y как бы 0, хотя координату
выставлял)
остальные строки - там где положено в таблице, в центре листа, по
порядку.
Привожу код
report REPORT,AT(0,0,210,292),PAPER(PAPER:A4),PRE(RPT),FONT('Arial Cyr',10,,FONT:regular),MM
page1 DETAIL,AT(,,210,290),USE(?Page1),FONT(,10,COLOR:Black,FONT:bold),ABSOLUTE
....
T_line DETAIL,AT(5,,210,6),USE(?T_line),FONT(,9,,FONT:regular)
STRING(@n2),AT(4,1,4,4),USE(pn_d1v),RIGHT,FONT(,10,COLOR:Black,,CHARSET:ANSI),#ORIG(pn_d1v)
STRING(@s40),AT(17,1,77,4),USE(D1V:NAME),LEFT(2),FONT(,,COLOR:Black,,CHARSET:ANSI),#ORIG(D1V:NAME)
STRING(@s14),AT(140,1,33,5),USE(d1v_dsdn),CENTER,FONT(,,COLOR:Black,,CHARSET:ANSI),#ORIG(d1v_dsdn)
END
code
....
print(rpt:page1)
....
set(d1v:fnp_k,d1v:fnp_k)
pn_d1v = 0
loop
next(d1v)
if errorcode(); break.
pn_d1v += 1
if pn_d1v = 1 !для первой строки
SETTARGET(Report)
?t_line{prop:at,2} = 146
SETTARGET
elsif pn_d1v = 2 !для второй и последующих
SETTARGET(Report)
?t_line{prop:at,2} = 0
SETTARGET
.
print(rpt:t_line)
.