delphi中dbgrideh,如果某个批号的其中一个字段变为true,则把该列置为红色。请问,如何实现?

如题所述

我没安装DBGrideh这个控件, 我用的是D7自带的DBGrid控件。
首要要明确1个事情:设置DBGrid的行颜色, 是通过OnDrawcellcolumn这个事件来触发的, 楼下的只是写了一句代码, LZ根本搞不清楚这个代码要放在哪里运行, 你没有站在LZ的角度去看问题[可能你是高手, 觉得这个没什么必要说], 作为程序员是不是应该尽可能全面的考虑到用户的需求呢?扯远了不好意思~
说说OnDrawcellcolumn这个事件, 这个事件其实Delphi已经帮我们封装好了一些代码, 比如你选中一行的时候这一行会变色, 这个就是D7帮我们已经做好的事情, 相同的, 你要在这个基础上再做一些事情, 那么代码就写在这个事件里面。
TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
With DBGrid1 do begin
if Datasource.DataSet.Fieldbyname('SURE').AsBoolean then Canvas.Brush.Color:=clRed;
//这里还可以继续添加代码实现一些功能
end;
DBGrid1.DefaultDrawcolumncell(rect, datacol, column, state); //这句代码必不可少!!
//这句代码表示让DBGrid继续做他的事, 可以理解为我们只是拦截了这个事件, 附件了上边的代码,加完代码就让他继续做他的事情, 这里的4个参数, 是触发这个事件时自动传入的, 有点像回调函数, 也有点像继承, 也有点像处理消息的时候用到的wndProc, 先不要管他们是什么东西了。
end;

我也是自学Delphi的, 只是自己的一些理解可能不准确, 希望高手指正!!
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-07-25
if adoquery1.fieldbyname('批号').value=True then dbgrideh1.Columns[2].Color:=clRed;

delphi中 dbgird某行被选中,点击修改在另一个窗体得到该行的值,并...
DBGRID组件可能没有行选中事件,我很久没有用这个组件了,我只用DBGridEh,不过你的问题可以用列单击事件来解决,这也是最常用的编程方法。procedure Tfr_mai.xsqfsj; \/\/显示处方数据 begin ypysl:=0;if fr_sjmk.TB_yhlx_sjbj.RecordCount =0 then exit;edit24.Text:=fr_sjmk.TB_yhlx_sjbj.F...

delphi 怎样使dbgrideh 中符合某个条件的记录不能修改
你可以在dbgrideh的ONCellClick事件里写符合某个条件的记录不能修改的代码,如果符合条件,dbgrideh1.ReadOnly:=true,试一试。procedure Tform1.DBGridEh1CellClick(Column: TColumnEh);begin if Dateset.fieldByName('完工标记')=1 then dbgrideh1.ReadOnly:=true else dbgrideh1.ReadOnly:=false;end;...

delphi7中dbgrideh如何增加‘列’汇总?如图,动态行列转换后,需要对每行...
方法1 建议你写sql语句的时候 增加一个汇总列 用left join 增加一个统计列 方法2 增加一个空列 在DrawDataCell DrawColumnCell时 判断第几行 计算该行的数据 更新在此列里 方法3 显示数据以后再补上数据 和方法2类似,不过是先显示前面的数据 再对dataset循环累加一下 更新到统计汇总列...

delphi中dbgrideh的footer自动求和,但是数据变化后求和数值不变
其他使用正常,但是今天有一个表,使用footer的自动求和时,运行后,第一页的数值正确,自动求和数值正确。但是在更该数据后,dbgrideh中的数值发生变化,自动求和的数值却没变。怎么回事? footer下value type的其它函数也是这样,数据变化后还是第一次的数值... 展开 孤星冰矢 | 浏览1721 次 |举报 我有更好的答案推荐...

请问在Delphi中利用DBGridEh加一列复选框时不能选择的问题怎么解决...
看GRID列的readonly属性,或者dataset那一列的readonly属性

DBGrid相同数据合并成一个格[最好用Delphi回答]
该过程将TDBGridEh中的数据导出到Excel中。本过程能够将TDBGridEh的多层表头导出到Excel中,并且还能够将给定字段的相同的值合并一起,例如:参数: DBGrid:TDBGridEh为要导出数据的网格控件,Title为报表的标题,DrawGridLine控制是否绘制网格线,RangeFields为需要合并数据的字段列表。在“打印”按钮的OnClick事件中填写如下代码...

请问在Delphi中利用DBGridEh加一列复选框时不能选择的问题怎么解决?
增加一boolean列即可。如果该列不是用数据库的列那就要用内存表控件,就可以增加任意列了。

相似回答
大家正在搜