Difference between revisions of "Студия/OnInitLine"

From SunFlurry wiki
Jump to: navigation, search
(Created page with "{{infobox function |name=OnInitLine |element=Таблица значений |caption=Визуальные события |eventtype=Прерывающее |status=2}} {{HeadL...")
 
m (1 revision imported)
 
(No difference)

Latest revision as of 08:55, 7 February 2021

  OnInitLine (Визуальные события)
Применимость:Таблица значений
Тип события:Прерывающее
Статус разработки: Реализована

Событие, возникающее после загрузки диапазона новых строк в табличный элемент. Если задано, событие OnShowLine, данное вызываться не будет. Используется для заполнения полей, не принадлежащих базе данных, а также любых других изменений. Ниже приведена последовательность и описана разница между событиями, выполняющимися после обновления таблицы и использующимися для заполнения ячеек таблицы или изменения их визуальных свойств:

  1. OnInitLine -- выполняется сразу для всего диапазона загруженных в буфер новых строк. Используется как для заполнения значений ячеек, так и для изменения их визуальных свойств.
  2. OnShowLine -- выполняется для диапазона новых строк, выводящихся на экран. Рекомендуется для больших таблиц, особенно не связанных с базой данных. Может вызываться несколько раз по мере того, как пользователь просматривает содержимое таблицы. Используется как для заполнения значений ячеек, так и для изменения их визуальных свойств.
  3. 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;