Размеры в Report

Обсуждение извечных проблем кларионовских (и не только) отчетов

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Гость

Сообщение Гость »

Здравствуйте.

Как изменить размеры листа и область печати? То, что ниже не работает.
Что не так, не подскажите?

Код: Выделить всё

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)
Гость

Сообщение Гость »

Привет

У меня вот так нормально работает:

Код: Выделить всё

 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)
Гость

Сообщение Гость »

Здравствуйте .

Спасибо, что за два дня наконец-то хоть кто-то проэрагировал на мой запрос.

ТАк вроде у меня почти тоже самое, но граници остаются как в обьявлении REPORT. Единственно я все делаю без Preview. Не думаю, что в этом дело.

GetThousFromMilliMm() - это какая то Ваша процедурка?

--
С уважением, Виктор Боришевич
Написал: ClaList(2)
Гость

Сообщение Гость »

А вообще что надо? Если изменить размеры листа, так зачем? Ставить всегда Self.refrpt{PROPPRINT:Paper} = PAPER:A4 (ну можно ещё A3 добавить). Это пойдёт для печати и на маленьких листах

Если изменить область печати? Так делать деталь без размеров, чтобы она занимала весь лист, уже настроенный на PAPER:A4. Тогда можно печатать где угодно. Ограничением будет лишь область печати принтера (близко к краям не печатает).
GetThousFromMilliMm() - это какая то Ваша процедурка?
да

Алексей
Написал: ClaList(2)
Гость

Сообщение Гость »

Программа должна печатать билеты. Размеры билетов могут
быть разные. Они уже нарезаны по нужному размеру и
подаются в принтер по одному. Если размер допустим
прописать 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)
Гость

Сообщение Гость »

Не думаю, что проблема в зашитых в принтер размерах. Ведь если в объявлении 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)
Гость

Сообщение Гость »

замените

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)
Гость

Сообщение Гость »

SomeReport{PROP:Height} = Lock:Form.fwidth !6" form height
SomeReport{PROP:Width} = Lock:Form.fheight

Это же задаются координаты Report, а как быть с бумагой?

--
С уважением,
Виктор
Написал: ClaList(2)
Гость

Сообщение Гость »

Как-то приходилось бодаться с траблой установки числа копий для печати, выяснилось, что установки для PROPPRINT:... не работают если отчет уже сформирован и приходилось сохранять WMF из очереди Preview закрывать текущий отчет, настраивать принтер и печатать по новой эти WMF-ы. Короче, попробуйте перенести всю настройку принтера до Open(SomeReport).

PS. Безбазбездно, то есть даром :D

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