Содержание
Procedure OnChange(Name : String)
Изменение любого поля или нажатие на кнопку
Обработчик OnChange вызывается при изменении любого поля ввода или нажатии на любую кнопку.
Аргумент Name содержит имя поля ввода или кнопки в нижнем регистре.
Пример:Procedure OnChange(Name : String); Begin // Если изменены поля цена или кол-во, то рассчитываем сумму If Name='price' Or Name='cnt' Then Summa := RoundMul(Price, Cnt, 2); // Если изменено поле сумма, то рассчитываем цену. If Name='summa' Then Price := If(Cnt=0, 0, RoundDiv(Summa, Cnt, 2)); End;
Аналогичный эффект можно получить при использовании обработчиков OnPriceChange, OnCntChange, OnSummaChange.
Пример:Procedure OnPriceChange; Begin Summa := RoundMul(Price, Cnt, 2); End; Procedure OnCntChange; Begin Summa := RoundMul(Price, Cnt, 2); End; Procedure OnSummaChange; Begin Price := If(Cnt=0, 0, RoundDiv(Summa, Cnt, 2)); End;
Этот обработчик удобно использовать при организации модульности, так как он собирает информацию практически обо всех событиях. Например:
Var BaseClass : Variant; Procedure OnCreate; Begin BaseDocument.Init(Self); // Создание базового класса и обмен с ним ссылками. Инициализация документа. End; Procedure OnChange(Name : String); Begin BaseClass.OnChange(Name); // Передача событий базовому классу End;
Или пример модульности с использованием синглтона (свойство модуля на вкладке редактора Описание):
Procedure OnCreate; Begin BaseClass.OnCreate(Self); // Инициализация документа. End; Procedure OnChange(Name : String); Begin BaseClass.OnChange(Self, Name); // Передача событий базовому классу. End;