You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Delphi 11.1 FMX TStringGrid的TCheckColumn单元格复选框不显示求助

解决FMX TStringGrid TCheckColumn初始不显示复选框的问题
  • 问题根源:你用BoolToStr(False)把布尔值转成字符串存入Cells,但TCheckColumn要求单元格存储布尔类型值才能初始渲染复选框。字符串类型无法被TCheckColumn正确识别,双击时触发了控件内部的类型转换/重绘逻辑,才让复选框显示出来。

  • 修正方案:

    1. 设置单元格值时,直接赋值布尔类型,不要转字符串:
      // 直接用SetValue方法赋值布尔值(类型安全)
      StringGrid1.SetValue(CHECKBOX_COLUMN, iIndex, False);
      
      更规范的做法是通过OnGetValue事件绑定数据,避免直接操作Cells:
      procedure TForm1.StringGrid1GetValue(Sender: TObject; const Col, Row: Integer; var Value: TValue);
      begin
        if Col = CHECKBOX_COLUMN then
        begin
          // 根据Row从你的数据源(比如数组、对象)获取对应布尔值
          Value := False;
        end;
      end;
      
    2. 读取值时,直接从TValue转换,无需处理字符串:
      boMyBoolean := StringGrid1.GetValue(CHECKBOX_COLUMN, 0).AsBoolean;
      
  • 补充提示:如果一定要直接操作Cells,确保存入的是TValue可识别的标准布尔字符串(如'True'/'False',注意大小写),但优先推荐GetValue/SetValue方法,避免类型转换问题。

内容的提问来源于stack exchange,提问作者user741461

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 05:30:17