|
|
|
Печать отчетов
|
|||
|---|---|---|---|
|
#18+
Привет всем, Ситуация следующая, есть 3 отчета причем когда происходит печать то на экран выводится только один отчет, а два других не показываясь на экран уходят на принтер... как сделать так: если пользовательотказывается от печати то и остальные два отчета тоже не печатаются ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2005, 10:39:02 |
|
||
|
Печать отчетов
|
|||
|---|---|---|---|
|
#18+
Надо отловить тот факт, что пользователь отказался от печати и не посылать остальные отчеты на принтер. Как это сделать и многое другое можно посмотреть здесь FAQ for Reports ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2005, 11:00:50 |
|
||
|
Печать отчетов
|
|||
|---|---|---|---|
|
#18+
что о смотрела я и ничего толком то не нашла, мне б мож примерчик а ? ребята ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2005, 12:35:40 |
|
||
|
Печать отчетов
|
|||
|---|---|---|---|
|
#18+
Вот циатат оттуда Предварительный просмотр и печать \ Пользователь прервал печать? =============================== Зачастую вам необходимо изменить значение какого-либо флажка типа "напечатано", как только пользователь напечатал конкретный отчет. Решение основано на том факте, что при отправке отчета на принтер всегда появляется стандартное окно "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. Т.е. первый отчет - просмотр, остальные только печать. Вот и сделай выставление флага на отправку первого отчета на принтер. Если такой флаг выставлен, печатаешь остальные. Т.е. как-то так: Код: plaintext 1. 2. 3. 4. 5. 6. Как именно изменить этот флаг и описано в решении. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2005, 13:10:43 |
|
||
|
Печать отчетов
|
|||
|---|---|---|---|
|
#18+
Извените меня конечно же ВладимирМ, но я делаю следующим образом 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)+; "Был только предварительный просмотр." ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2005, 04:57:03 |
|
||
|
Печать отчетов
|
|||
|---|---|---|---|
|
#18+
А Вы вставили вызов этих функций (FixStartPrinting, FixEndPrinting) в отчет? Куда именно? Какой синтаксис их вызова? Какая версия FoxPro? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2005, 09:07:00 |
|
||
|
Печать отчетов
|
|||
|---|---|---|---|
|
#18+
ВладимирМ а это как , что то не поняла я даже Visual FoxPro 8 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2005, 09:57:07 |
|
||
|
Печать отчетов
|
|||
|---|---|---|---|
|
#18+
Вообще-то, если Вы скачали примеры, то там можно запустить пример и посмотреть. А на практике, это делается примерно так: Открываете отчет на модифицирование. Дважды щелкаете левой клавишей мыши по полосе, например, Page Heder. Имею в виду, не по области отчета, а именно по серой полосе на которой и написаны слова "Page Header" В открывшемся окне будет раздел "Run expression" с областями "On Entry" и "On Exit". On Entry - это выражение (или функция), которое должно быть вычислено в момент начала печати данной полосы. Возвращаемое значение никак не влияет на сам факт печати. On Exit - это выражение (или функция), которое должно быть вычислено в момент окончания печати данной полосы. Возвращаемое значение никак не влияет на сам факт печати. В данном случае под термином "печать" подразумевается не собственно печать на принтер, а формирование содержимого этой полосы. Т.е. эти выражения будут вычисляться и при подготовке предварительного просмотра, и при печати на принтер, и при печати в файл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2005, 10:09:49 |
|
||
|
Печать отчетов
|
|||
|---|---|---|---|
|
#18+
здравствуйте МНастя усть 3 отчета... вы просто пишете REPORT FORM report1.frx PREVIEW REPORT FORM report2.frx PREVIEW REPORT FORM report3.frx PREVIEW и все там будет кнопка печать, нажать её и полетели, можно не нажимать, а закрыть ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2005, 18:52:33 |
|
||
|
|

start [/forum/topic.php?fid=41&gotonew=1&tid=1593050]: |
0ms |
get settings: |
11ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
212ms |
get topic data: |
11ms |
get first new msg: |
6ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
| others: | 247ms |
| total: | 567ms |

| 0 / 0 |
