Не устанавливаются свойства листа

Автор Борис_С, 10.09.18, 11:26:12

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

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

Борис_С

Всем добрый день.
У меня такая проблема: хочу установить параметры листа.
Написал такой код:

procedure TForm1.Button1Click(Sender: TObject);
var
  DocumentParam: ksDocumentParam;
  Document2D: ksDocument2D;
  SheetOptions: ksSheetOptions;
  StandartSheet: ksStandartSheet;
  RectangleParam: KsRectangleParam;
  SheetSize: ksSheetSize;
  HeightSheet, WidthSheet: Double;
  MarginTop, MarginLeft, MarginRight, MarginBottom: Integer;  // поля листа
begin
  try
    kompas:=KompasObject(CreateOleObject('Kompas.Application.5'));
    DocumentParam := ksDocumentParam(kompas.GetParamStruct(ko_DocumentParam));
    DocumentParam.Init();
    DocumentParam.type_ := ksDocumentDrawing; //lt_DocSheetStandart; //Тип: чертеж
    //Получаем интерфейс документа
    Document2D:=ksDocument2D(kompas.Document2D);
    //Создаем новый чертеж
    Document2D.ksCreateDocument(DocumentParam);

    //Получаем интерфейс ksSheetOptions
    SheetOptions:=ksSheetOptions(kompas.GetParamStruct(ko_SheetOptions));
    //Получаем текущие параметры чертежа
    Document2D.ksGetDocOptions(SHEET_OPTIONS_EX, SheetOptions);
    //Мы работаем с листом стандартного размера
    SheetOptions.sheetType:=false;
    //Указываем номер стиля, который нам нужен
    SheetOptions.shtType:=15;

    //Поучаем интерфейс ksStandartSheet
    StandartSheet:=ksStandartSheet(SheetOptions.GetSheetParam(false));
    //Устанавливаем лист формата A1
    StandartSheet.format:=1;
    //Устанавливаем горизонтальное направление листа
    StandartSheet.direct:=true;
    //Устанавливаем кратность равную единице
    StandartSheet.multiply:=1;
    //Устанавливаем новые настройки чертежа
    Document2D.ksSetDocOptions(SHEET_OPTIONS_EX, SheetOptions);

    kompas.Visible:=true;
  except
    on e:Exception do
      begin
         Application.MessageBox(PChar(e.message), 'ERROR', MB_OK OR MB_ICONERROR);
         Application.Terminate;
         exit
      end;
    end;
end;


Выполняю код. Компас запускается, но параметры листа не меняются. Остаются те, которые были по-умолчанию.

ТрындецЪ

Посмотрите в этом примере  Сергея Норсеева. У него создание документа происходит после настройки всех параметров.
+ Благодарностей: 1

Борис_С

Разобрался. Нужно работать с интерфейсом ksSheetPar вместо интерфейса ksSheetOptions.
Все это написано Норсеева в его книжке "Разработка приложений под Компас в Delphi.
Интерфейс ksSheetOptions использовался для первых версий Компаса. Сейчас используется интерфейс  ksSheetPar.