установка PAPER:USER в report
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4664
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 8 раз
- Поблагодарили: 37 раз
установка PAPER:USER в report
Добрый день.
Столкнулся с тем, что кларион (проверяю на clarion63) некорректно обрабатывает установку пользовательского размера бумаги. В процедуре объявлена report структура с PAPER:A4. Перед открытием ее устнавливаю в нужные размеры:
SELF.report{PROPPRINT:PAPER} = PAPER:User
SELF.report{PROPPRINT:paperwidth} = int(8250/210*SELF.ReportPaperWidth)
SELF.report{PROPPRINT:paperheight} = int(8250/210*SELF.ReportPaperHeight)
После открытия проперти показывают все, как установил (если принтер поддерживает). Но на предпросмотр выходит какая-то фигня. Ставлю в декларации report явно PAPER:User и нужные размеры бумаги. Все выводится корректно. Ставлю в декларации другие размеры, перед открытием присваиваю нужные (как написал выше). В предпросмотр выводится так, как будто размеры бумаги из декларации, а не те, которые установлены программно. Хотя проперти показывают, как устанавливал программно.
Может, кто тоже сталкивался с этим и знает решение (кроме отдельной декларации report под нужный размер бумаги)?
Столкнулся с тем, что кларион (проверяю на clarion63) некорректно обрабатывает установку пользовательского размера бумаги. В процедуре объявлена report структура с PAPER:A4. Перед открытием ее устнавливаю в нужные размеры:
SELF.report{PROPPRINT:PAPER} = PAPER:User
SELF.report{PROPPRINT:paperwidth} = int(8250/210*SELF.ReportPaperWidth)
SELF.report{PROPPRINT:paperheight} = int(8250/210*SELF.ReportPaperHeight)
После открытия проперти показывают все, как установил (если принтер поддерживает). Но на предпросмотр выходит какая-то фигня. Ставлю в декларации report явно PAPER:User и нужные размеры бумаги. Все выводится корректно. Ставлю в декларации другие размеры, перед открытием присваиваю нужные (как написал выше). В предпросмотр выводится так, как будто размеры бумаги из декларации, а не те, которые установлены программно. Хотя проперти показывают, как устанавливал программно.
Может, кто тоже сталкивался с этим и знает решение (кроме отдельной декларации report под нужный размер бумаги)?
C6/C11, ШВС, tps/btrieve.
-
- ✯ Ветеран ✯
- Сообщения: 5006
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 7 раз
- Поблагодарили: 21 раз
установка PAPER:USER в report
Надо, наверно, после открытия. У меня есть вот такое:
Но у меня С10, если что.
Код: Выделить всё
ThisWindow.OpenReport PROCEDURE
ReturnValue BYTE,AUTO
CODE
SYSTEM{PROP:PrintMode} = 3
ReturnValue = PARENT.OpenReport()
IF ReturnValue = Level:Benign
SELF.Report{PROPPRINT:Extend}=True
END
i# = printer{propprint:Paper}
if i#<>PAPER:User
Report{propprint:Paper} = i#
end
RETURN ReturnValue
We are hard at work… for you.
- Игорь Столяров
- Ветеран движения
- Сообщения: 7419
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 16 раз
- Поблагодарили: 50 раз
установка PAPER:USER в report
Надо выставлять параметры печатного листа после открытия REPORT.
Посмотрите метод GraphClass.DrawReport в файле svgraph.clw
Печататься будет корректно, а что касается прорисовки листа в окне предпросмотра,
то нужно лезть в ReportManager.Init и выставлять размеры листа до SELF.Preview.Init
За теми кто отстал - не возвращаться. (С) Кодекс
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4664
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 8 раз
- Поблагодарили: 37 раз
установка PAPER:USER в report
Я имел ввиду не размер листа в report, а размер бумаги. Когда report открыт, то установка размера бумаги не работает. Если устанавливать до открытия, то проперти показывают, что сработало, но вывод некорректный. На этом форуме тема уже обсуждалась, но повисла без решения. Последней была рекомендация попробовать до открытия, что я и сделал...
C6/C11, ШВС, tps/btrieve.
- Игорь Столяров
- Ветеран движения
- Сообщения: 7419
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 16 раз
- Поблагодарили: 50 раз
установка PAPER:USER в report
Ещё раз. Не судите по тому, что видите в окне предварительного просмотра.
В нём параметры отчёта на момент инициализации Preview.
Выставьте размеры печатного листа (я не знаю, что такое "размер бумаги"), например
для ленточного принтера этикеток. Всё прекрасно печатается ...
Хотя в окне предпросмотра размер печатного листа будет выставлен по структуре REPORT (см. ниже как обойти)
За теми кто отстал - не возвращаться. (С) Кодекс
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4664
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 8 раз
- Поблагодарили: 37 раз
установка PAPER:USER в report
Размер бумаге - это я описал:
SELF.report{PROPPRINT:paperwidth} = int(8250/210*SELF.ReportPaperWidth)
SELF.report{PROPPRINT:paperheight} = int(8250/210*SELF.ReportPaperHeight)
Под размером листа отчета я понимаю вот это:
SELF.report{PROP:at,3} = int(8250/210*SELF.ReportPaperWidth)
SELF.report{PROP:at,4} = int(8250/210*SELF.ReportPaperHeight)
Вопрос именно по бумаге. Принтер этикеток у меня не под рукой, но я сужу по предпросмотру формы, сделанной мной же в FRB, которая правильно печатает. Перенес аналогичную функцию в свой дизайнер. предпросмотр аналогичный FRB получаю только при явно заданных paperwidth и paperheight в декларации report структуры. Если FRB умеет, значит как-то можно. Видимо, упускаю какой-то нюанс...
Самое интересное, что проперти выдают практически идентичные значения и у меня, и в FRB. Это если устанавливать размер бумаги до открытия отчета. А получаемый результат разный...
SELF.report{PROPPRINT:paperwidth} = int(8250/210*SELF.ReportPaperWidth)
SELF.report{PROPPRINT:paperheight} = int(8250/210*SELF.ReportPaperHeight)
Под размером листа отчета я понимаю вот это:
SELF.report{PROP:at,3} = int(8250/210*SELF.ReportPaperWidth)
SELF.report{PROP:at,4} = int(8250/210*SELF.ReportPaperHeight)
Вопрос именно по бумаге. Принтер этикеток у меня не под рукой, но я сужу по предпросмотру формы, сделанной мной же в FRB, которая правильно печатает. Перенес аналогичную функцию в свой дизайнер. предпросмотр аналогичный FRB получаю только при явно заданных paperwidth и paperheight в декларации report структуры. Если FRB умеет, значит как-то можно. Видимо, упускаю какой-то нюанс...
Самое интересное, что проперти выдают практически идентичные значения и у меня, и в FRB. Это если устанавливать размер бумаги до открытия отчета. А получаемый результат разный...
C6/C11, ШВС, tps/btrieve.
- Игорь Столяров
- Ветеран движения
- Сообщения: 7419
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 16 раз
- Поблагодарили: 50 раз
установка PAPER:USER в report
Я не знаком с сим продуктом, но подозреваю, что установка параметров отчёта в нём выполняется до инициализации Preview.
Или сделан свой класс Preview, в котором считываются текущие параметры Report на момент открытия окна, а не инициализации.
Других вариантов-то и нет ...
За теми кто отстал - не возвращаться. (С) Кодекс
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4664
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 8 раз
- Поблагодарили: 37 раз
установка PAPER:USER в report
Разобрался. Размеры бумаги задаются всегда в Dialog units, я неправильно их пересчитывал. Да, задавать размер надо после открытия report. Сейчас вроде все как надо заработало... Всем спасибо.
C6/C11, ШВС, tps/btrieve.
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4664
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 8 раз
- Поблагодарили: 37 раз
установка PAPER:USER в report
Кому интересно, вот что в итоге получилось:
https://olegon.ru/showpost.php?p=298719&postcount=38
https://olegon.ru/showpost.php?p=298719&postcount=38
C6/C11, ШВС, tps/btrieve.
- Игорь Столяров
- Ветеран движения
- Сообщения: 7419
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 16 раз
- Поблагодарили: 50 раз
установка PAPER:USER в report
Красота ! Чувствуется, что у Вас в этой теме богатый опыт и большие наработки.
Вы бы подумали на тему выпуска такого дизайнера этикеток в виде отдельного DLL, с работой независимо от БД (как iqXML).
Например, в качестве параметра метода печати передаётся имя CSV / XML файла определённой структуры c ассортиментом.
В среде разработчиков Clarion существует дефицит простого и понятного редактора этикеток, что-то вроде FastReport для Delphi.
List&Label - конечно великолепный продукт, но дорогой и большой.
Тот же FRB тоже пытается быть универсальным редактором, но много ненужного в подавляющем большинстве случаев.
При элементарном интерфейсе (вызов редактирования файла с шаблоном, печать пакета по шаблону и пакету ассортимента),
и адекватной цене без оглядок на Европы - это будет бомба !
За теми кто отстал - не возвращаться. (С) Кодекс
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4664
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 8 раз
- Поблагодарили: 37 раз
установка PAPER:USER в report
Это дизайнер бланков, этикетки одно из применений. В нем делают ценники и можно делать различные печатные формы первичных документов. В коде работа такая же простая, как с обычным report.
С этикетками хорошо работает и FRB. Там только нет вывода штрих-кодов в rtf и нельзя автоматически масштабировать шрифт текста под размер фрагмента. Обычно без этого можно обойтись.
Насколько я знаю, кто хотел, себе подобные дизайнеры сделали. Видел еще 3 реализации, кроме своего и FRB. Но все, кроме FRB и CapeSoft, делали под свои задачи. Делать на продажу - это затраты увеличиваются значительно. Я особого смысла в этом не вижу.
С этикетками хорошо работает и FRB. Там только нет вывода штрих-кодов в rtf и нельзя автоматически масштабировать шрифт текста под размер фрагмента. Обычно без этого можно обойтись.
Насколько я знаю, кто хотел, себе подобные дизайнеры сделали. Видел еще 3 реализации, кроме своего и FRB. Но все, кроме FRB и CapeSoft, делали под свои задачи. Делать на продажу - это затраты увеличиваются значительно. Я особого смысла в этом не вижу.
C6/C11, ШВС, tps/btrieve.
- Игорь Столяров
- Ветеран движения
- Сообщения: 7419
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 16 раз
- Поблагодарили: 50 раз
установка PAPER:USER в report
Жаль конечно ...
Для создания хорошего дизайнера этикеток требуется отличное знание Clarion и потребностей продаванов.
Это редко сходится в одном месте ...
За теми кто отстал - не возвращаться. (С) Кодекс
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4664
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 8 раз
- Поблагодарили: 37 раз
установка PAPER:USER в report
Ну а что FRB не взять? Для наших цена в 2 раза дешевле. Под стандартные шаблоны тестируется, так как народа у буржуев на нем немало работает.
У меня с FRB проблема с обновлениями. Под свои шаблоны просто поменять dll не получается. Когда пытался обновиться, то так и не получилось. Подправил шаблоны, собрал приложение, но полезли баги в рантайм у клиентов. Пришлось откатываться на старую версию. И трудно понять, в чем дело. Со старой dll работает, с новой тексты за границы страницы при прямой печати на принтер улетают... То есть это как рулетка, то ли будет работать, то ли нет. Разные ненужные мне опции появились, типа хранилища бланков на sql сервере или ip-сервере - шаблоны сильно усложнились и прицепились к abc. Поэтому начал потихоньку делать свой, там хоть все в сырцах и можно в случае чего поправить. Ну и сделать функционал какой нужно. В конце концов, все к динамическому наполнению report структуры сводится...
А в связи с возможным переходом на c10 приходится чесать репу. С одной стороны, можно купить обновление FRB, но вопрос в том, будет ли работать и сколько усилий потратить надо на то, чтобы разобраться. И будут ли решаться вопросы в дальнейшем (например, критична возможность редактирования в Writer). С другой стороны, есть свой аналог, который на сегодня функциональнее, проще в использовании и в нем реализовано практически все, чего не хватало в FRB. Код сырцов под своим пошаговым отладчиком можно прогонять. Есть, наконец, автоматический конвертор бланков с FRB (хотя бизнес-логику все равно надо уточнять и тестировать). Но на FRB более 200 бланков в эксплуатации. И свой недостаточно обкатан на практике, реально только ценники делают и бланки по пальцам рук пересчитать можно.
В общем, вопрос не простой. Но и никто особо не торопит, с рантаймом c6 приемлемо работает и можно выбирать, где на чем быстрее сделать.
У меня с FRB проблема с обновлениями. Под свои шаблоны просто поменять dll не получается. Когда пытался обновиться, то так и не получилось. Подправил шаблоны, собрал приложение, но полезли баги в рантайм у клиентов. Пришлось откатываться на старую версию. И трудно понять, в чем дело. Со старой dll работает, с новой тексты за границы страницы при прямой печати на принтер улетают... То есть это как рулетка, то ли будет работать, то ли нет. Разные ненужные мне опции появились, типа хранилища бланков на sql сервере или ip-сервере - шаблоны сильно усложнились и прицепились к abc. Поэтому начал потихоньку делать свой, там хоть все в сырцах и можно в случае чего поправить. Ну и сделать функционал какой нужно. В конце концов, все к динамическому наполнению report структуры сводится...
А в связи с возможным переходом на c10 приходится чесать репу. С одной стороны, можно купить обновление FRB, но вопрос в том, будет ли работать и сколько усилий потратить надо на то, чтобы разобраться. И будут ли решаться вопросы в дальнейшем (например, критична возможность редактирования в Writer). С другой стороны, есть свой аналог, который на сегодня функциональнее, проще в использовании и в нем реализовано практически все, чего не хватало в FRB. Код сырцов под своим пошаговым отладчиком можно прогонять. Есть, наконец, автоматический конвертор бланков с FRB (хотя бизнес-логику все равно надо уточнять и тестировать). Но на FRB более 200 бланков в эксплуатации. И свой недостаточно обкатан на практике, реально только ценники делают и бланки по пальцам рук пересчитать можно.
В общем, вопрос не простой. Но и никто особо не торопит, с рантаймом c6 приемлемо работает и можно выбирать, где на чем быстрее сделать.
C6/C11, ШВС, tps/btrieve.
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4664
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 8 раз
- Поблагодарили: 37 раз
установка PAPER:USER в report
Вчера конвертнул из FRB несколько непростых бланков - торг12, торг13, 1-t, форма b. Кто в теме, тот поймет. В общем, не так и долго получается. Получил приятный бонус. Оказывается, у меня в дизайнере бланки можно рисовать в портрете или ландшафте, а печатать с разворотом. За 2 года как-то выпало из памяти. Правду говорят, что склероз самая приятная болезнь - ничего не болит и каждый день узнаешь что-то новое...
C6/C11, ШВС, tps/btrieve.
- Игорь Столяров
- Ветеран движения
- Сообщения: 7419
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 16 раз
- Поблагодарили: 50 раз
установка PAPER:USER в report
Кто-то недавно искал как вращать отчёты между книжной и альбомной раскладкой ...
За теми кто отстал - не возвращаться. (С) Кодекс