在双击事件中加入代码:
dbgrid1.canvas.font.color:=clRed;
dbgrid1.canvas.font.color:=clRed;
解决方案 »
- DBCtrlGrid 怎么排序
- 如何注册多个系统热键
- 求助如何实现这样的界面用什么控件?
- 100分,请问:《北京市交通运输业......转让无形资产专用发票》(税控装置打印卷式发票)上打印机打出来的字体是什么字体?
- 我想知道nil的含义!
- 简单问题,如何在程序中按下一个按钮后打开已经编译好的chm帮助文档?
- EOleSysError错误,
- 放假拿下了Delphi,散分自贺!
- 如何通过DataSource初始化DBRadioGroup?(举例说明)
- 一个关于IE的编程问题。请各位大哥帮帮忙。
- 关于在DELPHI中内嵌WORD的方法!
- 小问题请在线的朋友帮帮忙吧,请问delphi里面将保存文件的默认目录改为我的目录在那改呀?
先定义一公用变量CurrNo,用来记录被双击的记录的记录号,
然后在dbGrid的DrawColumnCell事件中实现字体,颜色等的改变.
var currNo
//////////////
procedure TForm1.FormCreate(Sender: TObject);
begin
currno:=-1;
end;//////////////
procedure TForm1.DBGrid1DblClick(Sender: TObject);
begin
currno:=adodataset1.RecNo ;
dbgrid1.Refresh ;
end;
//////////
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if adodataset1.RecNo =currno then
begin
dbgrid1.Canvas.Brush.color:=clyellow;
dbgrid1.Canvas.pen.mode:=pmmask;
dbgrid1.DefaultDrawColumnCell
(Rect, DataCol, Column, State);
end;
end;
2. 纵向斑马线,同时以红色突出显示当前单元格效果:以突出显示当前选中的字段。
file://将上述代码修改为: Case DataCol Mod 2 = 0 of True: DbGrid1.Canvas.Brush.Color:= clBlue; file://偶数列用蓝色 False: DbGrid1.Canvas.Brush.Color:= clAqua; file://奇数列用浅绿色 End; If ((State = [gdSelected]) or (State=[gdSelected,gdFocused])) then If Not DbGrid1.SelectedRows.CurrentRowSelected then DbGrid1.Canvas.Brush.Color:=clRed; file://当前选中单元格显示红色 DbGrid1.Canvas.Pen.Mode:=pmMask; DbGrid1.DefaultDrawColumnCell (Rect, DataCol, Column, State);上述两种方法突出了列的显示效果。 3.在数据网格中以红色突出显示当前选中的行。 设置DbGrid控件的Options属性中的dgRowSelect属性为真,Color属性为clAqua(背景色), 在DbGrid的DrawColumnCell事件中编写如下代码: if ((State = [gdSelected]) or (State=[gdSelected,gdFocused])) then DbGrid1.Canvas.Brush.color:=clRed; file://当前行以红色显示,其它行使用背景的浅绿色 DbGrid1.Canvas.pen.mode:=pmmask; DbGrid1.DefaultDrawColumnCell (Rect, DataCol, Column, State); 4.行突显的斑马线效果:既突出当前行,又区分不同的列(字段)。 file://其它属性设置同3,将上述代码修改为: if ((State = [gdSelected]) or (State=[gdSelected,gdFocused])) then begin Case DataCol Mod 2 = 0 of True : DbGrid1.Canvas.Brush.color:=clRed; file://当前选中行的偶数列显示红色 False: DbGrid1.Canvas.Brush.color:=clblue; file://当前选中行的奇数列显示蓝色 end; DbGrid1.Canvas.pen.mode:=pmmask; DbGrid1.DefaultDrawColumnCell (Rect, DataCol, Column, State); end; 5.横向斑马线, 同时以红色突显当前行效果。
file://其它属性设置同3,将上述代码修改为: Case Table1.RecNo mod 2 = 0 of file://根据数据集的记录号进行判断 True : DbGrid1.Canvas.Brush.color:=clAqua; file://偶数行用浅绿色显示 False: DbGrid1.Canvas.Brush.color:=clblue; file://奇数行用蓝色表示 end; if ((State = [gdSelected]) or (State=[gdSelected,gdFocused])) then file://选中行用红色显示 DbGrid1.Canvas.Brush.color:=clRed; DbGrid1.Canvas.pen.mode:=pmMask; DbGrid1.DefaultDrawColumnCell (Rect, DataCol, Column, State); 6.双向斑马线效果:即行间用不同色区分,同时,选中行以纵向斑马线效果区分不同的列。 file://其它属性设置同3,将上述代码修改为: Case Table1.RecNo mod 2 = 0 of file://根据数据集的记录号进行判断 True : DbGrid1.Canvas.Brush.color:=clAqua; file://偶数行用浅绿色显示 False: DbGrid1.Canvas.Brush.color:= clblue; file://奇数行用蓝色表示 end; If ((State = [gdSelected]) or (State=[gdSelected,gdFocused])) then Case DataCol mod 2 = 0 of True : DbGrid1.Canvas.Brush.color:=clRed; file://当前选中行的偶数列用红色 False: DbGrid1.Canvas.Brush.color:= clGreen; file://当前选中行的奇数列用绿色表示 end; DbGrid1.Canvas.pen.mode:=pmMask; DbGrid1.DefaultDrawColumnCell (Rect, DataCol, Column, State);
所做的修改,也就是说我要求能够保留原先所做的修改,这样做可以吗?
该怎么来设计代码呢?谢谢!
如何保留原先改变所得的效果,不会被后面的改变刷新?