При миграции с QuickReport на FastReport в Delphi одной из задач является перенос событий, назначенных объектам отчета. В этой статье мы рассмотрим, как определить имя метода события, назначенного объекту QuickReport, и назначить аналогичный метод для того же события в объекте FastReport.
Подтвержденный ответ
Fast Report предоставляет единицу ConverterQR2FR.pas, которую можно использовать для преобразования отчетов QuickReport в FastReport. Однако эта единица не назначает события объектов автоматически. Чтобы перенести события, вам придется сделать это вручную.
В QuickReport вы могли устанавливать события для объектов, таких как TQrLabel, и эти события находились в коде единицы Delphi. В FastReport вы можете сделать то же самое, но событие находится внутри отчета FastReport, а не в единице Delphi (FastReport включает в себя Pascal-скриптовый движок). Из-за этого вам, скорее всего, придется скопировать свои события вручную из кода единицы в скрипт FastReport.
Ниже приведен пример кода на Object Pascal (Delphi), демонстрирующий, как это можно сделать:
// Создаем экземпляры QuickReport и FastReport
Qr := TQrReport.Create(nil);
Fr := TfrxReport.Create(nil);
// Назначаем метод события для объекта QuickReport
Qr.Label1.OnClick := @QrLabel1Click;
// Определяем метод события для объекта QuickReport
procedure TForm1.QrLabel1Click(Sender: TObject);
begin
// Ваш код здесь
end;
// Создаем экземпляр конвертера QuickReport в FastReport
Conv := TConverterQr2Fr.Create(nil);
Conv.Source := Qr;
Conv.Target := Fr;
Conv.Convert;
// Назначаем метод события для объекта FastReport
Fr.Script1.AddCode('procedure TfrxReport1.Script1Label1Click(Sender: TObject); begin // Ваш код здесь end;');
Fr.Script1.Assign('Label1.Click', 'Script1Label1Click');
// Сохраняем отчет FastReport в файл
Fr.SaveToFile('converted_fromQR.fr3');
// Освобождаем ресурсы
Qr.Free;
Fr.Free;
Conv.Free;
Альтернативный ответ
При переносе с QuickReport на FastReport стоит рассмотреть другие способы достижения того же результата, которые предоставляет FastReport. Возможно, вам не придется использовать события так же, как в QuickReport.
Заключение
требует ручного труда, но с помощью приведенного выше примера кода вы можете легко перенести свои события. Помните, что FastReport предлагает другие способы достижения тех же результатов, и вы можете рассмотреть их в качестве альтернативы использованию событий.
Перенос событий из QuickReport в FastReport в Delphi.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS