delphi:dbgrideh中设置了checkbox列,不能勾选

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了delphi:dbgrideh中设置了checkbox列,不能勾选相关的知识,希望对你有一定的参考价值。

sql:select 0 as xz,a.* from a where ......
xz就是对应的checkbox列,readonly:=false
已设置keylist,
为啥显示了checkbox,却不能勾选,
是不是我哪里设置不对啊?
我在跟踪程序运行的时候发现,执行SQL之前,xz的readonly=false,执行sql之后变成了true,所以不能选择,
不知它为啥要变?

后来我在原来的SQL命令下加了个
union
select ....from .....(注:这是一条空记录,以不影响原查询结果)

问题就解决了,但这样略显麻烦,不知诸位有没有好的办法?

select 0 as xz 这样出来的xz字段是表达式,表达式是不能修改的 参考技术A 应该是用CDS的控件吧 QUERY好像是不行

delphi DBGridEh 问题

DBGridEh的OnGetCellParams事件中
if qymst.FieldByName('spunit').AsString = 'm' then
begin
dbgrideh1.FieldColumns['pcs'].Font.Color := clred;
end
else
dbgrideh1.FieldColumns['pcs'].Font.Color := clnone;为什么当spunit <> m 的时候怎个网格都在闪

OnGetCellParams事件是会一直运行的(相当于刷新),如果你这里要当qymst.FieldByName(\'spunit\').AsString = \'m\'时才改变字体的颜色为红色,那么你完成可以设置所有字体的颜色为clnone,然后将事件改为:
if qymst.FieldByName(\'spunit\').AsString = \'m\' then
begin
dbgrideh1.FieldColumns[\'pcs\'].Font.Color := clred;
end;
这样就好了。
参考技术A 因为一直在重复赋值。当spunit <> m 的时候,字段pcs的字体颜色为空。但是你代码不该放在getcellparams事件中,建议放在DataSource的 dataChange事件中。

以上是关于delphi:dbgrideh中设置了checkbox列,不能勾选的主要内容,如果未能解决你的问题,请参考以下文章

delphi DBGridEH控件的checkbox如何判断是不是选中,求指导 !

delphi dbgrideh部分导出excel出错

delphi dbgrideh 点击一行数据行是,在第一行数据行上面出现一行显示我点击的数据

delphi dbgrideh导入excel 中

Delphi DbGridEh实现表格没有内容的渐变效果

delphi DBGridEh 删除指定列