Delphi 11.1 FMX TStringGrid的TCheckColumn单元格复选框不显示求助
解决FMX TStringGrid TCheckColumn初始不显示复选框的问题
问题根源:你用
BoolToStr(False)把布尔值转成字符串存入Cells,但TCheckColumn要求单元格存储布尔类型值才能初始渲染复选框。字符串类型无法被TCheckColumn正确识别,双击时触发了控件内部的类型转换/重绘逻辑,才让复选框显示出来。修正方案:
- 设置单元格值时,直接赋值布尔类型,不要转字符串:
更规范的做法是通过// 直接用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; - 读取值时,直接从TValue转换,无需处理字符串:
boMyBoolean := StringGrid1.GetValue(CHECKBOX_COLUMN, 0).AsBoolean;
- 设置单元格值时,直接赋值布尔类型,不要转字符串:
补充提示:如果一定要直接操作Cells,确保存入的是TValue可识别的标准布尔字符串(如'True'/'False',注意大小写),但优先推荐
GetValue/SetValue方法,避免类型转换问题。
内容的提问来源于stack exchange,提问作者user741461
相关产品推荐
相关产品推荐

