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

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Аватара пользователя
vea
Бывалый
Сообщения: 51
Зарегистрирован: 01 Сентябрь 2005, 15:48
Откуда: Иваново
Контактная информация:

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

Сообщение 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('Здесь должна быть настройка принтера')

. . .

Так что вставить вместо сообщения? Спасибо за любые наводки!
С уважением, vea
kreator
✯ Ветеран ✯
Сообщения: 4984
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 7 раз
Поблагодарили: 20 раз

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

Сообщение kreator »

Классически это делается так: В Init метод WindowManager'а (можно в самом начале) ставится текст

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

if ~printerdialog()
  ReturnValue = Level:Fatal
end
Почему так? Потому, что после создания отчёта (а превью показывает созданный отчёт) изменения настроек принтера ни к чему не приведут, надо заново создавать отчёт. Единственное, что можно сделать - дать возможность выбрать страницы для печати, для этого надо править шаблоны или классы, я так понимаю.
We are hard at work… for you. :)
kreator
✯ Ветеран ✯
Сообщения: 4984
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 7 раз
Поблагодарили: 20 раз

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

Сообщение kreator »

Забыл спросить. А где достал 8.5?
We are hard at work… for you. :)
Аватара пользователя
vea
Бывалый
Сообщения: 51
Зарегистрирован: 01 Сентябрь 2005, 15:48
Откуда: Иваново
Контактная информация:

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

Сообщение 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. Давно это было. Прошу простить, сильно верил в это... :-)
С уважением, vea
kreator
✯ Ветеран ✯
Сообщения: 4984
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 7 раз
Поблагодарили: 20 раз

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

Сообщение kreator »

Оказывается, в Previewer классе есть свойство ConfirmPages. Если его выставить в 1, то при печати из превью выскакивает диалог с возможностью выбора страниц для печати.
Появилась ещё функция PrinterDialogA, там несколько параметров, в том числе ссылка на открытый Report. Такое ощущение, что изменение в настройках принтера повлияют на отчёт без его перестройки (во всяком случае хочется в это верить). Надо с этой функцией разбираться.
We are hard at work… for you. :)
Ответить