[Lazarus] DBGrid.OnDrawColumnCell
Serge Girard (via Orange)
girard.sergea at orange.fr
Thu Sep 17 15:15:27 CEST 2009
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 <luca at wetron.es
> <mailto:luca at wetron.es>> 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
> Lazarus at lists.lazarus.freepascal.org
> <mailto:Lazarus at lists.lazarus.freepascal.org>
> http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus
>
>
> ------------------------------------------------------------------------
>
> --
> _______________________________________________
> Lazarus mailing list
> Lazarus at lists.lazarus.freepascal.org
> 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;
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus/attachments/20090917/517056b6/attachment-0004.html>
More information about the Lazarus
mailing list