|
|
|
Печать отчёта из окна просмотра
|
|||
|---|---|---|---|
|
#18+
VFP6. Задача: подавить кнопку печати из окна предварительного просмотра отчёта (это когда REPORT PREVIEW). Чтобы не смогли юзеры отчёты из просмотра печатать. Предполагаю чего-нибудь замутить в Init() Data Environment репорта. Весь тулбар, например, погасить. Есть другие мысли у кого? Может, кто уже побеждал такую проблему? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2005, 16:34:37 |
|
||
|
Печать отчёта из окна просмотра
|
|||
|---|---|---|---|
|
#18+
Есть 3 принципиальных способа решения: Использовать файл ресурсов Перехватить момент начала печати и прервать этот процесс Дать распечатать в файл и удалить результат печати Использовать файл ресурсов Данное решение предполагает использование специально измененного ресурсного файла, в котором просто отсутствует кнопка с изображением принтера. Т.е. послать отчет на печать из окна предварительного просмотра становится невозможно. Как создать нужный файл ресурсов? Сначала создаете копию существующего файла ресурсов, выполнив следующий код: Код: plaintext 1. 2. 3. 4. 5. 6. В результате у вас получится копия ресурсного файла в текущей директории с именем NoPrint.dbf Теперь о том, как удалить кнопку с изображением принтера из соответсвующей ToolBar. Для этого сначала необходимо установить в качестве текущего ресурсного файла вновь созданный файл Код: plaintext 1. 2. Далее выбираете пункт главного меню View->ToolBars... Убедитесь, что стоит крестик в пункте "Print Preview" и нажмите кнопку "Customize..." Теперь нажмите левой кнопкой мыши кнопку с изображеним принтера в ToolBar "Print Preview" и не отпуская перетащите ее за пределы этого ToolBar. Все, кнопка удалена из этого ToolBar и такое состояние сохранено в текущем файле ресурсов. Теперь следует восстановить исходный файл ресурсов Код: plaintext Следует заметить, что внутри файла ресурсов много самой разнообразной информации, которая собственно не нужна в данной задаче. Поэтому для экономи места все лишнее можно удалить. Для этого откройте новый файл ресурсов Код: plaintext И найдите в нем не удаленную запись со следующими значениями полей: Код: plaintext 1. 2. 3. Все остальные записи можно смело удалять. Они никак не влияют на данный ToolBar. В принципе, этот файл ресурсов (вместе с мемо-полем) можно включить внутрь проекта, чтобы не поставлять отдельно кучу ресурсных файлов. Перехватить момент начала печати и прервать этот процесс Данное решение выполнено с использованием дополнительной пользовательской программы. Решение основано на том факте, что при отправке отчета на принтер всегда появляется стандартное окно "Printing..." (в русскоязычной Run-Time библиотеке, т.е. в готовом EXE, это окно имеет имя "Печать..."). В этом окне присутствует единственная кнопка "Cancel", нажатие на которую приводит к прерыванию отправки отчета на принтер. Подавить выдачу этого окна невозможно Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Вызов этой функции делается в разделе OnEntry первой полосы отчета (если есть в Title, если нет, в PageHeader) Дать распечатать в файл и удалить результат печати Данное решение не прерывает выполнение печати, а перенаправляет его с принтера в другой источник с последующем уничтожением результата такой печати. В качестве цели выбирается либо файл, либо специальное системное устройство с именем NUL (именно так, с одим символом "L"). Правда, отправка на устройство NUL далеко не всегда срабатывает. Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2005, 22:30:26 |
|
||
|
Печать отчёта из окна просмотра
|
|||
|---|---|---|---|
|
#18+
ВладимирМЕсть 3 принципиальных способа решения: Использовать файл ресурсов Перехватить момент начала печати и прервать этот процесс Дать распечатать в файл и удалить результат печати Добавлю с разрешения ВладимирМ еще один метод от себя: 4. Перейти на VFP 9.0 и использовать методы (DoStatus, DoMessage) класса, созданного от базового класса ReportListener. Достаточно посмотреть, как это просто сделано в Foundation Classes->OutPut->Report Listeners -> Report Listeners FFC Baseclass С уважением, Алексей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2005, 00:45:22 |
|
||
|
Печать отчёта из окна просмотра
|
|||
|---|---|---|---|
|
#18+
перейти на 9 и подправить reportpreview.app ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2005, 10:30:05 |
|
||
|
Печать отчёта из окна просмотра
|
|||
|---|---|---|---|
|
#18+
Спасибо за ответы. Применил способ с ресурсным файлом. То, что надо! Отлично работает. Советы с переходом на VFP9 лишены практической ценности, поскольку данную задачу необходимо было решить именно в рамках VFP6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2005, 11:08:42 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=33343866&tid=1593204]: |
0ms |
get settings: |
6ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
239ms |
get topic data: |
29ms |
get forum data: |
2ms |
get page messages: |
62ms |
get tp. blocked users: |
1ms |
| others: | 236ms |
| total: | 593ms |

| 0 / 0 |
