#delphi #delphi-xe5 #fastreport #firemonkey-fm2
#дельфи #delphi-xe5 #быстрый отчет #firemonkey-fm2
Вопрос:
Я разрабатываю приложение в Firemonkey (Delphi XE5), где я использую Fast report 4 для печати данных. Я использую TFrxUserDataSet для хранения данных и для их печати я использую группу MasterData в быстром отчете.
Теперь мне также нужно напечатать TBitamp с каждой строкой, так что здесь растровое изображение для каждой записи будет разным.
Есть ли у кого-нибудь идеи, как я могу это сделать?
Комментарии:
1. Является ли это растровое изображение частью вашей записи или загружено из внешнего файла?
2. Это загружается из некоторого файла, но во время выполнения. я думаю, что невозможно сохранить изображение или TBitmap в поле TFrxUserDataSet.
3. @PadamJain возможно, вам не удастся сохранить изображение или TBitmap в поле TFrxUserDataSet, но вы можете сохранить имя файла, предполагая, что все изображения находятся в одной папке.
Ответ №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, но я почти уверен, что это будет работать нормально.