想要一列的顏色為灰色,但是得到焦點後,又變成了白色.......怎樣才能一直為灰色?............請指教
解决方案 »
- 如何保证dbgrid总显示最后一行
- 剪贴板的使用问题
- 求助:如何实现对Edit中输入的日期数据的检验?
- ADO连ACCESS??
- 怎么向扇区写信息???????
- 奇怪!!!fastreport2.47(Delphi7)运行时提示Stack OverFlow,再编译Delphi自动关闭
- 请问:我想在Dbgrid中单击或双击时知道我点的是哪一行的数据,代码要怎么写???
- word文档与OleVariant转换的问题
- 有关filelistbox的问题????急!
- 子,父窗体的显示问题??????????迷惑???????
- 对数据对进安全保护,如何对中途断电进行处理
- 请 问《程序员》杂志的订阅代号是多少??
begin
if column.fieldName = 'salary' then //根据某个字段的值控制dbgrid1
//的颜色
begin
if column.field.asFloat > 50000.0 then
begin
dbgrid1.canvas.Brush.Color := clGray; //工资大于50000.0的变为灰色
if gdFocused in State then
dbgrid1.canvas.Font.Color := clWhite; //获得焦点
end;
end; dbgrid1.DefaultDrawColumnCell(Rect, DataCol,Column,State);
end;
DataCol: Integer; Column: TColumn;State: TGridDrawState;
singlecolor:TColor;doublecolor:TColor;selectedcolor:TColor);
var
dataset:tdataset;
dbgrid:tdbgrid;
begin
dataset:=TDBGrid(Sender).DataSource.DataSet;
dbgrid:=TDBGrid(Sender);
if (dataset.Recno mod 2) <> 0 then //隔行
begin
dbgrid.Canvas.Font.Color := clWhite;
dbgrid.Canvas.Brush.Color := singlecolor; //这里设置单元格填充色
dbgrid.Canvas.FillRect(Rect); //这里对相应的单元格进行背景色填充
end
else
begin
dbgrid.Canvas.Font.Color := clWhite;
dbgrid.Canvas.Brush.Color :=doublecolor;
dbgrid.Canvas.FillRect(Rect);
end; //输出内容
dbgrid.Canvas.TextRect( Rect, Rect.Left, Rect.Top, Column.Field.DisplayText);
if gdSelected in State then //被选中行的颜色
begin
dbgrid.Canvas.Brush.Color :=selectedcolor;
dbgrid.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
end;