powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Report form preview
12 сообщений из 12, страница 1 из 1
Report form preview
    #38326607
Pulsar_p
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вывожу отчет на экран командой Report form myreport preview
Как мне узнать был ли нажат значок печати, т.е. был ли отправлен файл на принтер?
...
Рейтинг: 0 / 0
Report form preview
    #38326659
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pulsar_p, 7929856 . Ну и выше в теме ещё варианты есть.
...
Рейтинг: 0 / 0
Report form preview
    #38326684
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tanglirPulsar_p, 7929856 . Ну и выше в теме ещё варианты есть.

До кучи, ФАК-проект по отчетам
...
Рейтинг: 0 / 0
Report form preview
    #38326687
Pulsar_p
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tanglir, видел я эту ссылку, и сделал все, как в ней написано. Не ловит, хоть ты тресни.
Дело в том, что я использую предварительный вывод через reportpreview.app
Если я правильно понял, в этом случае предварительная обработка report'а происходит как-то по-другому. Никак не могу врубиться как мне поймать нажатие этой кнопки...
...
Рейтинг: 0 / 0
Report form preview
    #38326784
12345зайчик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
исходники reportpreview.app лежат в сыпцах фокспро.
...
Рейтинг: 0 / 0
Report form preview
    #38326955
Pulsar_p
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пауль, этот ФАК хорош для своего времени, в моем случае он не годится. Или я ошибаюсь?
Похожее решение нашел на одном из форумов:
**********************************************
SET REPORTBEHAVIOR 90
LOCAL loPreview, loReport
loReport = NEWOBJECT("ReportListener")
loPreview = ''
DO (_REPORTPREVIEW) WITH loPreview
WITH loPreview
.AllowPrintFromPreview = .F.
.Caption = "Предварительный просмотр перед печатью"
ENDWITH
loReport.ListenerType = 1
loReport.PreviewContainer = loPreview
REPORT FORM MyFRXFile OBJECT loReport
**********************************************
Суть проста: убирается кнопка печати из предварительного просмотра. Ну а при выходе из этого просмотра я спрошу пользователя, нужно ли ему печатать то, что он видел.
Что ж, если не найду ничего лучше, придется воспользоваться этим, но мне бы все-таки хотелось поймать нажатие кнопки Печать.
...
Рейтинг: 0 / 0
Report form preview
    #38327068
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pulsar_pПауль, этот ФАК хорош для своего времени, в моем случае он не годится. Или я ошибаюсь?
...
Суть проста: убирается кнопка печати из предварительного просмотра. Ну а при выходе из этого просмотра я спрошу пользователя, нужно ли ему печатать то, что он видел.
Что ж, если не найду ничего лучше, придется воспользоваться этим, но мне бы все-таки хотелось поймать нажатие кнопки Печать.

А скачать ФАК и посмотреть ?

Тогда читаем в разделе "Пользватель прервал печать?":

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
*!*	Зачастую вам необходимо изменить значение какого-либо флажка типа "напечатано", 
*!*	как только пользователь напечатал конкретный отчет.

*!*	Решение основано на том факте, что при отправке отчета на принтер всегда появляется 
*!*	стандартное окно "Printing..." (в русскоязычной Run-Time библиотеке, т.е. в готовом 
*!*	EXE, это окно имеет имя "Печать..."). В этом окне присутствует единственная кнопка 
*!*	"Cancel", нажатие на которую приводит к прерыванию отправки отчета на принтер.

*!*	Следовательно, необходимо сделать проверку на существование этого окна при печати 
*!*	самого первого объекта отчета и при печати самого последнего объекта отчета.

*!*	Если это окно существует при печати первого объекта - отчет был отправлен на печать.
*!*	Если это окно существует при печати последнего объекта - отчет был отправлен на печать 
*!*	полностью и не был прерван.

*!*	Для VFP самым первым выполняется событие On Entry полосы Title, а самым последним 
*!*	событие On Exit полосы Summary. Туда и следует поместить соответсятвующие проверки.

*!*	Для FoxPro2.x этих событий еще не существовало, поэтому проверки следует осуществлять 
*!*	просто в самом первом объекте полосы Title и в самом последнем объекте полосы Summary.

*!*	Тут следует заметить, что вне зависимости от указания диапазона печати (например, печатать 
*!*	только вторую страницу из трех страниц отчета) генератор отчетов все-равно выполнит печать 
*!*	начиная с самой первой страницы отчета. Поскольку у него просто нет возможности по другому 
*!*	определить что именно и на какой странице следует печатать.

*!*	Поэтому, если вам необходимо контролировать факт начала отправки на печать любой части 
*!*	отчета, то достаточно проверки в событии On Entry полосы Title. А если вам необходимо 
*!*	контролировать факт отправки на печать каждой страницы отчета в отдельности, то проверку 
*!*	следует делать в событии On Exit полосы Page Footer.
...
Рейтинг: 0 / 0
Report form preview
    #38327342
Pulsar_p
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulWist, в ссылке, которую давал tanglir, этот вариант рассматривается: IF WEXIST("Printing...") .OR. WEXIST("Печать…") и т.д. Но дело в том, что при использовании reportpreview.app для предварительного вывода, это решение не срабатывает (Я пробовал). Отказаться от reportpreview.app, в силу определенных причин (долго объяснять, но если в двух словах: у него много плюсов перед стандартным обработчиком, например, объекты можно поворачивать как угодно), я не могу.
Тчорт, как же поймать мне эту долбаную кнопку в сложившейся ситуации?
...
Рейтинг: 0 / 0
Report form preview
    #38327584
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SYS(2040) тоже не работает?
...
Рейтинг: 0 / 0
Report form preview
    #38327689
Pulsar_p
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир, дав том то и дело что нет. Вернее, не так как надо. Объясню подробнее:
При работе с отчетами я использую следующие обработчики: reportbuilder.app,reportoutput.app,reportpreview.app Зачем? Получаю много возможностей, например: поворачиваю объекты как угодно, сбрасываю отчет в tif или pdf, хоть постранично, хоть все страницы скопом, да много там ещё всего замечательного, пока не все освоил. То есть, перейти на стандартные обработчики я уже не могу, да и не хочу.
Теперь про SYS(2040): я следовал Вашим указаниям, как вставить переменную в Title – On entry: отчета и т.д. Если я отправляю на печать непосредственно(REPORT FORM myreport NOCONSOLE TO PRINTER), то SYS(2040) отрабатывает как надо, т.е. возвращает значение ‘2’; а вот если я отправляю на печать из Toolbar’а предпросмотра (REPORT FORM myreport PREVIEW), нажав значок принтера, возвращает значение ‘1’. Манипуляции с "ловлей" окон (WEXIST("Printing...") .OR. WEXIST("Печать…")) тоже ни к чему не приводят.
В общем, я так и не могу понять жал этот значок пользователь или нет.
...
Рейтинг: 0 / 0
Report form preview
    #38330028
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
* Был ли отчет распечатан
* Некорректное значение будет, если после нажатия кнопки "Печать"
* был вызван диалог выбора принтера и в нем нажали кнопку "Отмена

loReport = NEWOBJECT("isReportPrint")
loReport.ListenerType = 1

REPORT FORM d:\_fox_prg\test\test_vfp9\report1.frx to printer prompt object loReport

MessageBox(loReport.isPrint)

Define Class isReportPrint as ReportListener 
	isPrint = .F.
	
	Procedure AfterReport
		* Если вызов на печать без окна предварительного просмотра
		If this.ListenerType = 0	
			this.isPrint = .T.
		endif
	endproc

	Procedure OnPreviewClose
	LPARAMETERS lPrint
		this.isPrint = m.lPrint
*		DoDefault(lPrint)
	endproc


enddefine
...
Рейтинг: 0 / 0
Report form preview
    #38330897
Pulsar_p
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир, я довольно часто в своих программах использую Ваши решения, потому как либо не могу догадаться сам, либо Ваши решения лучше моих. Спасибо большое!
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Report form preview
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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