Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Impresión
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-12-2009
URBANO URBANO is offline
Miembro
 
Registrado: jul 2003
Ubicación: Huelva
Posts: 126
Poder: 24
URBANO Va por buen camino
Red face

Hola Cestradar,

No se realmente como se puede hacer lo que comentas, pero por lo que he leido tu si sabes lo que yo necesito y que no consigo hacer. Necesito poner un marca de agua en un informe (QR) en el centro de este. El informe es de una sola hoja.

He visto el codigo que utilizas, pero no lo entiendo, algo complejo para mi. Podrías explicarme algo ese codigo. De que metodo se llama, declaración de variables que utilizas, uses, etc...

Te agradecería mucho la ayuda. Gracias.

Saludos.
__________________
El saber no ocupa lugar.
Responder Con Cita
  #2  
Antiguo 07-12-2009
cestradar cestradar is offline
Miembro
 
Registrado: ene 2008
Posts: 24
Poder: 0
cestradar Va por buen camino
Hola URBANO, en realidad con el ejemplo de rgstuamigo tienes para hacer lo que ocupas, pero si deseas hacerlo con el código que coloqué es fácil, esta explicado en muchos post en este y otros foros por internet, basta con que coloques una función como esta:

Código Delphi [-]
 
procedure TFQRBorrador.ImprimeMarcaAgua(QuickRep1:TQuickRep; Sender: TQRCustomBand);
var
   bmp : TBitMap;
   R      : TRect;
   X, Y   : integer;
   Cnv    : TCanvas;
   Info : PBitMapInfo;
   InfoSize : DWORD;
   Image : Pointer;
   ImageSize : DWORD;
begin
  TRY
    bmp := TBitMap.Create;
    bmp.LoadFromFile(ExtractFilePath(Application.ExeName)+'no_autorizado.bmp');
    with QuickRep1.QRPrinter do
    begin
      Y := YPos(PaperLengthValue) div 6;
      X := XPos(PaperWidthValue) div 4;
      R := Rect(X, Y, X*3, Trunc(Y*1.5));
      Cnv:=Canvas;
    end;//with
    with bmp do
    begin
      GetDIBSizes(Handle, InfoSize, ImageSize);
      GetMem(Info, InfoSize);
      try
         Getmem(Image, ImageSize);
         try
            GetDIB(Handle, Palette, Info^,Image^);
            with Info^.bmiHeader do Begin
               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 );
            End;
         finally
            FreeMem(Image, ImageSize);
         end;//try-finally
      finally
         FreeMem(Info, InfoSize);
      end;//try-finally
    end;//with
  FINALLY
    bmp.free
  END;//try-finally
end;

y la mandes llamar en el evento AfterPrint de alguna banda o del reporte, con algo como esto:

Código Delphi [-]
 
   If not QBorradorAutorizado.AsBoolean Then Begin
      ImprimeMarcaAgua(QRBorrador, Sender)
   End

Se puede hacer de otras formas pero con ese funcionará. Cambia la ruta/imagen que viene el código duro.

Las funciones StretchDIBits, GetDIBSizes, GetMem y demás estan explicadas en el menu Ayuda apartado Windows SDK

Saludos
Responder Con Cita
  #3  
Antiguo 10-12-2009
URBANO URBANO is offline
Miembro
 
Registrado: jul 2003
Ubicación: Huelva
Posts: 126
Poder: 24
URBANO Va por buen camino
Smile

Gracias por tus comentarios. Lo he probado y funciona bien.

El único problema que he encontrado es a la hora de convertirlo a pdf. Si mando el informe a imprimir a una impresora virtual (PDFCreator) , me genera el informe pero imprime la marca de agua delante del texto. Esto lo he solucionado utilizando el componente "ExportQR" el cual lo he colocado en mi informe y me permite generar un pdf a partir de el. Con lo que ya no dependo de tener instalada una impresora virtual de pdf en el sistema y la marca de agua aparece de forma correcta en el documento pdf.

Saludos.
__________________
El saber no ocupa lugar.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Texto en el agua vtdeleon Noticias 2 01-09-2006 15:18:00
Imprimir una página especifica Alexander Impresión 0 10-07-2006 17:07:21
Utilizar Unidad Especifica Jvilomar OOP 4 17-04-2006 16:55:47
Búsqueda muy específica en un string... JuanBCT Varios 15 02-05-2005 15:58:00
marca de agua davidgaldo Impresión 1 18-02-2004 13:47:28


La franja horaria es GMT +2. Ahora son las 20:34:07.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi