如何为DBGrid特殊单元格着色?

2024-04-09

我有一列只有“是”和“否”值。 我想要如果列值为“是”,则只有单元格背景颜色为红色 否则“否”则背景颜色为黄色 但这段代码为整行着色:

if ADOTable1.FieldByName('Clubs').AsString = 'yes' then
begin
  DBGrid1.Canvas.Brush.Color := clRed;
  DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;

EDIT

感谢您的回复。 我真正的代码看起来像这样。 “netice”列只有“L、D、W”。

if Column.FieldName = 'netice' then
 begin
 if ADOTable1.FieldByName('netice').AsString = 'L' then
 DBGrid1.Canvas.Brush.Color := clgreen ;
 if ADOTable1.FieldByName('netice').AsString = 'D' then
 DBGrid1.Canvas.Brush.Color := clRed ;
 if ADOTable1.FieldByName('netice').AsString = 'W' then
 DBGrid1.Canvas.Brush.Color := clYellow ;
 end;
 DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
 end;

但我需要 L-绿色、D-红色、W-黄色 我使用的是德尔福2010。


您需要添加一个条件来限制画笔颜色仅更改为您选择的列。在代码中可能是:

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
  Field: TField;
begin
  // store the currently rendered cell's column assigned field reference
  // (if any) to the local variable (there's quite expensive getter)
  Field := Column.Field;
  // if the rendered cell's column has assigned a field and this field's
  // name is 'Clubs' (compared without case sensitivity), then, and only
  // then change the brush color...
  if Assigned(Field) and SameText(Field.FieldName, 'Clubs') then
  begin
    if Field.AsString = 'yes' then
      DBGrid1.Canvas.Brush.Color := clRed
    else
      DBGrid1.Canvas.Brush.Color := clYellow;
  end;
  DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;

我之前更喜欢这个Column.FieldName因为Column.FieldName尚不保证链接数据集中存在这样的字段。因此,以这种方式直接访问现场更加安全。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何为DBGrid特殊单元格着色? 的相关文章

  • 线程关闭期间 Win64 Delphi RTL 中的内存泄漏?

    很长一段时间以来 我注意到我的服务器应用程序的 Win64 版本存在内存泄漏问题 虽然 Win32 版本工作正常 内存占用相对稳定 但 64 位版本使用的内存却定期增加 可能 20Mb 天 没有任何明显的原因 不用说 FastMM4 没有报
  • DELPHI win32 的 ORM [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有谁知道 Delphi Win32 的 ORM 或类似的东西吗 Marco Cantu 是 Insta
  • 如何修复 Delphi Prism ASP.NET 错误:“解析器错误消息:‘Oxygene’不是受支持的语言”

    我在 Delphi Prism 中编写了一个 ASP NET Web 应用程序 不是网站 在我的开发机器上一切正常 但是当我将其安装在测试服务器上时 出现以下错误 Server Error in MyApp Application Pars
  • iOS Objective-C 对象:何时使用release,何时不使用它

    我在 iOS 下 正在使用 delphi Tokyo 进行开发 这是我的代码 aUIImage TUIImage Wrap TUIImage alloc initWithCGImage aCGImageRef try aData TNSDa
  • 条件表达式在包内是否被破坏?

    考虑以下片段 requires designide rtl vcl IF RTLVersion lt 19 0 E2026 Constant expression expected IF CompilerVersion 22 0 same
  • 如何使用 jQuery 和“长轮询”通过 Indy HTTP 服务器动态更新 HTML 页面?

    我读过这篇文章使用 JavaScript 和 jQuery 的简单长轮询示例 http techoctave com c7 posts 60 simple long polling example with javascript and j
  • Winform 没有.NET 框架?

    我必须创建一些表单并将其作为直接 EXE 提供 而不是安装程序 它安装 NET 框架 最终用户对此不满意 他们想要可以直接打开和工作的东西 我知道它可以作为网络完成 但我正在寻找 winforms 吗 请建议哪种工具 技术可以处理这个问题
  • 使用 StretchDIBits 使用 Delphi 6 处理条形码图像 - 输出中缺少条形线

    我的应用程序是在 Delphi 6 中开发的 由于后台处理和大量数据 它消耗大约 60MB 120MB 物理内存 这是一个资源密集型应用程序 该应用程序的功能之一是在进行某些处理后创建条形码图像 如果用户继续生成条形码 那么至少十分之一的条
  • 我应该害怕使用 UDP 进行客户端/服务器广播通话吗?

    我在过去的两天里阅读了每一篇StackOverflow问题和答案 以及googling当然 关于印地TCP and UDP协议 以便决定在我的用户应用程序和 Windows 服务之间的通信方法中应该使用哪一种 从我目前所看到的来看 UDP是
  • Delphi中的抽象类

    我正在使用一个具有许多抽象类的组件套件 现在我想应用多态性 但在创建对象时收到错误抽象类 即使我不需要 我是否应该重写所有虚拟方法 有什么解决方法或解决方案吗 为了创建类的实例 您需要重写所有声明为虚拟抽象的方法 即使您不使用它们 如果您确
  • 如何追踪“地址 00000000”的访问违规

    我知道如何创建 map 文件来在错误消息包含实际地址时跟踪访问冲突错误 但是如果错误消息说怎么办 Access violation at address 00000000 Read of address 00000000 我从哪里开始寻找这
  • 使用 TStringList 的分隔符解析字符串,似乎也解析空格(Delphi)

    我有一个简单的字符串 由某个字符分隔 比如说逗号 我应该能够创建一个 TStringList 并将其分隔符设置为逗号 然后将 DelimitedText 设置为我想要解析的文本 并且应该自动解析它 问题是 当我查看输出时 它还包含空格作为分
  • Delphi 5 的哈希表实现 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 您知道 Delphi 5 的良好且免费的哈希表实现吗 我需要在哈希表中组织大量数据 并且我有点担心在网
  • 使用项目中的波形文件

    我目前只能通过将波形文件放在已编译的 exe 旁边来播放背景声音 但我实际上想要一个包含波形文件的静态可执行文件 这在Delphi XE2中可能吗 这是我的代码 SndPlaySound Raw wav SND ASYNC or SND L
  • Delphi:写入后代类中私有祖先的字段

    我需要修复第三方组件 该组件的类具有私有变量 该变量由其后代主动使用 TThirdPartyComponentBase class private FSomeVar Integer public end TThirdPartyCompone
  • 是否可以声明长度受限且不从 0/1 开始的字符串类型?

    在 Delphi 中 可以声明整数值的子范围 例如 type myInt 2 150 它将 myInt 类型的值限制为 2 到 150 之间的值 但是如果我想限制字符串的长度怎么办 如果我写 type myString string 150
  • Delphi 2010 - 从 XML 文档解码 Base64 编码图像

    我正在尝试从应用程序中的 XML 文档解码 base64 编码的 EMF 图像并将其呈现在屏幕上 但是 它似乎从未出现 如果我将 XML 文档中的数据复制 粘贴到 Notepad 中并使用Base64 Decode选项并将文件另存为 emf
  • 如何在Delphi中显示Vista风格的气球提示?

    在输入验证时 我使用气球提示而不是消息框 我的问题是 在 Vista 上 它们具有带圆角的旧 XP 样式 而不是较新的矩形外观 我尝试使用 CreateWindowEx 创建它们并且tooltips class32或使用 SendMessa
  • 如何在iOS的Delphi程序中使用IPv6协议

    我尝试在我的移动程序中使用 IPv6 协议 我的服务器位于 NAT 后面的 LAN 内 在服务器上我使用IP端口3000 我已经组织了从路由器端口 45500 到服务器端口 3000 的虚拟服务器 端口转发 在服务器上 我运行 ipconf
  • 在 Delphi 或 C++ Builder 中使用 Chromium Edge WebView2 [重复]

    这个问题在这里已经有答案了 既然 Microsoft Chromium Edge 已经最终确定 是否可以在 Delphi 或 C Builder 中使用它 据我了解 它是基于WebView2成分 是否有一个组件 例如TWebView2或者E

随机推荐

  • C# 编组回调

    我正在尝试对结构中的 c 回调进行编组 我很确定我的一切都是正确的 但是当使用我的 C 示例时 我没有收到事件 而当使用 C 时 我确实收到了事件 这是 C class Program DllImport Some dll CharSet
  • django S3 - 修剪图像字段文件名但不修剪 url 路径

    这是我的问题的后续 ImageField FileField Django 表单当前无法修剪文件名的路径 https stackoverflow com questions 47887158 imagefield filefield dja
  • 将焦点设置回其父级?

    来自帖子WPF 如何以编程方式从文本框中删除焦点 https stackoverflow com questions 2914495 wpf how to programmatically remove focus from a textb
  • Number 类型的 DynamoDB 属性中可以存储多少位整数数据?

    DynamoDB 的Number https docs aws amazon com amazondynamodb latest developerguide HowItWorks NamingRulesDataTypes html How
  • 如何向 heroku 添加 API 密钥和其他安全内容?

    我在某处读过 但似乎无法找到将密钥添加到 Heroku 中的位置 而不需要将其放入源代码 git 存储库中 我想当我推送到 github 时这有助于保证它的安全 我该怎么做 这样做有意义吗 http docs heroku com conf
  • 如何在CKEditor中动态切换文本方向

    在我当前的项目中 用户可以用英语和希伯来语输入文本 根据当前文本自动定义方向会很棒 例如 如果文本包含希伯来语符号 则方向应为 RTL 但如果文本不包含希伯来语 则方向为 LTR 文本可以随时更改 我认为最好的解决方案是动态切换方向 就像在
  • 有没有办法强制 NHTMLUNIT 忽略页面 JavaScript 错误并继续脚本执行?

    我是 ASP NET 和 C 项目的一部分 我们正在努力使我们的 asp net 门户对 Google 搜索引擎友好 https developers google com webmasters ajax crawling https de
  • 将事件日志组织到文件夹中

    我想要创建多个服务 并且希望它们将每个服务记录在我指定的同一目录 文件夹下的日志条目中 这样当我打开 Windows 事件查看器时 我可以看到它们全部放置在一个文件夹中 例如 service1 将登录到 service1 log servi
  • jQuery 禁用/启用提交按钮

    我有这个 HTML
  • 在cmake中设置boost的最低版本

    我想定义系统上可用的最低增强版本 我尝试了以下方法 不幸的是 这不起作用 因为它尝试在系统上仅提供 boost 1 40 0 的情况下进行编译 SET Boost USE STATIC LIBS OFF SET Boost USE MULT
  • WPF/控制台混合应用程序

    我编写了一个可以在命令行上运行或使用 WPF UI 运行的应用程序 STAThread static void Main string args Does magic parse args and sets IsCommandLine to
  • C++ 多重定义错误

    我的 Headers h 文件包含基本的 C 标头 include
  • 在 Sequelize 迁移中创建关联

    节点js 续集4 41 尝试通过另一个表制作两个多对多关系的模型 跑步与续集 cli 例如 sequelize model generate name Camera attributes name string sn string 这里是模
  • 复杂圆图

    我花了很多时间尝试在 SVG D3 js 中复制所附的图表 我最接近的是使用附加的代码 我已经探索过使用树函数 但只能创建一组圆圈 所附代码的问题是 通过手动输入每个圆圈必须位于的像素坐标 很难使其看起来平滑且智能 作为信息 数据集只会为这
  • 在哪里记录 C 或 C++ 中的函数? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我有一个包含多个文件的 C 程序 所以我有 例如 stuff c它实现了一些功能 并且stuff h与函数原型 我应该如何在注释中记录功能 我应
  • * 或 & 的位置重要吗? [复制]

    这个问题在这里已经有答案了 可能的重复 在C中 为什么星号在变量名之前 而不是在类型之后 https stackoverflow com questions 398395 in c why is the asterisk before th
  • 如何创建不重复的随机数?

    我正在尝试为老年之家创建一款宾果游戏 我能够使用用于扫描数组的随机数生成器来制作一个 但问题是需要很长时间 2 分钟 来搜索数组并确保没有重复的双精度数 我做了一些研究 发现 c 中称为伪随机的东西在创建时不会重复数字 但代码看起来非常复杂
  • 枚举 Node.js net.Server 连接

    是否可以循环遍历与某个连接建立的连接相对应的所有套接字对象 网络服务器 http nodejs org api net html net class net serverNode js 中的实例 最终 我需要关闭所有连接 似乎执行此操作的唯
  • 如何使大循环的联合范围更快

    我有一个子程序 在循环中进行大约 5000 次迭代后 它变得非常慢 否则很快 Windows 8 1 专业版 64 位 Excel 2013 15 0 4701 1001 MSO 15 0 4701 1000 64 位 Sub UnionS
  • 如何为DBGrid特殊单元格着色?

    我有一列只有 是 和 否 值 我想要如果列值为 是 则只有单元格背景颜色为红色 否则 否 则背景颜色为黄色 但这段代码为整行着色 if ADOTable1 FieldByName Clubs AsString yes then begin