DBGridEh选择时高亮度显示问题 Delphi
-
这是我自画dbgrideh的函数,其中有些地方是根据我的实际需要设的,你可以改改看
procedure TfrmCopyBook_MeterCopy.SetGridColor(var AdoTable: TDataSet; var DbGrid1: TDBGrideh; const Rect: TRect; DataCol: Integer;
Column: TColumneh; State: TGridDrawState);
begin
if (AdoTable.RecNo <> AdoTable.RecordCount + 1) and
(((DataCol >= 7) and (DataCol <= 12)) or (DataCol = 20) or (DataCol = 22)) then
DbGrid1.Canvas.Brush.color := $00EBE9A7; // file://偶数行用浅绿色显示
if ((State = [gdSelected]) or (State = [gdSelected, gdFocused])) then
case DataCol of
7, 8, 9, 10, 11, 12,20,22:
begin
DbGrid1.Canvas.Brush.color := $00FFFF; //file://当前选中行用红色
dbgrid1.Canvas.Font.Color := clred;
end;
{False:
begin
DbGrid1.Canvas.Brush.color := $00FFFF;
dbgrid1.Canvas.Font.Color := clred;
end;}
end;
DbGrid1.Canvas.pen.mode := pmCopy;
DbGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;#3得分 30
-
忘了说了,该过程在DBGridEh的DrawColumnCell事件中调用就可以了
procedure TDbgridForm.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin with DBGrid1 do begin if ((State = [gdSelected]) or (State=[gdSelected,gdFocused])) then begin Canvas.Font.Color :=ClYellow; Canvas.Brush.Color :=ClNavy; end else begin if DataSource1.DataSet.RecNo mod 2<>0 then Canvas.brush.Color :=ClWhite else Canvas.brush.Color :=clgreen; end; DefaultDrawColumnCell(Rect, DataCol, Column, State); end; end;
引用:https://bbs.csdn.net/topics/30305871
好的代码像粥一样,都是用时间熬出来的
分类:
Delphi
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 全程使用 AI 从 0 到 1 写了个小工具
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)
2019-12-01 Oracle的ole db连接字符串
2019-12-01 oracle instantclient + plsql 远程连接数据库
2019-12-01 Oracle Instant Client(即时客户端) 安装与配置
2019-12-01 delphi连接oracle数据库
2018-12-01 开发一个delphi写的桌面图标管理代码