powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Печать отчетов
9 сообщений из 9, страница 1 из 1
Печать отчетов
    #33378256
МНастя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет всем, Ситуация следующая, есть 3 отчета

причем когда происходит печать то на экран выводится только один отчет, а два других не показываясь на экран уходят на принтер...

как сделать так: если пользовательотказывается от печати то и остальные два отчета тоже не печатаются ?
...
Рейтинг: 0 / 0
Печать отчетов
    #33378352
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Надо отловить тот факт, что пользователь отказался от печати и не посылать остальные отчеты на принтер. Как это сделать и многое другое можно посмотреть здесь

FAQ for Reports
...
Рейтинг: 0 / 0
Печать отчетов
    #33378729
МНастя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
что о смотрела я и ничего толком то не нашла, мне б мож примерчик а ? ребята
...
Рейтинг: 0 / 0
Печать отчетов
    #33378873
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот циатат оттуда

Предварительный просмотр и печать \ Пользователь прервал печать?

===============================
Зачастую вам необходимо изменить значение какого-либо флажка типа "напечатано", как только пользователь напечатал конкретный отчет.

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

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

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

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

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

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

Поэтому, если вам необходимо контролировать факт начала отправки на печать любой части отчета, то достаточно проверки в событии On Entry полосы Title. А если вам необходимо контролировать факт отправки на печать каждой страницы отчета в отдельности, то проверку следует делать в событии On Exit полосы Page Footer.
==============================

Далее идея проста. Видимо, ты отправляешь отчеты на печать как-то так:

Код: plaintext
1.
2.
3.
REPORT FORM Rep1.frx TO PRINTER PROMPT PREVIEW
REPORT FORM Rep2.frx TO PRINTER 
REPORT FORM Rep3.frx TO PRINTER 

Т.е. первый отчет - просмотр, остальные только печать. Вот и сделай выставление флага на отправку первого отчета на принтер. Если такой флаг выставлен, печатаешь остальные. Т.е. как-то так:

Код: plaintext
1.
2.
3.
4.
5.
6.
m.IsPrint = .F.
REPORT FORM Rep1.frx TO PRINTER PROMPT PREVIEW
IF m.IsPrint = .T.
	REPORT FORM Rep2.frx TO PRINTER 
	REPORT FORM Rep3.frx TO PRINTER 
ENDIF

Как именно изменить этот флаг и описано в решении.
...
Рейтинг: 0 / 0
Печать отчетов
    #33380314
МНастя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Извените меня конечно же ВладимирМ, но я делаю следующим образом

PRIVATE llIsStartPrinting, llIsEndPrinting
llIsStartPrinting=.F.
llIsEndPrinting=.F.

REPORT FORM t1 NOCONSOLE TO PRINTER PROMPT PREVIEW

LOCAL lcMessageText
DO CASE
CASE m.llIsStartPrinting=.F.
lcMessageText="Отчет вообще не был посла на принтер."+chr(13)+;
"Был только предварительный просмотр."
CASE m.llIsEndPrinting=.F.
lcMessageText="Отчет был послан на принтер,"+chr(13)+;
"однако последняя страница отчета не была послана на принтер."+chr(13)+;
"Либо был указан диапазон страниц, либо печать была прервана."
OTHERWISE
lcMessageText="Весь отчет целиком был послан на принтер"
ENDCASE

MessageBox(m.lcMessageText)


FUNCTION FixStartPrinting
IF WEXIST("Printing...")=.T. OR WEXIST("Печать...")=.T.
llIsStartPrinting=.T.
ENDIF
RETURN "" && Для VFP - эту строку можно опустить
ENDFUNC



FUNCTION FixEndPrinting
IF WEXIST("Printing...")=.T. OR WEXIST("Печать...")=.T.
llIsEndPrinting=.T.
ENDIF
RETURN "" && Для VFP - эту строку можно опустить
ENDFUNC

как описано у вас в примере, но ничего не выходит, нажала я на печать или нет все равно пишет одно и тоже

вот это вот

lcMessageText="Отчет вообще не был посла на принтер."+chr(13)+;
"Был только предварительный просмотр."
...
Рейтинг: 0 / 0
Печать отчетов
    #33380471
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А Вы вставили вызов этих функций (FixStartPrinting, FixEndPrinting) в отчет? Куда именно? Какой синтаксис их вызова? Какая версия FoxPro?
...
Рейтинг: 0 / 0
Печать отчетов
    #33380553
МНастя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВладимирМ а это как , что то не поняла я даже

Visual FoxPro 8
...
Рейтинг: 0 / 0
Печать отчетов
    #33380600
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще-то, если Вы скачали примеры, то там можно запустить пример и посмотреть. А на практике, это делается примерно так:

Открываете отчет на модифицирование.

Дважды щелкаете левой клавишей мыши по полосе, например, Page Heder. Имею в виду, не по области отчета, а именно по серой полосе на которой и написаны слова "Page Header"

В открывшемся окне будет раздел "Run expression" с областями "On Entry" и "On Exit".

On Entry - это выражение (или функция), которое должно быть вычислено в момент начала печати данной полосы. Возвращаемое значение никак не влияет на сам факт печати.

On Exit - это выражение (или функция), которое должно быть вычислено в момент окончания печати данной полосы. Возвращаемое значение никак не влияет на сам факт печати.

В данном случае под термином "печать" подразумевается не собственно печать на принтер, а формирование содержимого этой полосы. Т.е. эти выражения будут вычисляться и при подготовке предварительного просмотра, и при печати на принтер, и при печати в файл.
...
Рейтинг: 0 / 0
Печать отчетов
    #33382495
Anton87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
здравствуйте МНастя

усть 3 отчета...
вы просто пишете

REPORT FORM report1.frx PREVIEW
REPORT FORM report2.frx PREVIEW
REPORT FORM report3.frx PREVIEW

и все там будет кнопка печать, нажать её и полетели, можно не нажимать, а закрыть
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Печать отчетов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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