Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Mailing lists / lazarus-es / 2011-04

dbgrid; ondrawcolumncell

6 messages · 3 people · –

Reply by email Subscribe to this list Your subscription

Read-only archive. Use j and k to move between messages.

Paola Bruccoleri

Hola!
una preguntita..

�qu� le estar� faltando a este c�digo que no me pinta las filas del grid seg�n una condici�n? O sea, solo quiero pintar el fondo, no la letra. Puse un showmessage(qry.FieldByName('adjudicada').Value) para ver si me devolv�a algo y no me devuelve nada!.. pero en otro lado del c�digo lo uso y si me devuelve el valor correspondiente!
muchas gracias

procedure Tform.dbgDrawColumnCell(Sender: TObject; const Rect: TRect;
   DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
   with Sender as TDBGrid do
     begin
       if qry.FieldByName('adjudicada').Value = 'S' then  // verde
            begin
              Canvas.Brush.Color:= clMoneyGreen;
            end;
       if qry.FieldByName('adjudicada').Value = 'N' then  // rojo
            begin
              Canvas.Brush.Color:= $00EEEEFF;
            end;
       if qry.FieldByName('adjudicada').Value = ' ' then  // amarillo
            begin
              Canvas.Brush.Color:= RGB(254,253,192);
            end;
       DefaultDrawColumnCell (Rect,DataCol,Column,State);
     end;
end;

Reply by email

Ismael L. Donis García
to Paola Bruccoleri

No se que te puede faltar pero prueba lo que sigue:

procedure Tform.dbgDrawColumnCell(Sender: TObject; const Rect: TRect;
   DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
   with Sender as TDBGrid do
     begin
       if qry.FieldByName('adjudicada').Value = 'S' then  // verde
              Canvas.Brush.Color:= clMoneyGreen
       else if qry.FieldByName('adjudicada').Value = 'N' then  // rojo
              Canvas.Brush.Color:= $00EEEEFF
       else  // amarillo
              Canvas.Brush.Color:= RGB(254,253,192);
       DefaultDrawColumnCell (Rect,DataCol,Column,State);
     end;
end;

Para mi que no te cog�a ninguno de los 3 valores por los que preguntabas, por lo que al final puse ELSE

Saludos Cordiales
=========
|| ISMAEL ||
=========

Earlier message 46 lines
----- Original Message ----- From: "Paola Bruccoleri" <pbruccoleri en adinet.com.uy> To: "Lista Lazarus" <lazarus-es en lists.lazarus.freepascal.org> Sent: Tuesday, April 19, 2011 1:24 PM Subject: [Lazarus-es] dbgrid; ondrawcolumncell Hola! una preguntita.. �qu� le estar� faltando a este c�digo que no me pinta las filas del grid seg�n una condici�n? O sea, solo quiero pintar el fondo, no la letra. Puse un showmessage(qry.FieldByName('adjudicada').Value) para ver si me devolv�a algo y no me devuelve nada!.. pero en otro lado del c�digo lo uso y si me devuelve el valor correspondiente! muchas gracias procedure Tform.dbgDrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin with Sender as TDBGrid do begin if qry.FieldByName('adjudicada').Value = 'S' then // verde begin Canvas.Brush.Color:= clMoneyGreen; end; if qry.FieldByName('adjudicada').Value = 'N' then // rojo begin Canvas.Brush.Color:= $00EEEEFF; end; if qry.FieldByName('adjudicada').Value = ' ' then // amarillo begin Canvas.Brush.Color:= RGB(254,253,192); end; DefaultDrawColumnCell (Rect,DataCol,Column,State); end; end;

Reply by email

José Mejuto
to Paola Bruccoleri: Hola! una preguntita.. �qu� le estar� faltando a este c�digo que no me pinta las…

Hello Paola,

Tuesday, April 19, 2011, 7:24:55 PM, you wrote:

PB> �qu� le estar� faltando a este c�digo que no me pinta las filas del grid PB> seg�n una condici�n? O sea, solo quiero pintar el fondo, no la letra. PB> Puse un showmessage(qry.FieldByName('adjudicada').Value) para ver si me PB> devolv�a algo y no me devuelve nada!.. pero en otro lado del c�digo lo PB> uso y si me devuelve el valor correspondiente! PB> muchas gracias

Creo que lo que buscas es el evento "OnPrepareCanvas".

Best regards, Jos�

Reply by email

Paola Bruccoleri
to José Mejuto

El 19/04/2011 03:17 p.m., Jos� Mejuto escribi�:

Show quoted text 14 lines
Hello Paola, Tuesday, April 19, 2011, 7:24:55 PM, you wrote: PB> �qu� le estar� faltando a este c�digo que no me pinta las filas del grid PB> seg�n una condici�n? O sea, solo quiero pintar el fondo, no la letra. PB> Puse un showmessage(qry.FieldByName('adjudicada').Value) para ver si me PB> devolv�a algo y no me devuelve nada!.. pero en otro lado del c�digo lo PB> uso y si me devuelve el valor correspondiente! PB> muchas gracias Creo que lo que buscas es el evento "OnPrepareCanvas".

tampoco me funcion�!
en Delphi funciona xq me fij� en un c�digo de un sistema que ten�a hecho de muuuchos a�os atr�s y usaba ese evento.
chauuuuuu

Reply by email

Paola Bruccoleri
to Ismael L. Donis García: No se que te puede faltar pero prueba lo que sigue: procedure…

El 19/04/2011 02:43 p.m., Ismael L. Donis Garc�a escribi�:

Hola Ismael..
si pon�s un showmessage donde te indico, y que debe devolver S, N o nada, siempre devuelve nada (tengo 2 registros en la consulta, uno que tiene S y otro ' ') por eso es que no cmbia nada, porque no entra en ning�n if (ya lo depur�)

Show quoted text 5 lines
procedure Tform.dbgDrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin

showmessage(qry.FieldByName('adjudicada').Value)

Show quoted text 14 lines
with Sender as TDBGrid do begin if qry.FieldByName('adjudicada').Value = 'S' then // verde Canvas.Brush.Color:= clMoneyGreen else if qry.FieldByName('adjudicada').Value = 'N' then // rojo Canvas.Brush.Color:= $00EEEEFF else // amarillo Canvas.Brush.Color:= RGB(254,253,192); DefaultDrawColumnCell (Rect,DataCol,Column,State); end; end; Para mi que no te cog�a ninguno de los 3 valores por los que preguntabas, por lo que al final puse ELSE

Reply by email

Paola Bruccoleri
to José Mejuto: PB> �qu� le estar� faltando a este c�digo que no me pinta las filas del grid PB>…

El 19/04/2011 03:17 p.m., Jos� Mejuto escribi�:

Show quoted text 14 lines
Hello Paola, Tuesday, April 19, 2011, 7:24:55 PM, you wrote: PB> �qu� le estar� faltando a este c�digo que no me pinta las filas del grid PB> seg�n una condici�n? O sea, solo quiero pintar el fondo, no la letra. PB> Puse un showmessage(qry.FieldByName('adjudicada').Value) para ver si me PB> devolv�a algo y no me devuelve nada!.. pero en otro lado del c�digo lo PB> uso y si me devuelve el valor correspondiente! PB> muchas gracias Creo que lo que buscas es el evento "OnPrepareCanvas".

sip.. retiro lo dicho en el mail anterior... funciona con este evento.. ya estuve mirando en la wiki que ac� tb hay unas diferencias con delphi! muchas gracias
chauuuuuuuu

Reply by email