PDA

Ver la Versión Completa : Rave cambiar color a un rectangulo


jupehe
23-03-2015, 17:07:31
LLevo varios dias intentado, que el color de rectangulo rectagle1.fillcolor cambien segun el valor de un datatex, del mismo reporte. En el quickreport lo tenia echo pero aqui no consigo que funcione. me podrias ayudar a conseguirlo o donde puedo conseguir la información, ya que toda la que he conseguido, no me es de ayuda.
Gracias y un saludo a todos

ElDioni
23-03-2015, 18:02:28
Hola,

cuando trabajo con rave intengo hacer todos los cambios de apariencia desde delphi.

Para tu caso sería algo así.


procedure.Imprimir();
var
Pagina: TRavePage;
Rectangulo:TRaveRectangle;
begin
RvProject1.SelectReport('Report1',true); //Tienes que poner el nombre del report
Pagina:= RVProject1.Projman.FindRaveComponent('Report1.Page1',nil) As TRavePage; //Tienes que poner el nombre de la página.
Rectangulo:=RvProject1.ProjMan.FindRaveComponent('Rectangle1',Pagina) as TRaveRectangle; //ahora tienes que poner el nombre del rectángulo.
//ya puedes utiilzar el rectángulo de rave desde delphi como quieras
if true then Rectangulo.FillColor:=ClLime
else Rectangulo.FillColor:=ClPurple;
end;


Por cierto, en el uses tienes que añadir las librerías correspondientes de los objetos del rave que vas a utilizar, para este caso (los digo de memoria) creo que son RVCsStd o RVCsDraw y RVClass

Saludos.

jupehe
23-03-2015, 21:44:39
Gracias por responder, lo he probado y me da violacion de acceso, de todas maneras, pienso que solo valdria para genera una pagina, yo lo que necesito, es hacer un reporte de todos los registros y ir cambiando el color del rectangulo segun lo que tenga otro campo, ejemplo si el campo pone pan, el color seria rojo, si es azucar seria amarillo.
Perdona mi ignorancia, pero acabo de empezar con el rave.
Un saludo. seguire probando

Segun parece el error es cuando
if true then Rectangulo.FillColor:=ClLime
else Rectangulo.FillColor:=ClPurple;

me debe faltar alguna libreria.

ElDioni
24-03-2015, 10:24:13
Hola,

normalmente ese error me salta cuando me he equivocaco al poner el nombre del componente del rave, o porque no he elegido el reporte correcto y por lo tanto no encuentra el objeto que estoy buscando.

Comprueba que tu reporte de rave sea el Report1.
Que el nombre de la página de ese reporte sea Page1.
Que el nombre del rectángulo al que quieres cambiar el color se Rectangle1.

Saludos.

identsoft
26-03-2015, 10:54:59
Otra solucion puede ser en los eventos del propio Rave.
Antes de imprimir la banda compruebas el valor del dataset y cambias ( o no) el color del rectangulo.

function DataBand1_Onbeforeprint(Self:TRaveDataBand)
begin
if datatext.text = 'X' then
rectangle1.Fillcolor := 'Blue';
else
rectangle1.FillColor := 'Red';
end;

Cambia los nombres del rectangulo y del datatext por los tuyos.

jupehe
26-03-2015, 19:41:13
Ya consegui que lo hiciera de una manera que me facilita lo que necesito
If DataView1campo.AsString='valordelcampo' THEN
rectangle1.fillcolor:=clRed;
end if;
todo lo que habeis puesto me valia, pero de esta manera y teniendo que controlar varios coleres, me ha sido mas facil.

Gracias a todos por vuestra ayuda, que me ha sido de mucha utilidad. Un saludo