редактирование библиотечного элемента

Автор Дмитрий Геннадьевич, 05.05.16, 22:37:05

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

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

Дмитрий Геннадьевич

Не смог найти (может, плохо искал?) как сделать обработчик двойного клика по макроэлементу, созданному библиотекой, для его редактирования при помощи этой же библиотеки. Компас 13, Delphi.

Slaviation

Интерфейс ksUserParam не то что нужно?

У него есть свойства:
fileName - Имя файла библиотеки, в которой находится функция редактирования макроэлемента
libName - Имя библиотеки, в которой находится функция редактирования макроэлемента
number - Номер функции редактирования

Если макроэлемент был создан с использованием этого интерфейса, то с  двойным кликом по этому макроэлементу должна запуститься команда number библиотеки libName из файла библиотеки fileName.
+ Благодарностей: 1

Дмитрий Геннадьевич

Вероятно, да. Спасибо, буду разбираться дальше.

Дмитрий Геннадьевич

07.05.16, 00:53:46 #3 Последнее редактирование: 07.05.16, 01:17:01 от Дмитрий Геннадьевич
В принципе, нашел описание работы с этим интерфейсом в лекциях Богуславского (конкретно, в файлике KMDA_09.pdf)
но уж больно все наворочено и свалено в кучу... Пытаюсь вычленить минимум необходимого.
Привожу обрывки своего кода (весь код длинный)... До того как завел переменную prm, все работало отлично, теперь тоже работает, но выдает ошибку после отрисовки. Ну и цель собственно не достигнута, вход в библиотеку по двойному клику не происходит...
Что делаю не так? Извините, если грубые ошибки, я совсем не профи в программировании...

var
prm:ksUserParam;
....

idoc.ksMacro(1); //начали макроэлемент
.....
//что-то начертили
......
refmacro:=idoc.ksEndObj;   //закончили макроэлемент

prm.Init;
prm.libName:='Библиотека 72 отд';
prm.fileName:='M:\_РАБОТА_\Delphi\Lib722\kss.rtw';
prm.number:=1;
idoc.ksSetMacroParam(refmacro,prm,false,true,false);
...
....

Дмитрий Геннадьевич

07.05.16, 02:06:25 #4 Последнее редактирование: 07.05.16, 03:20:11 от Дмитрий Геннадьевич
Разобрался, все работает!!!  :)

в начало кода добавил
prm:=ksuserparam(kompas.getparamstruct(ko_userparam));

Всем спасибо!!!

P.S. теперь еще бы парочку числовых параметров в макроэлемент записать, вообще была бы песня со словами )))