Страница 1 из 1

Настройка принтера в Preview

Добавлено: 15 Май 2013, 14:00
vea
Clarion 8.5, Win XP.
Долго искал и не смог найти нигде, как ввести настройку принтера в превью отчета. В конце-концов, вставил в ABREPORT.CLW строку меню, которая работает (пока вызывается только сообщение о последующей вставке здесь настройки принтера). А вот что именно и где вставить, чтобы вызывалась стандартная процедура настройки принтера? Прошу поделиться опытом, мыслями...
Конечно, соответствующие изменения внес и в ABREPORT.TRN и ABREPORT.INC.

Мои изменения в ABREPORT.CLW:

PreviewWindow WINDOW('Просмотр отчета'),MAX,AT(,,310,120),CENTER,ICON(ICON:Print),STATUS(-1,90,70),FONT('MS Shell Dlg', 10,,, CHARSET:ANSI),GRAY,ALRT(MouseRightUp), ALRT(PgUpKey), ALRT(PgDnKey),IMM,RESIZE
MENUBAR, USE(?MENUBAR)
MENU('&Файл'), USE(?FileMenu)
ITEM('Настройка принтера'), USE(?PrintSetup), KEY(CtrlP), MSG('Настройка принтера')
ITEM('Вы&бор страниц для печати...'), USE(?PagesToPrint), MSG('Выбор страниц для печати')

. . .

PrintPreviewClass.TakeAccepted PROCEDURE

c UNSIGNED,AUTO
i BOOL,AUTO
ReturnValue BYTE
CODE
IF PARENT.TakeAccepted() THEN RETURN Level:Notify.
CASE FIELD()
OF ZoomItem+1 TO ZoomItem+RECORDS(SELF.ZoomQueue)
i = SELF.ZoomIndex
SELF.ZoomIndex = ACCEPTED() - (ZoomItem+1) + 1
IF SELF.ZoomIndex <> i
SELF.NewZoom
END
OF SELF.PrtPrev:TBarZoom
SELF.ConfigMenuChecks
SELF.Popup.Ask()
OF SELF.PrtPrev:MenuPrintSetup
Message('Здесь должна быть настройка принтера')

. . .

Так что вставить вместо сообщения? Спасибо за любые наводки!

Re: Настройка принтера в Preview

Добавлено: 15 Май 2013, 14:50
kreator
Классически это делается так: В Init метод WindowManager'а (можно в самом начале) ставится текст

Код: Выделить всё

if ~printerdialog()
  ReturnValue = Level:Fatal
end
Почему так? Потому, что после создания отчёта (а превью показывает созданный отчёт) изменения настроек принтера ни к чему не приведут, надо заново создавать отчёт. Единственное, что можно сделать - дать возможность выбрать страницы для печати, для этого надо править шаблоны или классы, я так понимаю.

Re: Настройка принтера в Preview

Добавлено: 15 Май 2013, 14:52
kreator
Забыл спросить. А где достал 8.5?

Re: Настройка принтера в Preview

Добавлено: 15 Май 2013, 17:06
vea
Спасибо за ответ. У меня было подозрение, что эти настройки не будут действовать из превью. Выбор страниц возможен в превью и без переделки, по умолчанию.
Хотя, попробовал вставить в ABREPORT.CLW :
PrintPreviewClass.SetINIManager PROCEDURE(INIClass INI)

CODE
ASSERT(~INI&=NULL)
SELF.INIMgr &= INI
if ~printerdialog()
Return
end
и стали доступны настройки ориентация, сторона переворота, количество копий, выбор подачи бумаги (кассета или ручная). Возможно и выбор принтера (не пробовал, т.к. у меня один)... Что касается самого отчета, то он, конечно, не меняется.

Т.к. основная моя задача (выбор подачи) решена , то огромное спасибо за эту подсказку!

P.S. Попробовал в ABREPORT.CLW переставить на место моего сообщения - не работает.

Куплен организацией. Однако, наврал - v.8.0.8973. Давно это было. Прошу простить, сильно верил в это... :-)

Re: Настройка принтера в Preview

Добавлено: 16 Май 2013, 9:53
kreator
Оказывается, в Previewer классе есть свойство ConfirmPages. Если его выставить в 1, то при печати из превью выскакивает диалог с возможностью выбора страниц для печати.
Появилась ещё функция PrinterDialogA, там несколько параметров, в том числе ссылка на открытый Report. Такое ощущение, что изменение в настройках принтера повлияют на отчёт без его перестройки (во всяком случае хочется в это верить). Надо с этой функцией разбираться.