Студия/OnInitLine
OnInitLine (Визуальные события) | |||||||
---|---|---|---|---|---|---|---|
|
Событие, возникающее после загрузки диапазона новых строк в табличный элемент. Если задано, событие OnShowLine, данное вызываться не будет. Используется для заполнения полей, не принадлежащих базе данных, а также любых других изменений. Ниже приведена последовательность и описана разница между событиями, выполняющимися после обновления таблицы и использующимися для заполнения ячеек таблицы или изменения их визуальных свойств:
- OnInitLine -- выполняется сразу для всего диапазона загруженных в буфер новых строк. Используется как для заполнения значений ячеек, так и для изменения их визуальных свойств.
- OnShowLine -- выполняется для диапазона новых строк, выводящихся на экран. Рекомендуется для больших таблиц, особенно не связанных с базой данных. Может вызываться несколько раз по мере того, как пользователь просматривает содержимое таблицы. Используется как для заполнения значений ячеек, так и для изменения их визуальных свойств.
- OnGetCellVisualProperties -- выполняется для новых строк, выводящихся на экран, вызывается для каждого столбца каждой строки. Для больших таблиц может замедлить обновление. Обычно используется только для изменения визуальных свойств ячейки.
Аргументы
<IndexFrom (INT)>
- Переменная задает индекс начальной строки таблицы, которая была загружена в буфер и требует инициализации.<IndexTo (INT)>
- Переменная задает индекс конечной строки таблицы, которая была загружена в буфер и требует инициализации.
Примеры
//Пример обработчика OnInitLine, который дополняет загруженные столбцы, а также задает иконку MainTab:=Form.MainTab.Value; For i:=IndexFrom to IndexTo Do MainTab.CurLine:=i; Эл:=MainTab.Get(i,"@ELEMENT"); //Найдем все адреса доставки данного договора aEl:=Ref.АдресаДоставки; См:=0; Стр:=""; aEl.Select("@Parent,<>@Status",Эл,1); While а.Next() Do См:=См+1; //Если их более трех, продолжать не будем If См>3 Then Стр:=Стр+", ..."; Break; EndIf; Стр:=Стр+?(Стр="","",", ")+"["+Trim(aEl)+"]"; EndDo; //С столбик адреса выведем линейных список адресов MainTab.Адреса:=Стр; //Выберем и установим иконку для столбца "Иконка" Icon:=0; Icon:=?(Эл.ТорговыйПредставитель=ТекущийТорговыйПредставитель,238,237); If Icon=237 Then Icon:=?((Эл.ТорговыйПредставитель.Selected()<>0)And(Стр>""),239,237); EndIf; MainTab.Icon(i,"Иконка",Icon); Enddo;