delphi 怎样使dbgrideh 中符合某个条件的记录不能修改

是在DBGRIDeh 里面符合某个一定条件的某个行不能修改!比如 if Dateset.fieldByName('完工标记'):=1 then 符合这样的条件的记录不能修改。

你可以在dbgrideh的ONCellClick事件里写符合某个条件的记录不能修改的代码,如果符合条件,dbgrideh1.ReadOnly:=true,试一试。
procedure Tform1.DBGridEh1CellClick(Column: TColumnEh);
begin
if Dateset.fieldByName('完工标记')=1 then
dbgrideh1.ReadOnly:=true
else
dbgrideh1.ReadOnly:=false;
end;
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2018-03-30
可以写入ADO.beforeedit事件中,代码如下:
if ado.fieldbyname('fieldname').asstring = '' then
begin
showmessage('某某字段为空,不能修改!'); //如符合条件,给出提示
abort; //退出执行
end本回答被网友采纳
第2个回答  2010-11-05
条件是动态的吗?

如果你是想不能修改某些记录,你可以在建表的时候多加个字段,boolean属性,为true是可以修改,为false是不能修改,自己在程序里控制
第3个回答  2010-11-08
dbgrideh只不过是数据的表现形式。
如我要某个字段等于1时可编辑,其余则不可编辑
则可以
if DataSet.FieldByName('zd').asString = '1' then
dbgrideh.readonly := false
else
dbgrideh.readOnly:= True;

可以把这段代码写在数据集的afterscroll事件里。

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;...

delphi dbgrideh中修改数据时遇到 无法为更新定位行,一些值可能已在最后...
你试试对ClientDateset进行设置,里面有两个属性: NeedUpdateFields和whereFields 在里面添加可以进行修改的字段和条件

delphi StringGrid一行一行的增加表格,如何实现垂直滚动条一直跟着新增...
为什么一定要用StringGrid,放着DBGRID不用,还有DBGRIDEH显示数据更优秀。可能是想用delphi StringGrid作数据录入界面,我劝你一句,这是一种最愚蠢的搞法,首先是不能进行快速录入数据,其次是这样做,满版的数据会让用户头昏眼花。你在表格中输入数据,最终的目的还是想把这些数据保存下来,既然保存,就...

delphi中的dbgrid中若选中一行,怎么使修改数据后,还是显示选中这一行...
用DBGridEH吧,它的edit属性中有一条可以很容易的选中一行中的字段并双击修改,原生的dbgrid没有单个字段双击后修改的功能。谢采纳我的答案,谢谢

delphi 如何删除dbgrideh中选中的行
那要看dbgrdi中数据来自什么控件:如果是 table: table控件名.delete;如果是 query系列的控件:让query控件执行如下语句:delete from 表名 where 条件

Delphi DbGridEh怎么设置选中行
设置选中行,就是一边遍历选中行再进行设置 for i:=0 to dbgridEH.selectedRows.count-1 do begin dbgrideh.selectedrows.dataset.gotobookmark(pointer(dbgrideh1.selectrows.items[i]));\/\/这是个定位你选中的某一行,通过for循环遍历,遍历时对每条记录进行执行(就是下面你要设置的代码)你要设置...

delphi DBGridEh 问题
,如果你这里要当qymst.FieldByName('spunit').AsString = 'm'时才改变字体的颜色为红色,那么你完成可以设置所有字体的颜色为clnone,然后将事件改为:if qymst.FieldByName('spunit').AsString = 'm' then begin dbgrideh1.FieldColumns['pcs'].Font.Color := clred;end;这样就好了。

Delphi中点击DBGrid中某一单元格时,后面出现个按钮可以点进去,出现一...
用delphi自带的DBGrid就能很好的实现这个功能:在DBGrid 中添加你要再Grid中显示的所有字段(columns属性),然后选择你要出现按钮的那个字段,将属性ButtonStyles 设置为cbsEllipsis,然后再 DBGrid 的 OnEditButtonClick时间中编写探出新窗口的代码即可 ...

怎样在DELPHI DBGRIDEH 后面增加一行,用来保存总计之类的数据?
将DBGRIDEH的FooterRowCount设置为1,然后双击DBGRIDEH控件,增加columns,选中想要增加一行的columns,展开其Footer属性,找到valuetype,设置为fvtSum,就可以了

delphi中限制长度问题?
然后在字段格式中将“科学记数法”改为“常规数字”。这样操作后,数据库会更灵活地处理和展示数值,避免因科学记数法导致的显示长度受限问题。希望上述方法能有效解决你在Delphi编程中遇到的限制长度问题。通过正确的数据库配置和字段类型选择,可以确保数据的有效存储和高效处理,提升编程效率。

相似回答