matt shaffer a écrit :
I thought I'd just throw this out there:
I'm still having issues with CPU usage and my customized grid. How often is prepare canvas called? I would think only when the form would be moving or otherwise need moving, but I suspect it's being called constantly. The grid is quite customized, changing alignment for most cells, checking the strings of every single cell and changing their fonts and backgrounds accordingly.. I'll throw in the code if anyone's interested.

On Thu, Sep 17, 2009 at 6:08 AM, Luca Olivetti <[email protected] <mailto:[email protected]>> wrote:

    En/na Andrea Mauri ha escrit:

        Dear all,
        in my application I need to change the cell color of some
        cells in a DBGrid.
        I use the OnDrawColumnCell event. My DBGrid name is
        dbgLoadings here the OnDrawColumnCell event:

        procedure TfrmPCA.dbgLoadingsDrawColumnCell(Sender: TObject;
        const Rect: TRect;
         DataCol: Integer; Column: TColumn; State: TGridDrawState);
        begin
         if DataCol >= 2 then
         begin
           dbgLoadings.Canvas.Font.Color:= clWhite;
           dbgLoadings.Canvas.Brush.Color:= clRed;
         end;
         if DataCol >= 2 then
          dbgLoadings.DefaultDrawColumnCell
            (Rect, DataCol, Column, State);
        end;

        It does not work. The Font appears fuzzy coloured like if the
        white font is written upon the original balck one. And the
        foreground of the cell remain white.

        Any hint?
        Regards,
        Andrea


    I leave DefaultDrawing to true and use the OnPrepareCanvas event
    to do that.
    See also
    http://wiki.freepascal.org/Grids_Reference_Page


    Bye
-- Luca Olivetti
    Wetron Automatización S.A. http://www.wetron.es/
    Tel. +34 93 5883004 (Ext.133)  Fax +34 93 5883007


    --
    _______________________________________________
    Lazarus mailing list
    [email protected]
    <mailto:[email protected]>
    http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus


------------------------------------------------------------------------

--
_______________________________________________
Lazarus mailing list
[email protected]
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus
Hello

use the OnPrepareCanvas instead of onDrawColumnCell (Bad Delphi Custom lol )
here is an sample

procedure TForm1.DBGrid1PrepareCanvas(sender: TObject; DataCol: Integer;
 Column: TColumn; AState: TGridDrawState);
begin
  with (Sender as TDBGrid) do
   begin
     if (DataCol=0) OR (DataSource.DataSet.FieldByName('ID').asInteger<0)
      then begin
          Canvas.Brush.Color:=FixedColor;   // or whatever color wanted
          Canvas.Font.Color:=clWindowText; // idem
// Canvas.TextStyle.Alignment:=taCenter another tip to center the text in the cell end;
  end;
end;
--
_______________________________________________
Lazarus mailing list
[email protected]
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus

Reply via email to