Всем доброго времени суток!
У нас возникла необходимость в RTF-отчете выводить рисунок размером 1см Х 1см, но выводить его следует только для определенных групп партий продукции.
Есть идея:
создать внешний атрибут группы партий и в зависимости от его значения для конкретной группы партий выводить в отчет этот рисунок.
Только вот как это реализовать, пока не знаю.
Может быть у кого-либо есть подобный опыт?
Буду благодарен за любую информацию.
Вывод картинки в RTF-отчет в зависимости от значения внешнег
Модераторы: m0p3e, edward_K, Модераторы
-
- Абориген
- Сообщения: 943
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: External Developer
- Контактная информация:
Re: Вывод картинки в RTF-отчет в зависимости от значения вне
//вывод картинки в 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.
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.
-
- Постоянный обитатель
- Сообщения: 104
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Moscow
- Контактная информация:
Re: Вывод картинки в RTF-отчет в зависимости от значения вне
А в обычный отчет можно засунуть картинку?
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: Вывод картинки в RTF-отчет в зависимости от значения вне
запихать постоянную можно без проблем
единственно что нужно ее ограничивать по размеру(скажем суммарная не более 100 кб).
но вот вывод по условию не пробовал - хотя наверное особых проблем не будет.
вариант подрисовать шрифт и вывести буковкой.
единственно что нужно ее ограничивать по размеру(скажем суммарная не более 100 кб).
но вот вывод по условию не пробовал - хотя наверное особых проблем не будет.
вариант подрисовать шрифт и вывести буковкой.
Re: Вывод картинки в RTF-отчет в зависимости от значения вне
В документации к Гал-ке (vipprogr.pdf) описано, как компилировать в res-файл иконки.
Проверил - работает.
Но в той же документации я не нашел, как потом обратиться к обекту bitmap ИмяКартинки, чтобы вытянуть ее прямо в отчет.
Кто-нибудь пробывал ЭТО сделать? ???
Проверил - работает.
Но в той же документации я не нашел, как потом обратиться к обекту bitmap ИмяКартинки, чтобы вытянуть ее прямо в отчет.
Кто-нибудь пробывал ЭТО сделать? ???