Печать заданий на сетевом принтере

Обсуждение извечных проблем кларионовских (и не только) отчетов

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

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Гость

Сообщение Гость »

Hello ClaList,

Ситуация: каждый из пользователей сети формирует пакет документов
для печати на сетевом принтере(10-15 страниц). При этом
формирование растянуто по времени: что-то сделал - направил на
печать 3-4 страницы, потом еще что-сделал - остальные 10-12
страниц. На принтер, ес-но, все страницы должны придти одним
пакетом, чтобы не было путаницы при разборке.

Вопрос: как в проге на Кларионе (С55, ШВС) оформить это как
одно задание, чтобы юзер по окнчании ввода/выборки нажал бы
кнопочку ПЕЧАТЬ ЗАДАНИЯ и все сформироавнные страницы одним
пакетом печатались бы на принтере.

--
Best regards,
morkovin mailto:morkovin@interdacom.ru

(Добавление)

А что если сохранять все страницы в wmf а потом их разом печатать ?
Доработать стандартный ReportPreview.

--
Best regards,
Max mailto:Makc@istnet.ru

(Добавление)

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

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

DummyPrintPreviewQueue QUEUE,PRE
DummyPrintPreviewImage   STRING(80)
                       END

DummyReport REPORT,AT(10,10,100,100),PRE(DummyRPT),FONT('Arial',10,,),MM
detail        DETAIL
              END
            END
Далее куски кода из релаьной проги (надеюсь будет без комментарив понятно,
PrintPreviewQueue - подготовленная к печати "интегрированная" очередь ):

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

!....
Loc:lLoopIndex LONG,AUTO
!...
  CODE
!  ...
  OPEN(DummyReport)
  DummyReport{PROP:Preview} = DummyPrintPreviewQueue
  DummyReport{PROP:Landscape} = Report{PROP:Landscape}

  LOOP Loc:lLoopIndex = 1 TO RECORDS(PrintPreviewQueue)
    PRINT(DummyRPT:detail)
    ENDPAGE(DummyReport)
  END
 
  FREE(DummyPrintPreviewQueue)
  LOOP Loc:lLoopIndex = 1 TO RECORDS(PrintPreviewQueue)
    GET(PrintPreviewQueue,Loc:lLoopIndex)
    DummyPrintPreviewQueue = PrintPreviewQueue
    ADD(DummyPrintPreviewQueue)
  END
  
  DummyReport{PROP:FlushPreview} = True
  
  CLOSE(DummyReport)
  FREE(DummyPrintPreviewQueue)
  
  RETURN
--
Best regards,
Vadym mailto:vadim@softcreator.com
ICQ: 82308757

(Добавление)

Я склоняюсь к мысли, что это надо делать на уровне операционки.
Т.е. до начала генерации первой части отчета выдать команду типа
ОТЛОЖЕННАЯ ПЕЧАТЬ (может "net printer ... /pause" (???)), а после
окончания - "net printer ... /resume"). Что скажут знатоки ОС?
Буду пробовать разн. варианты.

--
Best regards,
morkovin mailto:morkovin@interdacom.ru
Волгоград
Написал: ClaList(2)
Ответить