Студия/OnBeforeEdit
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;