Delphi DBGridEh刷新的问题
我做的程序中需DBGridEh的主附表功能(RowDetailPanel)。如右:DBGridEh1>DataSource1>MemTableEh1>DataSetDri...
我做的程序中需DBGridEh的主附表功能(RowDetailPanel)。
如右:DBGridEh1>DataSource1>MemTableEh1>DataSetDriverEh1>ADOQuery1
我刷新用的是:
MemTableEh1.Active:=False;
MemTableEh1.Active:=True;
因为关闭再打开,造成屏幕闪动,而且附表也会关闭。我再网上看到用一下的代码可以不闪动:
MemTableEh1.DisableControls;
try
//...............
finally
MemTableEh1.EnableControls;
所以我就写成了如下:
MemTableEh1.DisableControls;
try
MemTableEh1.Active:=False;
MemTableEh1.Active:=True;
finally
MemTableEh1.EnableControls;
但是我只有第一行打开的附表不会关闭,其他行都会关闭。我刚用DELPHI不懂,请各位老师指教指教。 展开
如右:DBGridEh1>DataSource1>MemTableEh1>DataSetDriverEh1>ADOQuery1
我刷新用的是:
MemTableEh1.Active:=False;
MemTableEh1.Active:=True;
因为关闭再打开,造成屏幕闪动,而且附表也会关闭。我再网上看到用一下的代码可以不闪动:
MemTableEh1.DisableControls;
try
//...............
finally
MemTableEh1.EnableControls;
所以我就写成了如下:
MemTableEh1.DisableControls;
try
MemTableEh1.Active:=False;
MemTableEh1.Active:=True;
finally
MemTableEh1.EnableControls;
但是我只有第一行打开的附表不会关闭,其他行都会关闭。我刚用DELPHI不懂,请各位老师指教指教。 展开
1个回答
展开全部
你这样又是断开,又是连接,有什么意义呢?DBGridEh1中显示的数据是随着MemTableEh1执行的SQL语句而发生变化的,不需要单独执行刷新语句。MemTableEh1.Active:=False;相当于关闭,MemTableEh1.Active:=True;相当于打开,你的代码没有执行任何SQL语句,关闭后又打开有什么意义呢?
追问
我的SQL语句在ADOQuery1.SQL里了,我上面的链接法只能开关数据集刷新数据。
我的问题的关键是刷新不闪动,DisableControls;EnableControls;的用法是怎么样。你的意思是不是我的查询语句也要包括在下面的代码里面。
try
//...............
finally
追答
我很少甚至从来不用ADOQuery组件,只用ADOdataset组件,用顺手了,与ADOdataset连接着的的DBGrideh组件,ADOdataset保存数据,DBGrideh组件就会自动更新显示。你不用断开和使能方法DisableControls;EnableControls如何,因为与数据集组件连接着的表格控件会自动显示数据更新,无论你是删除,还是新增,还是修改,只要数据数据集组件有保存或删除的操作,表格都将会自动刷新.除非SQL语句中有新增的计算字段.DELPHI中有很多东西并不是最佳的东西,出现异常,浪费资源是很正常的,我的应对方法是:若此路不通,则另外僻溪径,条条大道通罗马,为啥要在一个无法预测结果的问题上浪费时间.
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询