关于dbgrid中文字变色。。。?

delphibook 2001-02-11 09:12:00
我用query+dbgrid查出一些纪录,启动一个事务让用户在表中修改,想让修改过的纪录变成红色,commit或rollback后再变为原来的黑色,请问如何实现??
...全文
146 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
liuchcn 2001-02-14
  • 打赏
  • 举报
回复
还有一点要提醒的是:

我不知道你具体的开始事务或是提交事务的方式,但一定要注意不要用这样的方法:
让用户按一个按钮开始编辑,并开始事务,用户可以进行编辑,编辑过程中一直有事务;然后按另一个按钮完成编辑,并提交事务。
这样的话如果用户编辑的时间很长,在多用户情况下会锁住记录或表。
liuchcn 2001-02-14
  • 打赏
  • 举报
回复
是没有onpost:),搞错了。

应该是afterpost或beforepost事件。

fdchange不能修改是什么意思?因为我没有具体试过,但我想这样的做法应该可以。
或者试一下在字段的onchange事件中修改fdchange的值。
delphibook 2001-02-13
  • 打赏
  • 举报
回复
fdchange不能修改!
delphibook 2001-02-12
  • 打赏
  • 举报
回复
to liuchcn:
"在dbgrid的数据源中的onpost事件中"在query中只有afterpost,beforepost事件,均不能
修改字段值,onpost??
SAsura 2001-02-11
  • 打赏
  • 举报
回复
那个控件不太好用,换成ListView比较好,不过这样修改数据就要自己写程序了。
liuchcn 2001-02-11
  • 打赏
  • 举报
回复
1。查出记录时用sql多生成一个字段,比如
select a.fd1,a.fd2,...,0 as fdchange from tabxxx a where ....
2。在dbgrid中不要显示fdchange字段
3。在dbgrid的数据源中的onpost事件中将fdchange设置为1,即只要有修改,则将当前记录的fdchange设置为1。
4。在dbgrid的ondrawcolumncell事件中判断如果fdchange字段的值为1,则设置该行的颜色为红色:
{dbgrid1:tdbgrid;query1:tquery;}
if query1.fieldbyname('fdchange').asinteger=1 then
begin
dbgrid1.Canvas.Font.color:=clred;
dbgrid1.DefaultDrawColumnCell(rect,datacol,column,state);
end;
5。在提交事务后设置fdchange为0;

5,930

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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