powered by simpleCommunicator - 2.0.38     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / REPORT ... TO PRINTER PROMPT
8 сообщений из 8, страница 1 из 1
REPORT ... TO PRINTER PROMPT
    #32209077
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет всем.

Можно ли в полученном с помощью PROMPT диалоге заранее установить количество печатаемых экземпляров ?

VFP 7
...
Рейтинг: 0 / 0
REPORT ... TO PRINTER PROMPT
    #32209095
Фотография NNN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Glory

Была когда-то такая переменная _PCOPIES, она хоть и included for backward compatibility, но должна работать. Только вот не помню readonly она или нет и не знаю как отобразится на Print Dialog. Попробуй поиграться.

ЗЫ извини, но сейчас мне запустить фокс и проверить не удалось, пора выбрасывать эту шарманку :((
...
Рейтинг: 0 / 0
REPORT ... TO PRINTER PROMPT
    #32209182
Фотография NNN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Glory

Ну вот наконец винда отрубила дефектный диск, я смог запустить фокс и узнал, чтот _PCOPIES ни фига не работают. Но все оказалось не так сложно, нужно всего-то открыть отчет как таблицу и изменить число в мемо-поле expr для первой записи. Лови пример:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
#define COPIES    'COPIES='
#define REPORTNAME    'Report1'
lnCopies=VAL(INPUTBOX('Количество копий'))
IF lnCopies> 0 
 lcCopies1=COPIES+'1'
 lcCopies2=COPIES+LTRIM(STR(lnCopies))
 =SetCopies(REPORTNAME, lcCopies1, lcCopies2)
 REPORT FORM REPORTNAME TO PRINTER PROMPT 
 =SetCopies(REPORTNAME, lcCopies2, lcCopies1)
ENDIF 

PROCEDURE SetCopies
LPARAMETERS tcReport, tcVal1, tcVal2
 lcAlias=ALIAS()
 SELECT  0 
 tcReport=tcReport+'.frx'
 USE (tcReport) 
 REPLACE expr WITH STRTRAN(expr,tcVal1,tcVal2)
 USE 
 SELECT (lcAlias)
ENDPROC 
...
Рейтинг: 0 / 0
REPORT ... TO PRINTER PROMPT
    #32209490
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Некоторые уточнения:

1) Строго говоря, изменять поле Expr надо в записи имеющую значения

ObjType=1 AND ObjCode=53

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

2) Не знаю, насчет VFP7, но в VFP6 синтаксис строки определяющей количество копий в поле Expr предполагает знак равенства:

COPIES=1

ну и надо предусмотреть вариант отсутствия такой строки в поле Expr в принципе, а не только замену. Кроме того, далеко не факт, что там будет стоять именно COPIES=1, а не допустим, COPIES=2. Но это уже мелочи.

3) Если файл отчета включен внутрь EXE, то вытащить его на этапе исполнения, для последующей модификации можно таким образом:

USE MyReport.frx
COPY TO FreeReport.frx

Здесь указывать расширение в обеих командах необходимо. Тогда во вне файла EXE будет создано 2 файла: FreeReport.frx и FreeReport.frt с которыми и можно дальше работать как с внешним файлом отчета.
...
Рейтинг: 0 / 0
REPORT ... TO PRINTER PROMPT
    #32210271
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за советы.
Отчет действительно встроенный. Так что подходит только п.3 от ВладимирМ. Жаль только что нужно копировать отчет - время забирает. Пользователь гораздо быстрее в диалоге выберет нужное число копий.
...
Рейтинг: 0 / 0
REPORT ... TO PRINTER PROMPT
    #32210366
Sergey Ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мой совет не так крут как предыдущие.
Для изменения количества копий я просто делаю форму, в которой указывается это количество, а затем в цикле вызываю этот отчет на печать без PROMPT и с NOCONSOLE. Есть ряд недостатков (нет выбора принтера, медленно работает с большими отчетами, нельзя выбрать отдельные страницы на печать и т.д.) но для большинства случаев может быть полезен, особенно для простых программ, типа платежных поручений... и там, где не очень много оборудования в купе с не очень продвинутыми пользователями...
...
Рейтинг: 0 / 0
REPORT ... TO PRINTER PROMPT
    #32211144
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну выбрать текущий принтер перд циклом можно через SYS(1037). В принципе, можно и формочку диалога самому нарисовать получив список принтеров через APRINTERS(), но вот количество копий будет все-равно через цикл.

Как вариант можно менять количество копий непосредственно у принтера, но это надо знать соответсвующие API-функции.
...
Рейтинг: 0 / 0
REPORT ... TO PRINTER PROMPT
    #32214624
Mik Prokoshin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А мы много лет назад (когда еще с FOX работали) сделали окошко, где юзер ставил число копий и выбирал принтер (поскольку под ДОС, то номер LPT порта). И все. И отдельно настройка - типа на каком порту какой принтер.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / REPORT ... TO PRINTER PROMPT
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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