Страница 1 из 1
Добавлено: 30 Март 2004, 17:13
Гость
Здравствуйте.
Как изменить размеры листа и область печати? То, что ниже не работает.
Что не так, не подскажите?
Код: Выделить всё
Report REPORT('Печать билетов'),AT(,,72,95),PRE(RPT),FONT('Courier New',10,,),MM
detail DETAIL,AT(0,0,72,95),USE(?Body)
END
END
code
Open(Report)
settarget(Report,?body)
.....
Report{Prop:AT,3} = Lock:Form.fwidth
Report{Prop:AT,4} = Lock:Form.fheight
Report{PROPPRINT:PAPER,1} = PAPER:USER
Report{PROPPRINT:PAPER,2} = Lock:Form.fwidth
Report{PROPPRINT:PAPER,3} = Lock:Form.fheight
...
SetPosition(?body,1,1,Lock:Form.fwidth-2,Lock:Form.fheight-2)
--
С уважением,
Виктор Боришевич
mailto:
victor@kinosoft.ru
тел.моб. (095) 5174066
тел.раб. (095) 9169220
факс (095) 9241331
ISQ 58703277
Написал: ClaList(2)
Добавлено: 31 Март 2004, 12:27
Гость
Привет
У меня вот так нормально работает:
Код: Выделить всё
Rpt REPORT
DETAIL,USE(?D)
END
END
OPEN(Self.refrpt); SETTARGET(self.refrpt)
Self.refrpt{Prop:Preview} = Self.refqWMFNames
Self.refrpt{Prop:Thous} = 1
Self.refrpt{Prop:Text} = 'EditorPrintJob'
Self.refrpt{Prop:Landscape} = CHOOSE(PageWidth > PageHeight, 1, 0)
IF IsA4
Self.refrpt{Prop:Width} = GetThousFromMilliMm(21000)
Self.refrpt{Prop:Height} = GetThousFromMilliMm(29700)
Self.refrpt{PROPPRINT:Paper} = PAPER:A4
ELSE
Self.refrpt{Prop:Width} = refcDisplay.GetThousFromMilliMm(29700)
Self.refrpt{Prop:Height} = refcDisplay.GetThousFromMilliMm(42000)
Self.refrpt{PROPPRINT:Paper} = PAPER:A3
END
Алексей
Написал: ClaList(2)
Добавлено: 31 Март 2004, 16:47
Гость
Здравствуйте .
Спасибо, что за два дня наконец-то хоть кто-то проэрагировал на мой запрос.
ТАк вроде у меня почти тоже самое, но граници остаются как в обьявлении REPORT. Единственно я все делаю без Preview. Не думаю, что в этом дело.
GetThousFromMilliMm() - это какая то Ваша процедурка?
--
С уважением, Виктор Боришевич
Написал: ClaList(2)
Добавлено: 31 Март 2004, 19:16
Гость
А вообще что надо? Если изменить размеры листа, так зачем? Ставить всегда Self.refrpt{PROPPRINT:Paper} = PAPER:A4 (ну можно ещё A3 добавить). Это пойдёт для печати и на маленьких листах
Если изменить область печати? Так делать деталь без размеров, чтобы она занимала весь лист, уже настроенный на PAPER:A4. Тогда можно печатать где угодно. Ограничением будет лишь область печати принтера (близко к краям не печатает).
GetThousFromMilliMm() - это какая то Ваша процедурка?
да
Алексей
Написал: ClaList(2)
Добавлено: 01 Апрель 2004, 9:35
Гость
Программа должна печатать билеты. Размеры билетов могут
быть разные. Они уже нарезаны по нужному размеру и
подаются в принтер по одному. Если размер допустим
прописать A4 а билет имеет размер меньший как по ширине
так и по длине то при печати одного билета, принтер будет
требовать еще бумагу, чтоб прогнать ее пока размер в
мозгах принтера не станет А4. Поэтому и меняю размер
бумаги.
victor@kinosoft.ru
Здравствуйте, victor.
А что, билеты печатают на обычном принтере? В мою бытность их печатали на спец. принтерах. И там такой проблемы вообще не возникало. Этож какой принтер нужен чтобы справился с таким потоком билетов?
--
С уважением,
Олег mailto:
iov@freemail.ru
Я помню с Paper:User были проблемы, а вот если делать PAPER:конкретный (во
всяком случае для a4 и a3), то нормально поэтому я всё про то же:
тогда подобрать соответствующую размеру билета PAPER: например, PAPER:ENV_DL
и делать rpt{PROPPRINT:Paper} = PAPER:ENV_DL
Если так не выйдет, то может быть принтер не хочет печатать, если размеры при этом не соспадают ни с одним из поддерживаемых им размеров. Ведь каждый принтер поддерживает свой набор размеров листов. Этот список можно получить.
Тогда надо получить этот список, найти ближайший размер и на нем печатать.
Алексей
Написал: ClaList(2)
Добавлено: 01 Апрель 2004, 12:47
Гость
Не думаю, что проблема в зашитых в принтер размерах. Ведь если в объявлении Report задать произвольные размеры - он их отрабатывает.
Но на изменение никак не реагирует.
Код: Выделить всё
SomeReport REPORT('Печать билетов'),AT(,,72,95),PRE(RPT),FONT('Courier New',10,,),MM!,PAPER(PAPER:USER,72,95)
!detail DETAIL,AT(0,0,72,95),USE(?Body)
detail DETAIL,AT(,,,,),USE(?Body)
END
END
code
Open(SomeReport)
SomeReport{PROPPRINT:Paper} = PAPER:User !Custom paper size
SomeReport{PROPPRINT:PAPERHeight} = Lock:Form.fwidth !6" form height
SomeReport{PROPPRINT:PAPERWidth} = Lock:Form.fheight
message('fwidth='&SomeReport{PROPPRINT:PAPERHeight}&'!fheight='&SomeReport{PROPPRINT:PAPERWidth})
!дает 0,0
SetPosition(?body,1,1,Lock:Form.fwidth-2,Lock:Form.fheight-2)
--
С уважением,
Виктор mailto:
victor@kinosoft.ru
Написал: ClaList(2)
Добавлено: 01 Апрель 2004, 15:28
Гость
замените
SomeReport{PROPPRINT:PAPERHeight} = Lock:Form.fwidth !6" form height
SomeReport{PROPPRINT:PAPERWidth} = Lock:Form.fheight
на
SomeReport{PROP:Height} = Lock:Form.fwidth !6" form height
SomeReport{PROP:Width} = Lock:Form.fheight
и message покажет то что надо (проверял у себя). А с PROPPRINT:PAPERWidth у меня тоже не работает. Почему - вопрос.
Это собственно то, что я отвечал в первый раз. Там как раз в этих 2 строках было отличие - я думал вы проверяли тогда это у себя
Алексей
Написал: ClaList(2)
Добавлено: 01 Апрель 2004, 19:46
Гость
SomeReport{PROP:Height} = Lock:Form.fwidth !6" form height
SomeReport{PROP:Width} = Lock:Form.fheight
Это же задаются координаты Report, а как быть с бумагой?
--
С уважением,
Виктор
Написал: ClaList(2)
Добавлено: 02 Апрель 2004, 9:38
Гость
Как-то приходилось бодаться с траблой установки числа копий для печати, выяснилось, что установки для PROPPRINT:... не работают если отчет уже сформирован и приходилось сохранять WMF из очереди Preview закрывать текущий отчет, настраивать принтер и печатать по новой эти WMF-ы. Короче, попробуйте перенести всю настройку принтера до Open(SomeReport).
PS.
Безбазбездно, то есть даром
Удачи!
__________________________________
Владимир Якимченко (ICQ: 16993194)
Написал: ClaList(2)