Никак не могу разобраться, как напечатать с просмотром чертеж, открытый в компоненте 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);
Тоже не работает :(
Подскажите пожалуйста, у кого получалась программная печать документа (надо именно с просмотром, без просмотра все работает).
Коллеги, попробуйте кто-нибудь распечатать документ из программы (используя KGAX или без оного). Может это только у меня не работает. Пробовал даже все по хелпу делать - не работает никак.
Нужно передать массив имен документов
Разобрался наконец-то!
вот как я делал. Может кому-то пригодится.
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".