BOM — различия между версиями
Материал из Фабиус wiki
Hisava (обсуждение | вклад) м (→Пример) |
Hisava (обсуждение | вклад) м |
||
Строка 1: | Строка 1: | ||
− | BoM - это функция, описанная в файле [[QrAddFn.pas]] | + | [[BoM]] - это функция, описанная в файле [[QrAddFn.pas]] |
− | + | Возвращает дату первого дня месяца | |
− | + | [[BoM]]( Dt ) | |
− | + | ||
− | Возвращает дату первого дня месяца | + | |
= Пример = | = Пример = | ||
− | + | [[BoM]]( Date() ) | |
− | + | ||
− | + | ||
[[Файл:16-08-2016 9-03-46.png]] | [[Файл:16-08-2016 9-03-46.png]] | ||
− | |||
= Полный текст функции = | = Полный текст функции = | ||
− | |||
type | type | ||
TQREvBoM = class(TQREvDbFunction) | TQREvBoM = class(TQREvDbFunction) | ||
Строка 24: | Строка 18: | ||
v: variant; | v: variant; | ||
begin | begin | ||
− | res := BoM(Argument(0).DateResult); | + | res := [[BoM]](Argument(0).DateResult); |
v := res; | v := res; | ||
Result := QREvVariantToResult(@v); | Result := QREvVariantToResult(@v); | ||
Строка 31: | Строка 25: | ||
= Регистрация = | = Регистрация = | ||
− | RegisterQRFunction(TQREvBoM, 'BoM', 'BoM( Dt )|{Дата первого дня мца}', 'Masha', '1D'); | + | RegisterQRFunction(TQREvBoM, 'BoM', '[[BoM]]( Dt )|{Дата первого дня мца}', 'Masha', '1D'); |
= Расширение интерпретатора выражений = | = Расширение интерпретатора выражений = |
Версия 14:01, 26 апреля 2017
BoM - это функция, описанная в файле QrAddFn.pas
Возвращает дату первого дня месяца
BoM( Dt )
Содержание
Пример
BoM( Date() )
Полный текст функции
type TQREvBoM = class(TQREvDbFunction) public function Calculate: TQREvResult; override; end;
function TQREvBoM.Calculate: TQREvResult; var res: TDateTime; v: variant; begin res := BoM(Argument(0).DateResult); v := res; Result := QREvVariantToResult(@v); end;
Регистрация
RegisterQRFunction(TQREvBoM, 'BoM', 'BoM( Dt )|{Дата первого дня мца}', 'Masha', '1D');
Расширение интерпретатора выражений
В фабиусе используются исходники программы QuickReport
Для добавления функции интерпретатора в delphi описывается тип, наследуемый от специального класса
Имя такого класса начинается с TQREv
Далее в нашем новом типе перекрывается функция Calculate
Результат, который будет возвращать функция Calculate и будет результатом выполнения новой функции интерпретатора
И последнее, что нужно сделать - зарегистрировать функцию с помощью выражения
RegisterQRFunction
Дерево классов
TQREvBoM TQREvDbFunction TQREvElementFunction TQREvElement