Difference between revisions of "Студия/OnBeforeEdit"
(No difference)
|
Revision as of 09:10, 28 January 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;