Вставьте другой объект 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, но я почти уверен, что это будет работать нормально.