Rave in JPG

Vse v zvezi s tiskanjem, urejanjem izpisov in reporting komponentami.
Odgovori
lizardk
Prispevkov: 11
Pridružen: 08.06.2007 06:34:36

Rave in JPG

Odgovor Napisal/-a lizardk » 16.05.2011 15:06:24

Zdravo,
Ali je mogoče gdo uspel na rave reportu prikazat jpg sliko.
Funkciji sta nekako OnDecodeImage in PrintImageRect.
Stvar mi zleti skozi brez napak, vendar se slika ne izpiše na reportu.
Nekako sem ugotovil, da se OnDecodeImage ne izvede, pa ne vem zakaj.

Ali je kdo že to delal?

Silver_War
Prispevkov: 664
Pridružen: 01.06.2004 14:50:41

Re: Rave in JPG

Odgovor Napisal/-a Silver_War » 16.05.2011 16:13:29

A si vključil JPEG unit v tvoj projekt. Namreč brez tega unita ni mogoče prikazovanje JPG slik na večini grafičnig komponentah (vključno z TImage) v runtimeu z uporabo funkcij kot so LoadFromFile. Brez vključitve tega unita pa je možen prikaz JPG slike samo če je bila že ta komponenti nastavljena v designtimeu.

lizardk
Prispevkov: 11
Pridružen: 08.06.2007 06:34:36

Re: Rave in JPG

Odgovor Napisal/-a lizardk » 16.05.2011 16:27:30

Evo še kompletna koda.


unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, JPEG, RpDefine, RpBase, RpSystem, StdCtrls, RpRave, RpRender,
RpRenderCanvas, RpRenderPreview;

type
TForm1 = class(TForm)
Button1: TButton;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
RvSystem1: TRvSystem;
procedure Button1Click(Sender: TObject);
procedure RvSystem1DecodeImage(Sender: TObject; ImageStream: TStream;
ImageType: String; Bitmap: TBitmap);
procedure RvSystem1Print(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}



procedure TForm1.Button1Click(Sender: TObject);
begin
RvSystem1.Execute;
end;



procedure TForm1.RvSystem1DecodeImage(Sender: TObject;
ImageStream: TStream; ImageType: String; Bitmap: TBitmap);
var
Image: TJPEGImage;

begin
If ImageType = 'JPG' then begin
Image := TJPEGImage.Create; // Create a TJPEGImage class
try
Image.LoadFromStream(ImageStream); // Load up JPEG image from ImageStream
Image.DIBNeeded; // Convert JPEG to bitmap format
Bitmap.Assign(Image);
finally
Image.Free;
end;
end;
end;

procedure TForm1.RvSystem1Print(Sender: TObject);
var
Stream: TMemoryStream;
Image: TJPEGImage;

begin
With Sender as TBaseReport do begin
Stream := TMemoryStream.Create;
Image := TJPEGImage.Create;
try
Image.LoadFromFile('Slika.jpg');
Image.SaveToStream(Stream);
Stream.Position := 0;
PrintImageRect(1,1,3,3.5,Stream,'JPG');
finally
Image.Free;
Stream.Free;
end; { tryf }
end; { with }

end;

end.

Silver_War
Prispevkov: 664
Pridružen: 01.06.2004 14:50:41

Re: Rave in JPG

Odgovor Napisal/-a Silver_War » 16.05.2011 19:50:32

lizardk napisal/-a:Zdravo,
Ali je mogoče gdo uspel na rave reportu prikazat jpg sliko.
Funkciji sta nekako OnDecodeImage in PrintImageRect.
Stvar mi zleti skozi brez napak, vendar se slika ne izpiše na reportu.
Nekako sem ugotovil, da se OnDecodeImage ne izvede, pa ne vem zakaj.

Ali je kdo že to delal?
Po preizkusu tvoje kode sem opazil, da se OnDecodeImage ne izvede edino kadar vsebino Rave reporta shranjujem v datoteko in sicer v Rave Snapshot Formatu. Če shranjujem vsebino v datoteko v Native Printer Output formatu, deluje brez problema. Isto deluje brez napak, če uporabim Prewiv ali dam tiskanje na tiskalnik. Zakaj se pri izvozu v Rave Report Snapshot ta koda ne izvede, pa nimam pojma.

lizardk
Prispevkov: 11
Pridružen: 08.06.2007 06:34:36

Re: Rave in JPG

Odgovor Napisal/-a lizardk » 17.05.2011 13:32:30

Zdravo,

Native Printer Output formatu tole lahko izberem oziroma spremenim v pogovornem oknu za tiskanje.
Zanima me kako naj ta parameter nastavim s kodo, ker ko enkrat pritisnem gumb in nato prestavim na Native Printer Output formatu,
meni še vedno ne dela.
Je možno da mora biti to nastavljeno preden se zažene RvSystem1.Execute.

Odgovori