Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Impresión (https://www.clubdelphi.com/foros/forumdisplay.php?f=4)
-   -   Como cambiar una propiedad del Rave en tiempo de ejecucion (https://www.clubdelphi.com/foros/showthread.php?t=31256)

ach_666 03-05-2006 18:00:35

Como cambiar una propiedad del Rave en tiempo de ejecucion
 
Hola a tod@s, quiero saber si puedo variar una propiedad de un componente de mi Rave Report, a traves del codigo de mi programa en Delphi.

Es decir, a través de mi aplicación y segun sea el resultado de mi consulta para el Rave, poder cambiar el color de relleno (FillColor) de un rectangulo de mi reporte.

Gracias de antemano por si me podeis ayudar

Un saludo

fredo 03-05-2006 20:47:46

si se puede
 
hola es realmente ataoso hacerlo, pero se puede.....en rl rave no tienes que hacer nada.....solo en delphi....supongo que estas usando un RBDatasetConnection..., buen este tiene una propiedad onGetRow...
ahi declara las siguientes variables

Cita:

Código Delphi [-]
var MyPage: TRavePage;
     MyText1,MyText2{tantas como necesites cambiar}: TRaveText;
     Square1,Square2{tantos como necesites cambiar}:TRaveRectangle

Begin
      if {tu condicion}
      then
      Begin
             with RvLetterCovert.ProjMan do
             Begin
                    MyPage := FindRaveComponent('RCoverLetter.MainPage',nil)  as TRavePage;
                    MyText1 := FindRaveComponent('DataText1',MyPage) as TRaveText; {nombre de tus componentes dentro del rave}
                    Square1:= FindRaveComponent('Square1',MyPage) as TRaveRectangle;
                    if {condicion} 
                    then
                    begin 
                           MyText1.Font.Style:=[fsBold,fsItalic]
                           Square1.FillColor:=clWhite; 
                    end  
                    else
                   begin
                          MyText1.Font.Style:=[];
                          Square1.FillColor:=$00E4E4E4;
                   end;  
                   
                  {por ultimo, esto es muy importante, pasale valor a las columnas a manito... ya que te asume directamente que euieres conservar los campos....}  
                 // ejemplo
                   
                    With Connection do
                    begin
                           WriteIntData('',LettersXCourierLETTER_REF.AsInteger);
                           WriteIntData('',LettersXCourierCORRELATIVO.asInteger);
                           WriteFloatData('',LettersXCourierREF.asFloat);
                           WriteStrData('',LettersXCourierTEXT.AsString);
                           WriteStrData('',LettersXCourierCOURIER_.AsString);
                           WriteStrData('',LettersXCourierYOUR_REF.AsString);
                           {deben ir en el orden que estan definidos en el field editor... y con el tipo correspondiente.....}
                    end;
  
             end;
      end;
end;
;


eso es todo.... saludos

estas son las uniodades que necesitas para que no te cabesees tanto....

RpDefine, RpCon, RpConDS, RpBase, RpFiler, RpRave,
RpRender, RpRenderRTF, OleServer, Word97, RpRenderPDF, RpSystem,RVClass, RVProj, RVCsStd,RVCsDraw

ach_666 05-05-2006 09:49:01

Hola gracias por el codigo pero....


No entiendo que es el RvLetterCovert.ProjMan

Además noo consigo ver el codigo completo y la ultima parte (Connection) tampoco lo entiendo mucho, aunque no he llegado a poder comprobar esa parte.

Un saludo y gracias de todas formas

fredo 05-05-2006 14:33:21

explicacion
 
RvLetterCovert es un componente TRVProyect, en mi ejemplo se llama asi, ProjMan es una propiedad, FindRaveComponent(<nombre reporte.pagina>,nulo)
el resto es facil de deducir....:D
saludos.

ach_666 05-05-2006 18:59:41

¡¡¡¡¡¡¡¡¡ Lo conseguí !!!!!!!!!!!

Muchas Gracias

Esto se podría rematar si me pudieras decir conque Write...Data('',campo) imprimo una Fecha no lo consigo de ninguna forma.

No obstante muchas gracias.

fredo 05-05-2006 19:59:41

no es deducibla....?????
 
por sia caso WriteDateTimeData();:D

ach_666 06-05-2006 13:58:54

Perfecto funcionó.

Ahora en otro reporte tengo un problema, pq en mi query genero un campo datediff(Fecha1,Fecha2) as dias y luego al hacer el writeIntData me da un error diciendome que no se corresponde con el data que se tiene que escribir.

El problema es que no se como considera el valor dias, desde luego no como entero.

Un saludo y gracias

ach_666 06-05-2006 18:53:03

POR FIN LO CONSEGUI.

El problema estaba que lo considera un int64 con lo cual la funcion para escribir una diferencia entre dos fechas era WriteInt64Data(..).

Gracias por todo Fredo, y gracias a TinkerBell que resolvio esto ultimo.

Un saludo


La franja horaria es GMT +2. Ahora son las 16:58:52.

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