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

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

Добавлено: 03 Май 2006, 8:51
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)
Если печать "без предварительного просмотра", то печатается хорошо.

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

ЗЫ
я полагаю, что это как то связано с окнами...то что их несколько и описаны внутри класса ...

Добавлено: 03 Май 2006, 10:19
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: У меня примерно по той же схеме работает, все ок.

Добавлено: 03 Май 2006, 10:34
StillZero
пилять...не работает нифига

просьба, запостите вопрос в ClaList, от моего имени можно, я сегодня не смогу сам запостить..пожалуйста

Добавлено: 03 Май 2006, 11:17
Игорь Столяров
Да, но оригинальный код предпросмотра и печати без проблем работает под Win98 ... Лично мне подозрителен фрагмент:

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

Ты уверен, что рекорды очередей self.PreviewQueue и loc:PreviewQueue имеют идеинтичную структуру ?

Добавлено: 04 Май 2006, 10:41
StillZero
пилять...заработало !!!

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

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

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

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

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

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

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