Добрый день, участники комьюнити.
Исходные данные:
Есть тулбар на форме редактирования. Есть ActionMenu привязанный к тулбару. Есть ActionMenuItem привязанный к ActionMenu. Есть ImageList с картинками и привязанный к ActionMenu. В общем есть всё что нужно для нормального отображения тулбара.
В скрипте происходит смена картинок у ActionMenuItem (amiTemp.ImageName = 'Pic1' или amiTemp.ImageName = 'Pic2' в зависимости от условий).
Проблема в том, что смена картинок не происходит пока не наведешь мышку на кнопку.
Что делать ума не приложу.
Что пробовал:
-BeginUpdate/EndUpdate/Prepare у Toolbar, ActionMenu, ActionMenuItem.
Ничего не помогло.
Вся надежда на вас.
Направьте меня на путь истинный .
Нравится
Евгений, попробовал изменять ImageName в зависимости от значения типа контрагента при обработке события dlDataOnDatasetDataChange. Всё получилось. Пример скрипта:
if (FieldName == 'AccountTypeID') { if (DataField.Value == '{3EAC7195-607B-4DAC-A832-8954E3201031}') { amiTest.ImageName = 'IncidentID'; } else { amiTest.ImageName = 'TaskID'; } }
Возможно, Вам тоже стоит попробовать обработку какого-либо другого события.
Олег, возможно вы делаете обработку на OnPrepare, а возможно дело и в бинарниках. У меня 3.3.2.114. Я делаю обработку когда карточка уже открыта, с определенным интервалом.
Забегая чуть вперед скажу - это отслеживание состояния свободных линий IP телефона.
Проверял на 3.3.2.104.
"Евгений Либин" написал:Олег, возможно вы делаете обработку на OnPrepare
нет
"Лабьяк Олег Игоревич" написал:при обработке события dlDataOnDatasetDataChange
Больше нигде изменений не вносил. Карточка тоже уже открыта, при изменении типа меняется картинка в меню.
Видимо, у Вас не совсем такая реализация.
Вот что сейчас получилось
if (Connector.Attributes('LiTPhone').GetLineStatus(Lines[i].Tag)) Lines[i].ImageName = 'ActiveLine' else Lines[i].ImageName = 'InactiveLine'; //ранее этого куска не было Lines[i].BeginUpdate(); Lines[i].IsVisible = false Lines[i].IsVisible = true; Lines[i].EndUpdate()
Евгений, я понимаю, что сам код такой же. Вопрос в том, когда (во время какого события) он выполняется. Возможно, в Вашем случае обойтись без нижнего блока не получится.
Да, скорее всего вы правы.
Самое главное что решение найдено :wink: