Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-11-2009
cestradar cestradar is offline
Miembro
 
Registrado: ene 2008
Posts: 24
Poder: 0
cestradar Va por buen camino
Marca de agua en una banda específica

Hola, gracias anticipadas por cualquier ayuda

Estoy intentando colocar una marca de agua en un QRBand ligado a un QRGroup. El problema lo tengo en que no hay un evento definido en las bandas que se ejecute por cada ves que se genera, o por lo menos no se actualiza la propiedad .TOP y la marca de agua se imprime en el mismo sitio quedando solo una.

Quiero que dependiendo de un estatus de ese grupo se coloque una marca de agua, ahora solo cambio el color para diferenciarla del resto, pero me han solicitado que vea la posibilidad de hacer esto que intento, pero me he topado con ese detalle ¿cómo puedo variar el parámetro DestY en la función StretchDIBits y cómo automatizar la llamada de tal forma que puedan imprimirse tantas imágenes como se ocupen en su posición correcta?

El código de la marca de agua es como todos los que circulan por este y otros foros:

Código:
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 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;
      finally
         FreeMem(Info, InfoSize);
      end;
    end;

  FINALLY
    bmp.free
  END;
Gracias!

PD. No se si esta pregunta ya este antes, he querido revisar las respuestas anteriores pero por alguna razón solo veo los temas nuevos, no he encontrado alguna nueva preferencia en mi panel de control para modificar esto.

Última edición por cestradar fecha: 12-11-2009 a las 19:16:57.
Responder Con Cita
  #2  
Antiguo 13-11-2009
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 17
rgstuamigo Va por buen camino
Arrow

Bueno supongo que estas trabajando con QuickReport, si es asi pues te cuento que apartir de la version 4 hacia adelante se puede poner una imagen de fondo, eso significa que tu imagen debe de estar ya bien configurada en tono,brillo,transparencia,etc para lo cual puedes editarla con cualquier programa tal como PothoShop,etc. En otras palabras tu imagen ya debe estar preparada es un archivo image(*.BMP,jpg) aunque no lo he probado con imagenes Jpg.
Bueno teniendo ya tu imagen lista en un archivo lo que se hace es lo siguiente:
Cita:
* Se baja un componente QRImage encima de tu componente QuickReport.
OJO cuando se baje el QRImage hay que tener cuidado de no ponerlo encima de ninguna banda, es decir ponerlo, por decir asi, en una esquinita del QuickReport por fuera de las lineas de impresion.
*Escribir en la propiedad BackImageControl del QuickReport el nombre del componente QrImage que acabamos de Bajar.
*Cargar la imagen a nuestro componente QrImage, esto se hace con la propiedad Picture.
*Acomodar o centrar el tamaño de nuestro Componente QrImage acorde a nuestras necesidades, ojo a veces quisas el QrImage no se va ver por que esta detras de todas las bandas en ese caso podemos seleccionarla y darle click derecho>Control>BringToFront (esto para que se venga hacia adelante)
*Finalmente poner la propiedad TransparentBand y Transparent de las bandas y los QrLabel,etc respectivamente en true.
Ojo: Lo anterior se deja al criterio de cada uno.
Eso es todo , quisas podemos visualizar el reporte dandole click derecho al QuickRepot>Preview para tener una primera impresion visual.
Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7

Última edición por rgstuamigo fecha: 13-11-2009 a las 14:18:07. Razón: Estética
Responder Con Cita
  #3  
Antiguo 13-11-2009
cestradar cestradar is offline
Miembro
 
Registrado: ene 2008
Posts: 24
Poder: 0
cestradar Va por buen camino
Hola rgstuamigo, gracias por contestar.

Efectivamente trabajo con QR (de ahí el nombre de los objetos) pero lo hago con el que viene en Delphi 7, es decir la versión 3.0.9; nunca he intentado usar otra versión por que entiendo que ya sería de pago.

Las intrucciones que colocas deduzco son para colocar una marca de agua al reporte, y ese no es el problema, el problema es que yo quiero la marca de agua en una banda específica.

Imagina un reporte quickreport con una banda de agrupación y un detailBand ligado a esta y un footerBand ligado al detail (o a la agrupadora, da lo mismo), al general el reporte se generan N hojas con M números de grupos, bueno, quiero que cuando un grupo tenga cierto estatus, en la banda correspondiente a ese grupo se coloque una marca de agua.

De momento solo coloreo la bada agrupadora dependiendo del estatus para diferenciarlo, pero como ya mencioné estoy analizando la posibilidad de todo el grupo presentarlo con una marca de agua.

Puedo colocar tantas marcas de agua como llamadas haga al StretchDIBits del código que puse, y en la posición que manualmente coloque en sus parámetros. Aquí era la pregunta, ¿cómo saber las coordenadas en la página de cierta banda?, con eso podría automatizar ese dato, pero no hay evento que se ejecute por cada grupo generado. Quizá con un sumaryBand pero igual no tengo la posición de la banda agrupadora.

Quizá simplemente no se puede
Responder Con Cita
  #4  
Antiguo 13-11-2009
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 17
rgstuamigo Va por buen camino
Arrow

Lamentablemente los pasos que te he dicho es solo,como bien dije para versiones de Quick report desde la 4 hacia adelante(segun tengo entendido), si tuvieras estas versiones te ubiera dicho que intentes seguir los pasos que te habia puesto anteriromente con la diferencia que solo hagas transparente la banda en la que quieres que se visualize la imagen,desde luego deberias redimensionar el tamaño del QrImage al tamaño especifico de la banda y ubicarlo exactamente atras.
Pero como bien digo esto es solo para versiones a partir de la 4 hacia adelente; personalmete trabajo con la version 5.02 de Quick Report.
Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
Responder Con Cita
  #5  
Antiguo 13-11-2009
cestradar cestradar is offline
Miembro
 
Registrado: ene 2008
Posts: 24
Poder: 0
cestradar Va por buen camino
Supongo que eso solo haría que se viera en todos los agrupamientos, como si fuera una marca de agua de reporte, y no es lo que necesito.

Es la misma banda, hacerla transparente no me serviría por que yo quiero que la marca de agua este en esa banda si y solo si un dato en específico vale algo. Por ello el interes de saber la posición en la hoja de la banda en el momento de esa condición.

Igual, supongo no se puede.
Responder Con Cita
  #6  
Antiguo 13-11-2009
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 17
rgstuamigo Va por buen camino
Arrow

Cita:
Empezado por cestradar Ver Mensaje
Supongo que eso solo haría que se viera en todos los agrupamientos, como si fuera una marca de agua de reporte, y no es lo que necesito.

Es la misma banda, hacerla transparente no me serviría por que yo quiero que la marca de agua este en esa banda si y solo si un dato en específico vale algo. Por ello el interes de saber la posición en la hoja de la banda en el momento de esa condición.

Igual, supongo no se puede.
Bueno en tal caso quisas podrias usar el evento BeforePrint(antes de imprimir) de tu banda en cuestion, para poder poner la propiedad enable del qrImage en true o false segun la condicion que desees..heee, no lo sé, abria que probarlo.
Saludos..
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
Responder Con Cita
Respuesta



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 14:18:00
Imprimir una página especifica Alexander Impresión 0 10-07-2006 16:07:21
Utilizar Unidad Especifica Jvilomar OOP 4 17-04-2006 15:55:47
Búsqueda muy específica en un string... JuanBCT Varios 15 02-05-2005 14:58:00
marca de agua davidgaldo Impresión 1 18-02-2004 12:47:28


La franja horaria es GMT +2. Ahora son las 14:25:15.


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