Как распечатать чертеж с просмотром

Автор Andreych, 27.08.08, 11:27:05

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Andreych

Никак не могу разобраться, как напечатать с просмотром чертеж, открытый в компоненте KGAX. Что же надо передавать функции ksPrintPreviewWindow?
Она требует параметр типа IDispatch, а что это конкретно?

Делаю вот так (Delphi 7) :
doc:=KGAX1.GetKompasObject.ActiveDocument2D;
KGAX1.GetKompasObject.ksPrintPreviewWindow(doc,0);


Если писать ksPrintPreviewWindow(doc,1), то просмотр и печать работают, но тут надо вручную указать файл.

Я также пробовал вот так:

var iKompas: KompasObject;
var iDoc: ksDocument2D;
   iKompas:= KompasObject(KGAX1.GetKompasObject);
   iDoc:= ksDocument2D(iKompas.ActiveDocument2D);
   iKompas.ksPrintPreviewWindow(iDoc,0);

Тоже не работает :(

Подскажите пожалуйста, у кого получалась программная печать документа (надо именно с просмотром, без просмотра все работает).

Andreych

Коллеги, попробуйте кто-нибудь распечатать документ из программы (используя KGAX или без оного). Может это только у меня не работает. Пробовал даже все по хелпу делать - не работает никак.


333

Нужно передать массив имен документов

Andreych

Разобрался наконец-то!
вот как я делал. Может кому-то пригодится.

var doc: ksDocument2D;
   kompas: KompasObject;
var docsArr: IDispatch;
   s: ksChar255;
   arrText: ksDynamicArray;
   docPar: ksDocumentParam;
begin
 kompas:=KompasObject(KGAX1.GetKompasObject);
 doc:=ksDocument2D(kompas.ActiveDocument2D);
 if doc=nil then Exit;
 docPar:=ksDocumentParam(kompas.GetParamStruct(ko_DocumentParam));
 doc.ksGetObjParam(doc.reference, docPar, ALLPARAM); //чтобы узнать имя файла
 if docPar=nil then Exit;
 docsArr:=kompas.GetDynamicArray(CHAR_STR_ARR);
 s:=ksChar255(kompas.GetParamStruct(ko_Char255));
 s.str:=docPar.fileName;
 arrText:=ksDynamicArray(docsArr);
 arrText.ksAddArrayItem(-1,s);
 kompas.ksPrintPreviewWindow(arrText,0);
end;


Интересно, а как сделать так, чтобы печатался документ с внесенными в него изменениями? То есть документ необходимо сначала сохранить, а потом функции печати передать имя сохраненного файла.

И еще вопрос: можно ли программно закрыть окно предварительного просмотра при печати? Потому что, если вручную не нажать "Закрыть просмотр", то при закрытии приложения с открытым окном просмотра оно вылетает с ошибкой "Unknown software exception".
+ Благодарностей: 1