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

До кучи, ФАК-проект по отчетам
...
Рейтинг: 0 / 0
10.07.2013, 13:14
    #38326687
Pulsar_p
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Report form preview
tanglir, видел я эту ссылку, и сделал все, как в ней написано. Не ловит, хоть ты тресни.
Дело в том, что я использую предварительный вывод через reportpreview.app
Если я правильно понял, в этом случае предварительная обработка report'а происходит как-то по-другому. Никак не могу врубиться как мне поймать нажатие этой кнопки...
...
Рейтинг: 0 / 0
10.07.2013, 14:02
    #38326784
12345зайчик
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Report form preview
исходники reportpreview.app лежат в сыпцах фокспро.
...
Рейтинг: 0 / 0
10.07.2013, 15:27
    #38326955
Pulsar_p
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Report form preview
Пауль, этот ФАК хорош для своего времени, в моем случае он не годится. Или я ошибаюсь?
Похожее решение нашел на одном из форумов:
**********************************************
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
10.07.2013, 16:34
    #38327068
PaulWist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Report form preview
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
10.07.2013, 19:59
    #38327342
Pulsar_p
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Report form preview
PaulWist, в ссылке, которую давал tanglir, этот вариант рассматривается: IF WEXIST("Printing...") .OR. WEXIST("Печать…") и т.д. Но дело в том, что при использовании reportpreview.app для предварительного вывода, это решение не срабатывает (Я пробовал). Отказаться от reportpreview.app, в силу определенных причин (долго объяснять, но если в двух словах: у него много плюсов перед стандартным обработчиком, например, объекты можно поворачивать как угодно), я не могу.
Тчорт, как же поймать мне эту долбаную кнопку в сложившейся ситуации?
...
Рейтинг: 0 / 0
11.07.2013, 08:24
    #38327584
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Report form preview
SYS(2040) тоже не работает?
...
Рейтинг: 0 / 0
11.07.2013, 10:00
    #38327689
Pulsar_p
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Report form preview
Владимир, дав том то и дело что нет. Вернее, не так как надо. Объясню подробнее:
При работе с отчетами я использую следующие обработчики: 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
12.07.2013, 22:10
    #38330028
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Report form preview
Код: 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
15.07.2013, 10:11
    #38330897
Pulsar_p
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Report form preview
Владимир, я довольно часто в своих программах использую Ваши решения, потому как либо не могу догадаться сам, либо Ваши решения лучше моих. Спасибо большое!
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Report form preview / 12 сообщений из 12, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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