Студия/OnAfterEditCell

From SunFlurry wiki
Jump to: navigation, search
  OnAfterEditCell (Визуальные события)
Применимость:Таблица значений
Тип события:Прерывающее
Статус разработки: Реализована

Событие, возникающее до начала редактирования ячейки таблицы. Позволяет запретить или разрешить редактирование ячейки.

Аргументы

  • <IsChanged (INT)> - Переменная принимает значение 1, если в редактируемой ячейке были произведены изменения, иначе она принимает значение 0.
  • <Value> - (возможен аргумент-переменная (ByRef)) Новое значение редактирования, которое будет записано в ячейку таблицы. Значение можно изменить в данной обработчике.
  • <Result (INT)> - (возможен аргумент-переменная (ByRef)) Переменная результата может принимать значения:
    • 0 (по умолчанию) -- Разрешить принятие изменений.
    • 1 -- Запретить принятие изменений (фокус останется в поле редактирования).

Примеры

//Пример обработчика OnAfterEditCell
aEl:=Form.Object;
MainTab:=Form.MainTab.Value;
MainTab.CurLine:=MainTab.SelectedLine;

//В зависимости от столбика, в котором происходило редактирование, выполнить нужное действие после окончания редактирования ячейки
if MainTab.SelectedColumnName=uppercase("КодНоменклатуры") Then
  //Изменен код номенклатуры, найдем номенклатуру
  if not глПриИзмененииКодаНоменклатуры(aEl,Value) Then
    Result:=1;
    Exit;
  EndIf;
  Form.CallOnStatusChange();
Elseif MainTab.SelectedColumnName=uppercase("Номенклатура") Then
  //Изменена номенклатура
  MainTab.Номенклатура:=Value;
  Form.CallOnStatusChange();
Elseif MainTab.SelectedColumnName=uppercase("Количество") Then
  //Изменено количество
  MainTab.Количество:=Value;

  ...

  MainTab.Сумма:=MainTab.Цена*Value;
  Value:=MainTab.Количество;
  Form.CallOnStatusChange();
Elseif MainTab.SelectedColumnName=uppercase("Цена") Then
  //Изменена цена
  MainTab.Цена:=Value;
  MainTab.Сумма:=MainTab.Количество*Value;
  Form.CallOnStatusChange();
Elseif MainTab.SelectedColumnName=uppercase("Сумма") Then
  //Изменена сумма
  MainTab.Сумма:=Value;
  MainTab.Цена:=?(MainTab.Количество=0,Value,Value/MainTab.Количество);
  Form.CallOnStatusChange();
EndIf;