Вставьте другой объект Picture после печати каждой строки в быстром отчете

Я разрабатываю приложение в Firemonkey (Delphi XE5), где я использую Fast report 4 для печати данных. Я использую TFrxUserDataSet, чтобы сохранить данные и распечатать их, я использую полосу MasterData в быстром отчете.

Теперь мне также нужно напечатать TBitamp с каждой строкой, поэтому здесь растровое изображение для каждой записи будет различным.

У кого-нибудь есть идеи, как я могу это сделать?

1 ответ

Вы можете загрузить внешний файл изображения в элемент управления изображением в своем отчете. Я делаю это с помощью скрипта, который является частью самого отчета, используя событие OnBeforePrint следующим образом:

PROCEDURE Data2OnBeforePrint(Sender: TfrxComponent);
VAR
  lFN               : STRING;
  lFP               : STRING;
BEGIN
  // Use the filename as found in the Media dataset fields
  lFP := Trim(< Media."ImagePath">);    // Images folder below Image Root Path
  lFN := Trim(< Media."FileName1">);    // Actual Image File Name

  WITH Picture2 DO BEGIN

    // NB: There is no checking in this example, it may be useful to do a 
    //     couple of checks before trying to load the image, especially if 
    //     the data is user entered
    LoadFromFile(ImageRootPath + IncludeTrailingSlash(lFP) + lFN);

    // Do whatever manipulations you want to with the loaded image...
    AutoSize := False;
    Width := 1620;
    Height := 1080;
    Top := 0;
    Left := (1920 - Width) / 2;

    HightQuality := True;    // Note the typo in the property name... HighQuality?
    KeepAspectRatio := True;
    Transparent := True;
    Stretched := NOT Picture3.AutoSize;
  END;
END;

Обратите внимание, что я добавил несколько пользовательских функций, таких как ImageRootPath IncludeTrailingSlash(), чтобы сделать скрипт проще. Вы можете сделать подобное, чтобы проверить допустимый файл перед попыткой загрузки, чтобы избежать исключений.

Моя среда разработки - Delphi XE5 с FastReport FMX, и она прекрасно работает. Я нахожусь в процессе перехода на XE6 и FR FMX 2, но я почти уверен, что это будет работать нормально.

Другие вопросы по тегам