Выполнить по событию

Готовые скрипты, модули расширений, динамические библиотеки и вспомогательные утилиты.
Аватара пользователя
Владимир
Администратор
Сообщения: 667
Зарегистрирован: 10 фев 2018, 18:27
Откуда: Белгород
Контактная информация:

Выполнить по событию

Сообщение Владимир » 17 сен 2019, 10:40

Действие формы. Обрабатывает указанное событие

ИзображениеИзображение

Параметры и опции:

События для обработки
  • Открытие записи для редактирования
  • Дублирование записи


Выполнить
  • Вычислить выражение (в текущей форме)

Код расширенияПоказать

Код: Выделить всё

{@module
author=Develop-Soft [ https://forum.develop-soft.ru ]
version=0.2
description=Форма
Действия:<br>
1. Выполнить по событию<br> <br>

Изменения:<br>
v 0.1 от 17.09.2019 - выход первой версии<br>
- добавлена обработка события формы "При редактировании записи"<br>
v 0.2 от 12.06.2020<br>
- добавлена обработка события формы "При дублировании записи"<br>
...
@}


////////////////////////////////////////////////////////////////////////////////
//                    ПРИ РЕДАКТИРОВАНИИ ЗАПИСИ                               //
////////////////////////////////////////////////////////////////////////////////

{@action
Id=79C77B61-68E8-40F3-AEDF-2021F6E3AFBA
Target=form
OrigName=RunOnAfterEdit
Name=При редактировании записи
Group=Выполнить по событию
UI=
<ui>
<divider caption="Вычислить выражение"/>
<expr name="Expr">
</ui>
Description=Действие выполняет обработку события формы:
"При редактировании записи".
@}

var Old_OnAfterEdit:TNotifyEvent;

procedure Self_OnAfterEdit(Sender: TObject);
var  Fm:TdxForm;
begin
if Old_OnAfterEdit<>nil then Old_OnAfterEdit(Sender);
  try
  Fm := TdxForm(Sender);
  EvalExpr(Fm.Params['RunOnAfterEditExpr'],Fm);
  except
    debug('Выполнить по событию -> При редактировании записи'+#13#10+
  '-> Self_OnAfterEdit: '+ExceptionParam);
  end;
end;

procedure RunOnAfterEdit(Expr:string);
begin
 if Self.Params.ParamExists('RunOnAfterEdit') then
 begin
 MsgBox('Ошибка','Выполнить по событию -> При редактировании записи:'+#13#10+
  'Отключите дубликат действия');
  exit;
 end;
 Old_OnAfterEdit := Self.OnAfterEdit;
 Self.OnAfterEdit := @Self_OnAfterEdit;
 Self.Params['RunOnAfterEditExpr']:=Expr;
 Self.Params['RunOnAfterEdit']:=1;
end;

////////////////////////////////////////////////////////////////////////////////
//                       ПРИ ДУБЛИРОВАНИИ ЗАПИСИ                              //
////////////////////////////////////////////////////////////////////////////////


{@action
Id=3CF1AC74-0ACC-4489-95D3-EA1035849A7B
Target=form
OrigName=RunOnAfterDuplicate
Name=При дублировании  записи
Group=Выполнить по событию
UI=
<ui>
<divider caption="Вычислить выражение"/>
<expr name="Expr">
</ui>
Description=Действие выполняет обработку события формы:
"При дублировании записи".
@}

var Old_OnAfterDuplicate:TNotifyEvent;

procedure Self_OnAfterDuplicate(Sender: TObject);
var  Fm:TdxForm;
begin
if Old_OnAfterDuplicate<>nil then Old_OnAfterDuplicate(Sender);
  try
  Fm := TdxForm(Sender);
  EvalExpr(Fm.Params['RunOnAfterDuplicateExpr'],Fm);
  except
    debug('Выполнить по событию -> При дублировании записи'+#13#10+
  '-> Self_OnAfterDuplicate: '+ExceptionParam);
  end;
end;

procedure RunOnAfterDuplicate(Expr:string);
begin
 if Self.Params.ParamExists('RunOnAfterDuplicate') then
 begin
 MsgBox('Ошибка','Выполнить по событию -> При дублировании записи:'+#13#10+
  'Отключите дубликат действия');
  exit;
 end;
 Old_OnAfterDuplicate := Self.OnAfterDuplicate;
 Self.OnAfterDuplicate := @Self_OnAfterDuplicate;
 Self.Params['RunOnAfterDuplicateExpr']:=Expr;
 Self.Params['RunOnAfterDuplicate']:=1;
end;


Скачать:
Выполнить по событию v0.2.epas
(3.75 КБ) 17 скачиваний

Демо



Поддержка проекта

Теги:

Аватара пользователя
Владимир
Администратор
Сообщения: 667
Зарегистрирован: 10 фев 2018, 18:27
Откуда: Белгород
Контактная информация:

Выполнить по событию

Сообщение Владимир » 12 июн 2020, 12:50

Обновление (v 0.2):
Добавлено событие: "Дублирование записи"

Ответить