RUS  ENG 

Некорректные возвращаемые данные эвента evBrowserRecordChanged(196609)

Страницы: 1
RSS
Некорректные возвращаемые данные эвента evBrowserRecordChanged(196609)
 
Работаю с ZuluGIS2021
Версия 10.0.0.9079u
C#
public void OnZuluEvent(int EventID, object Source, object Param1, object Param2, object Param3)
{
if (EventID == (int)eZuluEvents.evBrowserRecordChanged)
{
MessageBox.Show("3\n" + Source.ToString() + "\n" + Param1.ToString() + "\n" + Param2.ToString() + "\n" + Param3.ToString());
}
}

На строчке с MessageBox ставлю точку останова и смотрю данные через дебаггер.
По документации в Param3 должно выводиться:
"В параметре Param3 передается массив (safearray) элементов VARIANT, содержащий имена полей и их значения, которые идентифицирует запись. Массив содержит четное число элементов. В четных элементах (0, 2, и т.д.) хранятся имена полей базовой таблицы в виде строк. В нечетных элементах (1, 3 и т.д.) - соответствующие им значений."
У меня возвращается вот такой массив {sys;4083}.
Возможно это из-за того что я именно изменяю запись(соответственно Param1 у меня 0)

Основная задача была - выбрать поле(в ZbStdBrowser), и нажать кнопку плагина и дальше работать с выделенным полем(чтение,изменение). Но среди всех эвентов в документации нашёл только evBrowserRecordChanged через который можно получить выделенное поле.
У меня два вопроса:
- Почему я получаю "урезанный" массив, и как получить полный?
- Есть ли более подходящие способы получения данных о выделенном поле в ZbStdBrowser, с целью чтения и изменения поля?
 
Алексей, добрый день!
В Вашем примеры в параметре Param3 совершенно корректно приходит значение поля Sys (в виде пары: имя и значение).
В этом параметре приходит массив полей и их значений, которые (внимание!) идентифицируют запись. В большинстве случаев это ключевое поле (Sys), бывает это какое-то поле-счетчик, а бывает сложный ключ и тогда в массив попадают несколько значений полей.

Для программной работы в каким-то полем в браузере посмотрите, пожалуйста, на объекты-обработчики (см. https://www.politerm.com/zuludoc/zuluax/index.html#CustomBrowseObject_cls.html).
Сценарий при этом будет несколько иной. При добавлении в свойствах какого-либо поля (или полей) тегов "(custombrowseobject)" и "(custombrowsemethod)" у поля в браузере будет появляться многоточие, по нажатию на которое будет вызывать указанный обработчик.

Посмотреть как это устроено можно на примере тепловой сети, где допустим у участков через особую форму-справочник задаётся сортамент труб и местные сопротивления.
Страницы: 1