Страница 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. Безбазбездно, то есть даром :D

Удачи!
__________________________________
Владимир Якимченко (ICQ: 16993194)
Написал: ClaList(2)