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

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

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

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

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

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

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

Как узнать в групповой спецификации номер блока у текущей строки?

Автор Andreych, 27.03.24, 22:20:18

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

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

Вират Лакх

Andreych, через api5 не получилось? Вам тут уже столько человек объясняют то, что вы и так прекрасно знаете, и как на самом деле нужно работать со спецификацией :-))) Не томите, сделайте уже ksSpcObjParam :)

Andreych

Цитата: p3452 от 30.03.24, 23:05:201. Разберитесь с конечной целью - уже четыре назвали...

2. Взгляните еще раз на, правую часть "картинки" из поста №17.
Слева колонка - это и есть "номер" - ИНДЕКС строки!!!

3. Если нужна выделенная (подсвеченная) строка - это совсем другая песня...

1. Я уже 4 раза получается Вам объяснял эту цель. Она одна и вполне ясная (для меня).
2. Совершенно не то. У колонки Number - это номер колонки, а не строки. У Вас выведены справа не индексы строк, а позиции 1,2,3,4.
У функции BlockNumberByIndex параметр Index - это номер строки по порядку с начала спецификации. Вот этот индекс и нужно найти, а по нему найдется и номер блока, к которому принадлежит данная строка - это конечная цель. У всех строк данного объекта, расположенного в нескольких блоках, колонки одинаковые, и все значения в них (количество) тоже может быть одинаковым. Поэтому по колонкам нельзя найти индекс текущей строки!
3. Ну конечно нужна текущая выделенная (подсвеченная) строка, я об этом все время пишу.

Andreych

Цитата: Вират Лакх от 31.03.24, 07:10:40Andreych, через api5 не получилось? Вам тут уже столько человек объясняют то, что вы и так прекрасно знаете, и как на самом деле нужно работать со спецификацией :-))) Не томите, сделайте уже ksSpcObjParam :)

Пока не пробовал, пытаюсь на api7 сделать, по совету из другой темы :) Скажите, что вы понимаете суть описанной мной проблемы, а то коллега p3452 неверно понял задачу похоже :)

Вират Лакх


p3452

Andreych, остался только один совет - изучайте структуру спецификации, читайте Справку!

Andreych

Цитата: Вират Лакх от 01.04.24, 10:59:47Я-то понимаю. А что за совет из другой темы?

Да ваш был совет переходить на api7 :)
Ну вот опробовал я то же самое на api5. К сожалению, и там неудачно.
 
var spc: ksSpecification;
    iSpec: ksSpcDocument;
    obj, n: Integer;
    iSpcObjParam: ksSpcObjParam;

  iSpec:=ksSpcDocument(iKompas.SpcActiveDocument);
  spc:=ksSpecification(iSpec.GetSpecification);
  obj:=spc.ksGetCurrentSpcObject;
  iSpcObjParam:=ksSpcObjParam(iKompas.GetParamStruct(ko_SpcObjParam));
  iSpec.ksGetObjParam(obj, iSpcObjParam, ALLPARAM);
  n:=iSpcObjParam.blockNumber;

Вот например, у меня выделена строка в блоке 2. Если это вспомогательный объект, то iSpcObjParam.blockNumber выдает номер блока 2 (это и в API7 работает).
Но если выделенная строка (в том же блоке 2) базовая, то iSpcObjParam.blockNumber всегда 0. Похоже в этом случае нет возможности узнать номер блока у текущей строки.
Я так понимаю загвоздка в ksGetCurrentSpcObject. Для базового объекта это именно выделенный объект целиком, а не выделенная строка (не конкретное его вхождение в текущем блоке).

once


Andreych


UU