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