powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Печать DW с шапкой
15 сообщений из 15, страница 1 из 1
Печать DW с шапкой
    #35505773
AIS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Печатаю шапку документа и потом сразу DW. Использую для DW PrintDataWindow в процессе PrintOpen. Чтобы DW было сразу после шапки изменяю Margin.Top на расчетную величину. И всё бы ОК, но на следующей странице DW печатаеться с таким же отступом.
1. Можно ли как-то отловить на какой строке закончилась печать 1-й страницы, изменить Margin.Top и начать печать 2-й страницы со следующей строки?
2. Как после PrintDataWindow отловить координаты курсора печати? PrintX и PrintY до PrintDataWindow работают, а после нет.
...
Рейтинг: 0 / 0
Печать DW с шапкой
    #35505801
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AISПечатаю шапку документа и потом сразу DW. Использую для DW PrintDataWindow в процессе PrintOpen. Чтобы DW было сразу после шапки изменяю Margin.Top на расчетную величину. И всё бы ОК, но на следующей странице DW печатаеться с таким же отступом.
1. Можно ли как-то отловить на какой строке закончилась печать 1-й страницы, изменить Margin.Top и начать печать 2-й страницы со следующей строки?
2. Как после PrintDataWindow отловить координаты курсора печати? PrintX и PrintY до PrintDataWindow работают, а после нет.
По поводу 1 вопроса. Есть функции FirstRowOnPage/LastRowOnPage - создаете computed field' в detail'е с последней и смотрите для первой строки значение. Или просто печатать композит - таким образом решая проблему заголовка.
...
Рейтинг: 0 / 0
Печать DW с шапкой
    #35505858
AIS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Локшин Марк
По поводу 1 вопроса. Есть функции FirstRowOnPage/LastRowOnPage - создаете computed field' в detail'е с последней и смотрите для первой строки значение. Или просто печатать композит - таким образом решая проблему заголовка.
Есть такие функции, но они по-моему относятся к видимым в DW строкам,а не к строкам на печатном листе.
А как начать печать с определенной строки? При изменении Margin строки двигаються из одной страницы в другую.

Композит - читал, но требует как минимум создания их под каждый DW. Мой же вариант более на мой взгляд универсален и не требует создавать кучу "композитов". Создаю шаблон "шапки", динамически его заполняю данными о DW и далее его же DW и печатаю. Просто и красиво, а главно не так трудоемко как с композитами.
...
Рейтинг: 0 / 0
Печать DW с шапкой
    #35505904
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AIS Локшин Марк
По поводу 1 вопроса. Есть функции FirstRowOnPage/LastRowOnPage - создаете computed field' в detail'е с последней и смотрите для первой строки значение. Или просто печатать композит - таким образом решая проблему заголовка.
Есть такие функции, но они по-моему относятся к видимым в DW строкам,а не к строкам на печатном листе.
А как начать печать с определенной строки? При изменении Margin строки двигаються из одной страницы в другую.
Если включить режим Print.Preview, то они возвращают информацию в соответствии со своим названием. Если этот режим выключен, то страница просто считается равна размеру экрана. И так понимаю, просто начать нужно будет печатать с сооответствующей страницы. А ненужные первые строки, если уж есть такая необходимость, можно отфильтровать.
AIS
Композит - читал, но требует как минимум создания их под каждый DW. Мой же вариант более на мой взгляд универсален и не требует создавать кучу "композитов". Создаю шаблон "шапки", динамически его заполняю данными о DW и далее его же DW и печатаю. Просто и красиво, а главно не так трудоемко как с композитами.
На форуме было обсуждение о возможности динамического создания composite datawindow, но предложенные решения на мой взгляд - так себе, хотя их можно и использовать.
...
Рейтинг: 0 / 0
Печать DW с шапкой
    #35505946
AIS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Локшин МаркЕсли включить режим Print.Preview, то они возвращают информацию в соответствии со своим названием. Если этот режим выключен, то страница просто считается равна размеру экрана. И так понимаю, просто начать нужно будет печатать с сооответствующей страницы. А ненужные первые строки, если уж есть такая необходимость, можно отфильтровать.
Понял, буду пробывать. Конечно, плохо, что нужные данные функций надо брать только через Print.Preview, ведь печать может начаться и без предварительного просмотра.
На счет фильтра - наверное это самый простой и надежный вариант, т.е. отфильтруем все напечатанные строки, изменяем Margin, и просто запускаем печать DW с 1-й страницы с нового листа.
...
Рейтинг: 0 / 0
Печать DW с шапкой
    #35505975
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AISПонял, буду пробывать. Конечно, плохо, что нужные данные функций надо брать только через Print.Preview, ведь печать может начаться и без предварительного просмотра.

Ну так никто Вам не мешает перед началом печати из скрипта включить режим Print.Preview, напечатать, а потом выключить.
AISНа счет фильтра - наверное это самый простой и надежный вариант, т.е. отфильтруем все напечатанные строки, изменяем Margin, и просто запускаем печать DW с 1-й страницы с нового листа.
Я думаю, что нужно пропустить печать первой страницы при помощи соответствующего кода возврата на событии PrintPage. А первую страницу подогнать при помощи увеличения размера detail первой строки до такого размера, чтобы на первой странице умещалоь столько же строк, сколько и с учетом дополнительной шапки. Иначе всякие выражения типа PageCount() будут не то выдавать внутри DataWindow.
...
Рейтинг: 0 / 0
Печать DW с шапкой
    #35506537
AIS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Локшин Марк
Я думаю, что нужно пропустить печать первой страницы при помощи соответствующего кода возврата на событии PrintPage. А первую страницу подогнать при помощи увеличения размера detail первой строки до такого размера, чтобы на первой странице умещалоь столько же строк, сколько и с учетом дополнительной шапки. Иначе всякие выражения типа PageCount() будут не то выдавать внутри DataWindow.
Вариант интересный, можно поэксперементировать. Но у меня есть в header заголовки столбцов и ещё куча разных элементов, поэтому мне это врядли поможет. Я то внешнюю шапку леплю чисто из-за наличия в header элементов, которые уже хорохо увязаны между собой, да и видов DW много, т.е. усложнять эти взаимосвязи координат очень трудоёмко и сам потом, врядли вспомню, почему сделал так, а не иначе.
Идея хороша, но думаю, что надо увеличить и подгонять detail последней строки первого листа, а не первой.
Возможно, что это даст возможность не применять фильтры и усложнять код, и упростит печать следующих страниц.
...
Рейтинг: 0 / 0
Печать DW с шапкой
    #35507530
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Локшин Марк
На форуме было обсуждение о возможности динамического создания composite datawindow, но предложенные решения на мой взгляд - так себе, хотя их можно и использовать.
Я бы попросил. Если это нормально сделано, то работает как часы...
...
Рейтинг: 0 / 0
Печать DW с шапкой
    #35507716
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Филипп Локшин Марк
На форуме было обсуждение о возможности динамического создания composite datawindow, но предложенные решения на мой взгляд - так себе, хотя их можно и использовать.
Я бы попросил. Если это нормально сделано, то работает как часы...
Это про вариант с импортом *.srd внутрь библиотеки? Там вполне всебе вырисовываются проблемы при аварийном завершении приложения.
...
Рейтинг: 0 / 0
Печать DW с шапкой
    #35509453
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Локшин Марк Филипп Локшин Марк
На форуме было обсуждение о возможности динамического создания composite datawindow, но предложенные решения на мой взгляд - так себе, хотя их можно и использовать.
Я бы попросил. Если это нормально сделано, то работает как часы...
Это про вариант с импортом *.srd внутрь библиотеки? Там вполне всебе вырисовываются проблемы при аварийном завершении приложения.
Нет, это БЕЗ всякого импорта, но при абсолютной динамичности dataobjects...
...
Рейтинг: 0 / 0
Печать DW с шапкой
    #35510113
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ФилиппНет, это БЕЗ всякого импорта, но при абсолютной динамичности dataobjects...
Через Modify("create report...") что ли? По-моему это тут не обсуждалось, а что обсуждалось было не то... Тынц . Тынц .
...
Рейтинг: 0 / 0
Печать DW с шапкой
    #35514145
AIS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Локшин Марк и Филипп
Позвольте Вас вернуть к вопросу топика. :)
Вариант, который Вы обсуждаете уже был и кто не знает может с ним ознакомится.
Я же предложил обсудить вариант создания шапки другим методом и думаю, что он более интересен.
Что такое "шапка"? Это кратное содержание того, что будет далее. Поэтому это всего лишь пара строк которые надо вставить перед DW. Это гораздо легче, чем то очем Вы говорите. Это не так громоздко, не так проблемно и тем более не так ресурсоёмко. Это всего лишь десяток строк кода. И даже если Вы в них сделаете ошибку (естественно что не критическую), то печать всё равно состоится. В худшем случае чуть не в том виде как Вы планировали. :)
...
Рейтинг: 0 / 0
Печать DW с шапкой
    #35514189
Фотография Dmitry.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 AIS
не шуми на старейшин :)
...
Рейтинг: 0 / 0
Печать DW с шапкой
    #35514256
18-я весна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Локшин Марк ФилиппНет, это БЕЗ всякого импорта, но при абсолютной динамичности dataobjects...
По-моему это тут не обсуждалось
Я помню как Филипп рассказывал про принцип. Так что обсуждалось.
Если кратко то суть такая:
- в PBL имеется DWO - заготовка для вложенных отчетов (просто пустое)
- в рантайм создается синтаксис композитного DW а в качестве имен вложенных DW указывается имя заготовки
- создается синтаксис вложенных DW и приводится к виду применимому для передачи в Modify()
- для каждого вложенного DW через GetChild получаем DWC и применяем Modify()

Трансляция из синтаксиса Create в синтаксис Modify заключается в следующем.
Секция table() остается неизменной.
Секция DataWindow(attr=value) и ряд других необъектов приводится к виду DataWindow.attr=value ...
К текстам объектов column, text и т.д. прибавляется префикс create .
...
Рейтинг: 0 / 0
Печать DW с шапкой
    #35515396
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я тут немного всех запутал, а все дружно повелись :) . Вообще-то то обсужнедие, про которое я вспоминал к этому случаю не так чтобы и нужно. Там и composite DataWindow и сами DataWindow из которых они состоят строились динамически. А здесь же достаточно просто динамически разместить объекты типа report на каком-нибудь composite'е пустышке. Не так много кода...
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Печать DW с шапкой
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]