Вставка картинки в FastReport

отредактировано 20:27 Раздел: FastReport 2.xx VCL
FastReport 2.51, Delphi 5, БД Paradox.
Переношу все отчеты с QuickReport на FastReport. И бьюсь со вставкой картинки (фото сотрудника) в FR. Изначально фотография вставляется в карточку сотрудника по кнопке "добавить фото". На форме присутствует TImage, названный как IFot, TOpenPictureDialog, называнный Op.

Есть таблица State.db с данными сотрудника и где в поле Foto хранится тектовое название картинки. Вот так добавляю фото (FCard - карточка сотрудника):

procedure TFCard.SpeedButton13Click(Sender: TObject);
begin
if not DM.StateFoto.isNull then
Op.FileName:=ExtractFileDir(Application.ExeName) + '\Foto\'+DM.StateFoto.AsString;
if Op.Execute then
begin
if Sed.Enabled then
begin
DM.State.Edit;
DM.StateFoto.AsString:=ExtractFileName(Op.FileName);
DM.State.Post;
end
else DM.StateFoto.AsString:=ExtractFileName(Op.FileName);
If not DM.StateFoto.IsNull then
begin
try
IFot.Picture.LoadFromFile(Op.FileName);
except
IFot.Picture:= nil;
if MessageDlg('Файл '+ Op.FileName +
' не найден или не соответствует формату bmp или jpeg. Очистить поле?',
mtConfirmation, [mbYes, mbNo], 0) = mrYes then
begin
DM.State.Edit;
DM.StateFoto.Clear;
DM.State.Post;
end;
end;
end
else IFot.Picture:= nil;
end;
end;

В QuickReport выводятся все поля карточки сотрудника и должна подключаться фотка. Подключаю таким образом:

QRImage1.Picture:=Fcard.Ifot.picture;

Но теперь переношу все отчеты в FastReport, и все хорошо, кроме этой фотки.
Если вставлять через переменную вот так:

procedure TFcrdprn.frRSimpleCardGetValue(const ParName: String;
var ParValue: Variant);
begin
if ParName = 'Foto' then
ParValue := Fcard.Ifot.picture;

Ничего не выходит. А если через поле, где в FR пишу [DM.State."Foto"], то естесственно, мне выводится только текстовое название фото, которое хранится в данном поле. А если через объект Picture... то тут вообще у меня затык.

Помогите, пожалуйста, а то я третий день не могу эту проблему решить. Только, пожалуйста, не отсылайте меня к Help, я его перепахала вдоль и поперек...

Комментарии

  • отредактировано 20:27
    Q:2.34. Как распечатать картинку, находящуюся в файле?
    A: а) используйте обработчик события TfrReport.OnBeforePrint:

    if View.Name = 'Picture1' then
    TfrPictureView(View).Picture.LoadFromFile(...) or
    .Assign or
    .everything_what_you_want

    б) в скрипте (объекта или его бэнда) напишите:

    begin
    Picture1.LoadFromFile(filename)
    end

  • отредактировано 20:27
    Да читала я уже Help... И это тоже читала. Если бы у меня получилось сделать так, как написано, я бы и создавать этот топик не стала...
  • отредактировано 20:27
    А что именно не получилось?
    Достаточно положить в отчет пустую картинку с именем Picture1, и создать вышеописанный обработчик. Т.е.
    if View.Name = 'Picture1' then
    TfrPictureView(View).Picture.Assign(Fcard.Ifot.picture);
  • отредактировано 20:27
    To: AlexTZ

    Спасибо большое, все получилось! И чем я только думала, когда писала...

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.