请教一个关于DBGRID的问题,SOS!

tinylion971 2003-05-18 09:39:22
我在DBGIRD中打开了一个空表,例如有两个字段 “学号”,“姓名”

我想实现 输入一个记录后此记录就不能更改了,但可以添加另一条记录。

如:我输入第一条记录后,点击一个自建的“添加”botton,该记录就写入了,
但此后就不允许更改了!!并且记录光标自动下移一行,出现一个空白的行用于第二个记录的输入,

怎么实现那
...全文
26 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
cm1024 2003-05-20
  • 打赏
  • 举报
回复
可以这样试一下:

在DBGRID对应的数据源的AFTERSCROLL事件中写:

if DataSet.Stats in [dsInsert] then //当前在插入状态
begin
DataSet.FieldByName('字段名称').ReadOnly := false;//所有要控制的字段全设置一次
end
else
begin
DataSet.FieldByName('字段名称').ReadOnly := True;//所有要控制的字段全设置一次
end
tinylion971 2003-05-20
  • 打赏
  • 举报
回复
if adoTable1bs.AsInteger >0 then

上句不太懂呀
什么意思
tinylion971 2003-05-20
  • 打赏
  • 举报
回复
ok,给分
谢过!
chengcheng2024 2003-05-20
  • 打赏
  • 举报
回复
if adoTable1bs.AsInteger >0 then
此句的意思是判断表示字段的值是否为1,如为1表示此记录已经提交不可以修改!
adotable1bs相当于adotable1.fieldbyname(bs),明白了吗?
chengcheng2024 2003-05-19
  • 打赏
  • 举报
回复
试过了吗,应该没问题,我调试过!
888888888888 2003-05-18
  • 打赏
  • 举报
回复
关注
tinylion971 2003-05-18
  • 打赏
  • 举报
回复
to ljmanage(过客)
"不点击就不让他添加"

那是不是我点击就可以添加,那是不是 还是可以进行已输入记录的修改?我是想不修改以前的记录了,行吗?
李_军 2003-05-18
  • 打赏
  • 举报
回复
变通一下,点击一个自建的“添加”botton,然后Insert,修改DBGrid的ReadOnly属性,不点击就不让他添加
tinylion971 2003-05-18
  • 打赏
  • 举报
回复
我先试一下
搞定马上就给分,决不失言!
chengcheng2024 2003-05-18
  • 打赏
  • 举报
回复

更正一下:

procedure TForm1.DBGrid1CellClick(Column: TColumn);
begin
if adoTable1bs.AsInteger >0 then
begin

dbgrid1.ReadOnly :=true;
end
else dbgrid1.readonly:=false ;
end;
对不起!

chengcheng2024 2003-05-18
  • 打赏
  • 举报
回复
可以加一个标示字段:假设字段名为bs,在添加记录时给它一个初始值(0)(也可以在建表时给一个默认值0),在记录提交之后给它重新赋值(1),在dbgrid的oncellclick事件进行
控制:
procedure TForm1.DBGrid1CellClick(Column: TColumn);
begin
if adoTable1xh.AsInteger >0 then
begin

dbgrid1.ReadOnly :=true;
end
else dbgrid1.readonly:=false ;
end;
给分吧!谢谢!

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧