Проблема с печатью !!! СРОЧНО!!!

Clarion, Clarion 7

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

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Аватара пользователя
StillZero
Ветеран
Сообщения: 458
Зарегистрирован: 06 Июль 2005, 2:17
Откуда: Хабаровск
Поблагодарили: 1 раз
Контактная информация:

Проблема с печатью !!! СРОЧНО!!!

Сообщение StillZero »

Печатаю отчет "руками".

Обстановка c6.3 9050

За печать отвечает мой класс типа PreviewClass-а из ABC.
На WinXP все работает хорошо.
На Win98 не работает, падает в момент Prop:FlushPreview = TRUE

Примерный текст, отвечающий за печать:

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

MyPreviewClass.MyMethod procedure()
xCfg:Window WINDOW('Print setup')...
xPrintReport REPORT...PREVIEW(loc:PreviewQueue)
 code
open(xCfg:Window)
ACCEPT
   OF ?ButtonPrint
       open(xPrintReport)
       xPrintReport{Prop:Landscape}=self.PR{Prop:Landscape} 
        loop i#=1 to records(self.PreviewQueue)
          get(self.PreviewQueue,i#)
          loc:PreviewQueue :=: self.PreviewQueue
          add(loc:PreviewQueue)
        end
        endpage(xPrintReport)
        xPrintReport{PROP:FlushPreview} = 1
         free(loc:PreviewQueue)
         close(xPrintReport)
         break
END
 close(xCfg:Window)
Если печать "без предварительного просмотра", то печатается хорошо.

В чем проблема ???

ЗЫ
я полагаю, что это как то связано с окнами...то что их несколько и описаны внутри класса ...
ru_alex
Ветеран
Сообщения: 333
Зарегистрирован: 21 Сентябрь 2005, 11:05
Откуда: Нижний Новгород
Контактная информация:

Сообщение ru_alex »

Может не нравиться заполнение очереди предпросмотра из другой?
Попробуй вместо
loop i#=1 to records(self.PreviewQueue)
get(self.PreviewQueue,i#)
loc:PreviewQueue :=: self.PreviewQueue
add(loc:PreviewQueue)
end

написать xPrintReport{prop:preview}=self.PreviewQueue

Хотя если без предпросмотра тот же код проходит, только без открытия окна, тогда попробуй после открытия репорта settarget на него.

PS: У меня примерно по той же схеме работает, все ок.
Аватара пользователя
StillZero
Ветеран
Сообщения: 458
Зарегистрирован: 06 Июль 2005, 2:17
Откуда: Хабаровск
Поблагодарили: 1 раз
Контактная информация:

Сообщение StillZero »

пилять...не работает нифига

просьба, запостите вопрос в ClaList, от моего имени можно, я сегодня не смогу сам запостить..пожалуйста
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8033
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 28 раз
Поблагодарили: 96 раз

Сообщение Игорь Столяров »

Да, но оригинальный код предпросмотра и печати без проблем работает под Win98 ... Лично мне подозрителен фрагмент:

loop i#=1 to records(self.PreviewQueue)
get(self.PreviewQueue,i#)
loc:PreviewQueue :=: self.PreviewQueue
add(loc:PreviewQueue)
end

Ты уверен, что рекорды очередей self.PreviewQueue и loc:PreviewQueue имеют идеинтичную структуру ?
Аватара пользователя
StillZero
Ветеран
Сообщения: 458
Зарегистрирован: 06 Июль 2005, 2:17
Откуда: Хабаровск
Поблагодарили: 1 раз
Контактная информация:

Сообщение StillZero »

пилять...заработало !!!

в чем была проблема понимаю смутно

ранее для предпросмотра вызывался МЕТОД класса, типа:

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

MyPreview.Preview(Params) 
сейчас сделал вызов ПРОЦЕДУРЫ (а потом работает с классом) предпросмотра в другом потоке, т.е.:

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

start(MyPreview,25000,'some params') 
код печати остался неизменным

возможно, позднее выложу текста на clarionlife.net
Ответить