PDA

Ver la Versión Completa : evento OnBeforePrint


chalys
02-10-2005, 00:40:55
Hola amigos del foro, estoy realizando un reporte en rave report y estoy usando el evento OnBeforePrint de mi DataBand, en el cual tengo algunos Datatext pero solo quiero imprimir alguno de ellos, para esto estado haciendo lo siguiente:


function Band1_OnBeforePrint(Self: TRaveBand);

begin
if Self.tag=1 then

datatext1.color:=clwhite;

end if;

Self.tag:=1;

end OnBeforePrint;



Al momento de compilar en rave me sale un error en la propiedad tag creo que no reconoce la propiedad tag. No se si alguien me puede ayudar o darme alguna otra idea para hacer esto muchas gracias por su ayuda.

Lepe
02-10-2005, 07:04:23
function Band1_OnBeforePrint(Self: TRaveBand);

Esa declaración tiene dos fallos:
- No es una función, es un procedimiento.
- No pertenece a ninguna clase, es decir tiene que ser:


procedure TReportRave.Band1BeforePrint(Self: TRaveBand);

Si no es miembro de tu Informe, dudo que puedas usar "Self" dentro de la rutina.

Nunca he trabajado con Rave; ¿has visto si tienen la propiedad Tag definida?

Por otra parte, primero preguntas si el tag es igual a uno, y despues lo pones a 1; lo veo un poco raro, ya que el primer registro lo pinta con el color definido en tiempo de diseño, y el segundo registro, ya lo pinta en blanco.

¿Qué quieres hacer realmente? quizás haya otras formas.

Un saludo

dec
02-10-2005, 08:24:12
Hola,

Metiéndome en medio como el salchichón en los bocadillos de salchichón, obviamente...



(...) lo veo un poco raro, ya que el primer registro lo pinta con el color definido en tiempo de diseño, y el segundo registro, ya lo pinta en blanco.


Blanco sobre blanco... para que no se vea, puesto que:



(...) solo quiero imprimir alguno de ellos (...)

chalys
03-10-2005, 06:07:05
Hola amigos del foro y muchas gracias por responder, bueno por lo visto no pude hacer que me comprendieran pero les explico, tengo formularios impresos por una imprenta (con su logotipo y datos de la empresa), en los cuales debo imprimir mi reporte.
Estoy tratando de diseñar estos mismos formularios impresos por la imprenta en rave report de manera que cuando estos sean visualizados en vista previa se vea como el formulario impreso por la imprenta pero con los datos ya llenados de la BD, al momento de imprimir solo quiero que imprima los datos de la BD.
Una pregunta que soluciona parte de mi problema es la siguiente:
ver este foro (utiliza tag). http://www.clubdelphi.com/foros/showthread.php?t=24947
La solución que me dan aquí funciona para quick report y no así para el rave report no se porque?.
Originalmente publicado por Lepe
Esa declaración tiene dos fallos:
- No es una función, es un procedimiento.
- No pertenece a ninguna clase, es decir tiene que ser:
En el rave report 5.1.3 el evento onbeforeprint de la banda esta predefinido de la siguiente manera:
{ Event for Band1.OnBeforePrint }
function Band1_OnBeforePrint(Self: TRaveBand);

begin



end OnBeforePrint;Lo único que puedo hacer es introducir el código entre el begin y end OnBeforePrint además de declarar variables.

Creo que he tratado de explicar de la mejor forma que he podido y espero que me entiendan no se si pueden darme alguna solución a este problema o darme algún otro consejo muchas gracias …..

Lepe
03-10-2005, 14:43:43
La solución que me dan aquí funciona para quick report y no así para el rave report no se porque?

Porque Printband es un parámetro del evento, sin embargo, parece que en Rave no está. Tendrás que buscar en la ayuda de Rave, a ver si tiene una propiedad o método que haga lo mismo (supongo que lo tendrá, posiblemente con otro nombre). El evento BeforePrint recibe el parámetro Self: TRaveBand, intenta con el code insight de delphi, poniendo Self. e inspeccionando las variables, propiedades y métodos de esa banda (Enabled, Visible, etc).


Si solo quieres inhabilitar uno de los datatext, intenta con el BeforePrint del Datatext; quizas la propiedad Enabled, Visible, del mismo Datatext te pueda servir, en lugar de poner el texto blanco.

PD: gracias dec por la aclaración, se me pasó por alto ese detalle ;)