• Добро пожаловать на Форум пользователей ПО АСКОН. Пожалуйста, авторизуйтесь.
 

Уважаемые пользователи,

Хотим проинформировать вас о режиме работы регистрации на нашем сайте.

Зарегистрироваться возможно в рабочие дни, с 8:00 до 20:00 (мск).

Если у вас возникнут вопросы или потребуется дополнительная информация, не стесняйтесь обращаться к нашей службе поддержки. Вы можете связаться с нами по указанным контактным данным на нашем сайте.

Благодарим вас за понимание и сотрудничество. Мы ценим ваше терпение и стремимся предоставить вам лучший опыт использования нашего сервиса.

С уважением,
Команда Ascon

Невозможность редактирования ячейки для пользователя, в штампе.

Автор podshibyakinea, 14.07.15, 23:26:03

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

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

podshibyakinea

Имеем библиотеку .rtw на Delphi, собранную для Компасов х64-32, которая подключаясь к Лоцману через SQL-процедуру, автоматически присваивает номер чертежу или спецификации (19 cell), беря его из базы.
Теперь существует необходимость каким-нибудь способом отключить ручной ввод значения в эту ячейку. То есть чтобы конструктор руками туда ничего не забил самостоятельно.
Какими методами это можно, и можно ли организовать?
____

Пришла мысль! побаловаться со стилями,оформлением и основными надписями, изменить тип ячейки, но безрезультатно.


https://yadi.sk/d/_UlwByKfhsJfv


unit main;

interface

uses Windows, sysutils, messages, comobj, LDefin2D, ksConstTLB, ksAuto, ksTLB,
  Forms;

procedure LIBRARYENTRY(command: WORD); Pascal;
function LIBRARYNAMEW: PWideChar; Pascal;

// ссылки на КОМПАС и 2D документ
var
  iKompas: KompasObject;
  iDocument2D: ksDocument2D;
  iDocumentParam: ksDocumentParam;
  iStamp: ksStamp;
  iViewParam: ksViewParam;
  iTextItemParam: ksTextItemParam;
  iTextItemFont: ksTextItemFont;
  n: integer;
  scale: Double;

implementation

function LIBRARYNAMEW: PWideChar; pascal;
begin
  // название библиотеки
  Result := 'Уникальный номер';
end;

procedure LIBRARYENTRY(command: WORD); pascal;
begin
  // связываем переменную Kompas с API КОМПАСа
  iKompas := KompasObject(CreateKompasObject);
  // если все в порядке...
  if iKompas <> nil then
  begin
    // с текущим 2D документом
    iDocument2D := ksDocument2D(iKompas.ActiveDocument2D());
    if iDocument2D = nil then
      // сообщение об ошибке
      iKompas.ksMessage('Текущий документ не является чертежом или фрагментом')
    else
    begin
      iTextItemParam:=ksTextItemParam(iKompas.GetParamStruct(ko_TextItemParam));
      iTextItemFont:=ksTextItemFont(iTextItemParam.GetItemFont);

      iViewParam:=ksViewParam(iKompas.GetParamStruct(ko_ViewParam));
      n:=iDocument2D.ksGetViewNumber(0);
      iDocument2D.ksGetObjParam(iDocument2D.ksGetViewReference(n), iViewParam, ALLPARAM);

      scale:=iViewParam.scale_;

      iStamp:=ksStamp(iDocument2D.GetStamp);
      iStamp.ksOpenStamp;
      iStamp.ksColumnNumber(19);
      iTextItemParam.s:='Test';
      iStamp.ksTextLine(iTextItemParam);
      iStamp.ksCloseStamp;

      iKompas.ksMessage('Уникальный номер присвоен успрешно!');
  end;
  iDocument2D := nil;
end;
iKompas := nil
end;

end.

Подписаться на события:
- IDocumentFileNotify - интерфейс событий документа;
- IKompasObjectNotify - интерфейс событий приложения;
- IObject2DNotify - интерфейс событий объектов графических документов.
И пусть себе попробуют менять, Вы будете в обработчиках событий контролировать - можно или нельзя менять.
+ Благодарностей: 1

podshibyakinea

В связи с небольшим опытом в разработке, так не получилось выполнить.
Примерами мало кто делится,  ::)прошу  описать подробнее необходимые действия   88))

Если по работе с событиями, то примеры есть:
c:\Program Files\ASCON\KOMPAS-3D V16\SDK\Pascal\Delphi\step12
c:\Program Files\ASCON\KOMPAS-3D V16\SDK\Pascal\Delphi\Cube
c:\Program Files\ASCON\KOMPAS-3D V16\SDK\Pascal\Delphi\EventsCom