在DBGrid中当选中一条记录,当单击是这条记录会加颜色区别,其他的记录的颜色不变,请问用代码怎样去实现?当选中下一条是也会变,而且上面的那条记录的颜色也不会变,没有选中的记录就不会变。各位请帮帮忙,这里我就谢谢先了
解决方案 »
- 我不会Delphi,哪位兄弟能帮我翻译成C#或VB或VB.net
- 打印窗体图片对像
- 在ado 环境下如何使用 decison 控件??
- 安装msinet.ocx后,把控件拖出来时,最提示License information for TInet not found .you cannot use this control in design mode
- 求中国象棋的算法
- 哪有DelphiX控件的教程呀
- 怎样在使用TextOut输出文本到图片时给文本加上轮廓效果?
- 求救!怎样在按扭事件中读取当前缓冲区的内容。急!
- 请问如何得到EDIT控件中光标的物理位置?急!!!!!立刻给分
- 如何制作需要身份验证的邮件收发程序,只要解决立即给分!
- 诚聘Delphi程序员
- 寻找富文本编辑控件!
OnDrawColumnCell事件写:
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
with DBGrid1 do
begin
if gdSelected in State then
Canvas.Brush.Color:=clRed
else
Canvas.Brush.Color:=clWhite;
Canvas.FillRect(Rect);
DefaultDrawColumnCell(Rect,DataCol,Column,State);
end;
end;
第一种是最容易的一类上色,最直接的让你的用户看到,为TDBGrid中指定的某一列上色。
我们采用的方法是通过TDBGrid的TColumns属性来完成。步骤如下: 用鼠标选择Form上的TDBGrid组件,在Object Inspector中双击TDBGrid的Columns属性打开Columns编辑窗口。(想了解更多内容查阅Delphi帮助中的“Columns editor: creating persistent columns”主题。)
下面你所要做的就是指定你需要改变颜色的那一行或几行的背景颜色,如果你要改变字体颜色,就将Font属性集中的Color属性修改一下。为行上色
第1种 如果你想要为TDBGrid中所选的某一格或某些格指定颜色,而且你不想使用dgRowSelect选项,因为你想让TDBGrid可以直接在TDBGrid单元格中编辑数据,你应该使用TDBGrid的OnDrawColumnCell事件。 下面我们用到的技巧可以动态改变TDBGrid中的单元格文本的颜色。 代码如下:procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if Table1.FieldByName(’Salary’).AsCurrency>36000 then
//指定所需改变颜色行的条件表达式
DBGrid1.Canvas.Font.Color:=clMaroon;
//指定颜色为clMaroon
DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
上述代码执行的功能是:把薪水超过3万6千元的员工(employee)记录字体颜色用栗色(Maroon)标出来。
第2种 如何动态改变TDBGrid中行的颜色,代码如下:
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if Table1.FieldByName(’Salary’).AsCurrency>36000 then
DBGrid1.Canvas.Brush.Color:=clWhite;
DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
上述代码执行的功能是:把薪水超过3万6千元的员工(employee)记录背景用白色(White)标出来。
这个是最简单的