Вывод картинки в RTF-отчет в зависимости от значения внешнег

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
Savich
Постоянный гость
Сообщения: 52
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Беларусь

Вывод картинки в RTF-отчет в зависимости от значения внешнег

Сообщение Savich »

Всем доброго времени суток!
У нас возникла необходимость в RTF-отчете выводить рисунок размером 1см Х 1см, но выводить его следует только для определенных групп партий продукции.

Есть идея:
создать внешний атрибут группы партий и в зависимости от его значения для конкретной группы партий выводить в отчет этот рисунок.

Только вот как это реализовать, пока не знаю.

Может быть у кого-либо есть подобный опыт?

Буду благодарен за любую информацию.
Maverick
Абориген
Сообщения: 943
Зарегистрирован: 29 мар 2005, 17:49
Откуда: External Developer
Контактная информация:

Re: Вывод картинки в RTF-отчет в зависимости от значения вне

Сообщение Maverick »

//вывод картинки в rtf документ: путь к rtf файлу, имя rtf файла, высота картинки, два параметра положение на листе
procedure InsFoto(string, string, longInt, longInt, longInt); external 'InsFoto.dll';

/*по умолчанию используется в кадрах для вывода фотки в Т2*/

Вот исходник на дельфах:
library InsFoto;

{ Important note about DLL memory management: ShareMem must be the
first unit in your library's USES clause AND your project's (select
View-Project Source) USES clause if your DLL exports any procedures or
functions that pass strings as parameters or function results. This
applies to all strings passed to and from your DLL--even those that
are nested in records and classes. ShareMem is the interface unit to
the DELPHIMM.DLL shared memory manager, which must be deployed along
with your DLL. To avoid using DELPHIMM.DLL, pass string information
using PChar or ShortString parameters. }

uses
ComObj;

procedure Report1(Path : string; Name : string; H : integer; T : integer ; L : integer); export;
var
MsWord : OleVariant;
MyRange : Variant;
K : Integer;
begin
try
MsWord:= GetActiveOleObject('Word.Application');
except
MsWord := CreateOleObject('Word.Application');
end;
if H > 5 then H := 5;
if T > 20 then T := 20;
if L > 15 then L := 15;
try
MSWord.Application.documents.Open(Path + Name);
try
MSWord.ActiveDocument.Shapes.SelectAll;
K:= MSWord.ActiveDocument.Shapes.Count;
MyRange := MSWord.ActiveDocument.Goto(3, -1);
MyRange.EndOf(1, 1);
MSWord.ActiveDocument.Shapes.AddPicture(Path+'Tmp.bmp', false, true, MyRange);
MSWord.ActiveDocument.Shapes.Item(K+1).Select;
MSWord.Selection.ShapeRange.Height:= H*(28.35);
MSWord.Selection.ShapeRange.Top := T*(28.35);
MSWord.Selection.ShapeRange.Left := L*(28.35);
MSWord.Selection.ShapeRange.WrapFormat.Type:= 3;
MsWord.Visible:= true;
except
MsWord.Visible:= true;
end;
except
MSWord.Quit;
end;
end;

exports
Report1 name 'INSFOTO';
begin
end.
Изображение
Знающий людей разумен.
Знающий себя просветлён.
Побеждающий людей силен.
Побеждающий самого себя могущественнен
Optimist
Постоянный обитатель
Сообщения: 104
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Moscow
Контактная информация:

Re: Вывод картинки в RTF-отчет в зависимости от значения вне

Сообщение Optimist »

А в обычный отчет можно засунуть картинку?
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: Вывод картинки в RTF-отчет в зависимости от значения вне

Сообщение edward_K »

запихать постоянную можно без проблем
единственно что нужно ее ограничивать по размеру(скажем суммарная не более 100 кб).
но вот вывод по условию не пробовал - хотя наверное особых проблем не будет.
вариант подрисовать шрифт и вывести буковкой.
Savich
Постоянный гость
Сообщения: 52
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Беларусь

Re: Вывод картинки в RTF-отчет в зависимости от значения вне

Сообщение Savich »

В документации к Гал-ке (vipprogr.pdf) описано, как компилировать в res-файл иконки.
Проверил - работает. 8)
Но в той же документации я не нашел, как потом обратиться к обекту bitmap ИмяКартинки, чтобы вытянуть ее прямо в отчет.
Кто-нибудь пробывал ЭТО сделать? ???
Ответить