Imagem de fundo no quickreport do delphi 7

09/11/2009

0

Gostaria de criar um relatório onde todas as páginas possuam uma imagem de fundo em marca da agua, só que eu quero um processo rápido e que não ocupe muito espaço em memória.
Mayco Ranghetti

Mayco Ranghetti

Responder

Posts

09/11/2009

Jacques Silva

Esta dica nos mostra como colocar uma imagem de fundo na página, simulando o efeito marca d'água. Para tal, declaremos a procedure:
procedure ImprimeBitMap(Cnv: TCanvas; BitMap: TBitMap; R: TRect); var Info : PBitMapInfo; InfoSize : DWORD; Image : Pointer; ImageSize : DWORD; begin with BitMap do begin GetDIBSizes(Handle, InfoSize, ImageSize); GetMem(Info, InfoSize); try Getmem(Image, ImageSize); try GetDIB(Handle, Palette, Info^,Image^); with Info^.bmiHeader do StretchDIBits(Cnv.Handle, R.Left, R.Top, R.Right - R.Left, R.Bottom - R.Top, 0, 0, biWidth, biHeight, Image, Info^, DIB_RGB_COLORS, SRCAND); finally FreeMem(Image, ImageSize); end; finally FreeMem(Info, InfoSize); end; end; end; Antes de usá-la, crie/copie uma imagem de tonalidade clara para a unidade C:, e no evento AfterPrint da última banda existente no seu relatório (normalmente PageFooter), faça:procedure TForm1.PageFooterBand1AfterPrint(Sender: TQRCustomBand; BandPrinted: Boolean); const Imagem = 'c:\figura.bmp'; //altere aqui o nome/caminho da sua imagem var BitMap : TBitMap; R : TRect; X, Y : integer; begin BitMap := TBitMap.Create; try if not FileExists(Imagem) then begin messagebox(handle, 'O arquivo de imagem não existe ou foi removido !', 'Atenção', MB_OK or MB_ICONWARNING); SetActiveWindow(Application.Handle); end else begin BitMap.LoadFromFile(Imagem); with QuickRep1.QRPrinter do begin Y := YPos(PaperLengthValue) div 6; X := XPos(PaperWidthValue) div 4; R := Rect(X, 2 * Y, 3 * X, 4 * Y); ImprimeBitMap(Canvas, BitMap, R); end; end; finally BitMap.Free; end; end;  
Responder

29/10/2010

Robert Koch

Excelente dica... mas como faço para que a imagem saia na folha inteira, pois esta dica a imagem fica no centro da folha com a imagem pequena ???   se aparecer na folha inteira... salva minha vida ! rsrsrsr   abss a todos !!
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar