powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / REPORT в окне
9 сообщений из 9, страница 1 из 1
REPORT в окне
    #34031536
Кузнецов Игорь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день. Запутался я с REPORT'oм.
Сам отчет я нарисовал. Источник данных (курсор) подготовил. Далее хочу
1. Показать отчет предварительно в отдельном окне.
2. По нажатии кнопки сохранить в файл.
2а. Вызывать диалог печати на принтер (может объединить возможности?)
3. Закрыть отчет
Написал так:
Код: plaintext
1.
2.
3.
4.
DEFINE WINDOW aaa FROM  0 , 0  TO  55 , 99  TITLE '  Просмотр  ' IN DESKTOP CLOSE FLOAT GROW ZOOM
ACTIVATE WINDOW aaa
REPORT FORM detout TO FILE ttt.txt PREVIEW IN WINDOW aaa
RELEASE WINDOW aaa
В итоге: информацию на предпросмотре вижу, файл не формируется, размеры окна ааа не меняются. Закрывается по Esc. Чего я напортачил?
ЗЫ. VFP6SP5
...
Рейтинг: 0 / 0
REPORT в окне
    #34031637
axnsdf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2a. REPORT FORM detout to print promp
...
Рейтинг: 0 / 0
REPORT в окне
    #34031780
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В VFP 9.0 можно, а в VFP 6.0 думаю, что нет.
С уважением, Алексей
...
Рейтинг: 0 / 0
REPORT в окне
    #34031787
Фотография Владимир СА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кузнецов ИгорьДобрый день. Запутался я с REPORT'oм.
Сам отчет я нарисовал. Источник данных (курсор) подготовил. Далее хочу
1. Показать отчет предварительно в отдельном окне.
2. По нажатии кнопки сохранить в файл.
2а. Вызывать диалог печати на принтер (может объединить возможности?)
3. Закрыть отчет
Написал так:
Код: plaintext
1.
2.
3.
4.
DEFINE WINDOW aaa FROM  0 , 0  TO  55 , 99  TITLE '  Просмотр  ' IN DESKTOP CLOSE FLOAT GROW ZOOM
ACTIVATE WINDOW aaa
REPORT FORM detout TO FILE ttt.txt PREVIEW IN WINDOW aaa
RELEASE WINDOW aaa
В итоге: информацию на предпросмотре вижу, файл не формируется, размеры окна ааа не меняются. Закрывается по Esc. Чего я напортачил?
ЗЫ. VFP6SP5
Для пунктов 1 и 2а и 3 команда
Код: plaintext
REPORT FORM <имя отчета> TO PRINTER PROMPT PREVIEW
Здесь и выбор принтера и установка диапазона печатаемых страниц.
Пункт 2 немного непонятен. REPORT это графика. Ты хочешь сохранить что???
...
Рейтинг: 0 / 0
REPORT в окне
    #34031808
Кузнецов Игорь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хорошо, забудем пока про принтер. Как вывести на предпросмотр в отдельном окне и по дополнительному подтверждению в файл. Или это тоже по силам только девятке? Кстати каков формат получемого файла без опции ASCII? Чем его потом открывать?
Важное замечание: программа работает при SCREEN=OFF.

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

1) На Preview открываешь отчет в своем окне, но обязательно должен отображаться стандартный ToolBar с иконкой принтера. В синтаксисе

2) В момент нажатия на иконку принтера откроется стандартное системное окно "Печать" с кнопкой "Отмена". Надо организовать симуляцию нажатия на эту кнопку с тем, чтобы произошла отмена печати. Там же, в методе нажатия на эту кнопку "взводишь" флаг (изменяешь значение переменной), по значению которой и определяешь тот факт, что пользователь желает послать отчет на печать

3) После нажатия на иконку принтера отчет автоматически закрывается. Выполнение приложения продолжается после команды REPORT FORM. В этом месте анализируешь значение флага, определяющего тот факт, что пользователь нажал иконку принтера. Если этот флаг "взведен", то даешь команду REPORT FORM еще раз для выгрузки данных в файл, а затем еще раз с опциями TO PRINTER.

Не уверен, что для As Top-Level форм удастся отобразить стандартный диалог выбора принтера. Поэтому такой 3-х кратный прогон отчета. Тут уж сам ищи как выкрутится со способом выбора принтера.

Как организовать "перехват" отправки на печать и "взведение" флага.

Код: plaintext
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.
31.
32.
33.
34.
35.
36.
37.
38.
* флаг факта отправки на печать отчета
PRIVATE plStopPrint
m.plStopPrint = .F.   

* флаг печати отчета из окна предварительного просмотра
PRIVATE plPreviewPrint
m.plPreviewPrint = .T.   

* Собственно печать
select curReport
REPORT FORM MyReport.frx NOCONSOLE PREVIEW

IF m.plStopPrint = .T.
	* Была нажата иконка принтера
	m.plPreviewPrint = .F. 
	REPORT FORM MyReport.frx TO FILE ttt.txt ASCII
	REPORT FORM MyReport.frx TO PRINTER
ENDIF

* Функция, прерывающая отправку на принтер
FUNCTION StopPrinting
IF m.plPreviewPrint = .F.
	* Если прямая отправка на печать, то функция не выполняется
	RETURN
ENDIF
IF WEXIST("Printing...")=.T. OR WEXIST("Печать...")=.T.
	m.plStopPrint = .T.
	IF WEXIST("Printing...")=.T. 
		ACTIVATE WINDOW "Printing..."
	ELSE
		ACTIVATE WINDOW "Печать..."
	ENDIF

	KEYBOARD '{SPACEBAR}' PLAIN CLEAR
	DOEVENTS
ENDIF
RETURN ""	&& для VFP - эта строка не обязательна
ENDFUNC

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

StopPrinting()

Разумеется, сама функция должна быть "видна" при выполнении отчета.

Да, если в команде REPORT FORM ... TO FILE не указана опция ASCII, то формируется файл принтерных кодов. Другими словами, это набор кодов принтера, которые собственно и осуществляют печать. Визуально это "добро" просмотреть невозможно. Можно только послать на принтер.
...
Рейтинг: 0 / 0
REPORT в окне
    #34033319
startFOX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Возвращаясь к пункту №1.

Проблема в следующем: Все вроде делаю правильно, по синтаксису, но окно предварительного просмотра открывается внутри моей формы.

Как избавиться от этого. Хотелось бы в отдельном окне. Что-то не допонимаю. Подскажите, пожалуйста.

P.S. VFP7
...
Рейтинг: 0 / 0
REPORT в окне
    #34033790
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
startFOXВозвращаясь к пункту №1.

Проблема в следующем: Все вроде делаю правильно, по синтаксису, но окно предварительного просмотра открывается внутри моей формы.

Как избавиться от этого. Хотелось бы в отдельном окне. Что-то не допонимаю. Подскажите, пожалуйста.

P.S. VFP7
Приведи команду REPORT. Как именно пишешь?

IN WINDOW - внутри какого окна будет открыто окно предварительного просмотра. Само окно должно быть активно на момент открытия отчета.

WINDOW (без IN) - реквизиты какого окна будут использованы как образец (шаблон) для окна предаврительного просмотра. Само окно - образец не обязательно должно быть открыто, но обязательно должно быть определено.

Это две разные опции.
...
Рейтинг: 0 / 0
REPORT в окне
    #34035049
Кузнецов Игорь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лично я пошел по пути использования альтернативных генераторов отчета. Первый же попавшийся вполне меня устроил, так как позволяет выводить отчет в окно MsWord или как RTF. К тому же написан на VFP. Дальнейшие возможности открыты: хоть печатать, хоть сохранить. И основная AsTopLevel Form уже не играет роли.
---------------------------------------------
Кто в армии служил - тот в цирке не смеется.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / REPORT в окне
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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