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

From SunFlurry wiki
Jump to: navigation, search
 
m (1 revision imported)
 
(No difference)

Latest revision as of 08:55, 7 February 2021

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

Событие, возникающее до начала редактирования ячейки или объекта встроенной таблицы. Если данное событие не задано, будет вызвано локальное, а затем глобальное событие OnBeforeEdit, которое также вызывается для свободных таблиц. Событие инициируется двойным кликом по ячейке таблице, нажатием Enter (или F2) в ней или в момент, когда пользователь начинает набирать текст.

Аргументы

  • <EditMode (INT)> - (возможен аргумент-переменная (ByRef)) Переменная описывает режим редактирования, может принимать следующие значения:
    • 0 -- Инициировать режим редактирования текста ячейки.
    • 1 -- Инициировать режим редактирования объекта ячейки.
    • 2 -- Открытие объекта ячейки для редактирования или просмотра.
  • <ObjectType (INT)> - Переменная задает тип объекта, может принимать следующие значения:
    • -1 -- курсор выделяет ячейку таблицы.
    • больше или равна нулю -- задает тип объекта, на котором находится курсор. Для описания типов объектов, см. Object.Type.
  • <ObjectIndex (INT)> - Переменная задает индекс объекта, для которого выполняется операция, если операция выполняется для ячейки, переменная будет иметь значение -1.
  • <Line (INT)> - Переменная задает номер строки редактируемой ячейки. Если редактируется объект, переменная принимает значение -1.
  • <Column (INT)> - Переменная задает номер столбца редактируемой ячейки. Если редактируется объект, переменная принимает значение -1.
  • <AttButtons (STRING)> - (возможен аргумент-переменная (ByRef)) Переменная задает связанные элементы, ассоциированные с полем редактирования, если редактирование будет производиться в режиме 1. Параметр представляет собой строку с перечислением через запятую индексов связанных элементов. К примеру ""+_AB_CHOOSE+","+_AB_CLEAR+","+_AB_HELP (см. список значений констант связанных элементов).
  • <EditValue> - (возможен аргумент-переменная (ByRef)) Переменная задает значение любого типа, которое попадет в поле редактирование для режима 1. Значение может быть никак не связано с текущим текстом ячейки или объекта таблицы. По умолчанию переменная содержит значение из ячейки или объекта.
  • <EditMask (STRING)> - (возможен аргумент-переменная (ByRef)) Переменная задает маску поля редактирования, если редактирование происходит в режиме 1. Маска может быть стандартной маской (см. Tab.Column.Mask), однако для чисел подобная стандартная маска неудобна, поэтому можно задать специальную числовую маску в виде "!<Цифр в числе>.<Цифр в мантиссе>" (к примеру "!15.3").
  • <Result (INT)> - (возможен аргумент-переменная (ByRef)) Переменная результата может принимать значения:
    • 0 (по умолчанию) -- Разрешить редактирование (активацию).
    • 1 -- Запретить редактирование (активацию).

Примеры

//Пример обработчика OnBeforeEdit

//Запретить по умолчанию
Result:=1;

aTab:=Form.Таблица.Value;
//Получить значение текущей ячейки или объекта редактирования
if aTab.SelectionMode<2 then
  Знч:=aTab.Area(aTab.CurCol,aTab.CurLine,aTab.CurCol,aTab.CurLine).Value;
Else
  Знч:=aTab.SelectedObjects.Get(1).Value;
EndIf;

//Проверка корректности ячейки
If TypeStr(Знч)<>"LIST" Then
  Exit;
EndIf;
If Знч.GetByName("РедактированиеПартий")<>1 Then
  Exit;
EndIf;

пН:=Знч.GetByName("Номенклатура");
пПартия:=Знч.GetByName("Партия");
Выс:=Знч.GetByName("Выс");
Кмд:=Знч.GetByName("Команда");
Шир:=Знч.GetByName("Шир");
Яч:=Шир*3+5;
пСклад:=Знч.GetByName("Склад");


If Кмд=3 Then //Изменение партии
  РезПартия:="";
  If not ВыбратьПартию(РезПартия,пН,пСклад) Then
    Exit;
  EndIf;
    
  Т.Area(Яч+2,Выс,Яч+2,Выс).Text:=РезПартия;
  Т.Area(Яч,Выс,Яч,Выс).Value:=ПолучитьСписок(пН,РезПартия,Выс,Шир,1,пСклад);
  Form.isChanged(1);
ElseIf (Кмд=1)Or(Кмд=2) Then
  ...
EndIf;