当双击一条记录时改变该条记录的颜色,并且该条记录的颜色以后一直保持不变,
好像论坛上一般的DrawColumnCell事件画没有用,改变以后又会恢复回去的,分不够再加
好像论坛上一般的DrawColumnCell事件画没有用,改变以后又会恢复回去的,分不够再加
解决方案 »
- 如何实现 delphi sock5 代理设置与更换
- 如何编程实现MP3文件转换成WAV格式?
- 一般进入一些商用软件后主界面的背景动态图形菜单是怎么做的?
- 20分的问题 delphi中数组的下标是从0还是开始的
- 关于DLL封装FORM的问题,急,急,急
- delphi远程访问sqlserver的问题
- Delphi6的QuickRep的Bands中就没有GroupFooterBand,还是我没装好
- 大侠们,救救我。快交货了,就差这一步了。Ado返回值???
- 如何制作数据字典编辑器?
- :sybase中生成的SQL语句在MS SQL中执行,须不须要转化??????
- 运行时出错,求教高手
- Delphi7中的MD5与报表组件都跑哪去了?
再多点啊,呵呵
其实就在DrawColumnCell事件里就可以达到你的目的
procedure SetDBGridBrushColor(var Ser:TObject;const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState;iiEdit:integer);
begin
case iiEdit of
1:begin
if (TDBGrid(Ser).DataSource.DataSet.RecNo mod 2=0) then
begin
TDBGrid(Ser).Canvas.Font.Color :=clBlack;
TDBGrid(Ser).Canvas.Brush.color:=clInfoBk;
end;
end;
2:begin
if (DataCol mod 2=0) then
begin
TDBGrid(Ser).Canvas.Font.Color :=clBlack;
TDBGrid(Ser).Canvas.Brush.color:=clInfoBk;
end;
end;
end;
if ((State = [gdSelected]) or (State = [gdFocused,gdSelected])) then
if not TDBGrid(Ser).SelectedRows.CurrentRowSelected then
begin
TDBGrid(Ser).Canvas.Font.Color :=clWindow;
TDBGrid(Ser).Canvas.Brush.Color:=clHighlight; //当前选中单元格显示红色
end; TDBGrid(Ser).Canvas.Pen.Mode:=pmMask;
TDBGrid(Ser).DefaultDrawColumnCell(rect,datacol,column,state);
end;