在双击事件中加入代码:
dbgrid1.canvas.font.color:=clRed;
dbgrid1.canvas.font.color:=clRed;
解决方案 »
- 各位高手,服务service有没有办法晚点启动?
- 如何在delphi中在客戶端對多表處理做事務處理
- 有没有南京通院的?大家联系一下,好共同进步 :)
- ocx文件,如何在 不注册的情况下动态调用(不用regsvr32 *.ocx)
- 考高程?考研?
- 为什么出现JPEG Error #41错误?
- 如何在DBGrideh行選中後控制其修改動作
- 在线等待。。如何将一个变量转给memo1???
- 工具栏问题!!
- 请问在SQL Server 7.0中有了一个数据库的.MDF和.LDF文件怎么新建该数据库?
- 关于在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);
所做的修改,也就是说我要求能够保留原先所做的修改,这样做可以吗?
该怎么来设计代码呢?谢谢!
如何保留原先改变所得的效果,不会被后面的改变刷新?