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不懂,请各位老师指教指教。
展开
 我来答
liu55721
2011-08-28 · TA获得超过922个赞
知道大有可为答主
回答量:1861
采纳率:100%
帮助的人:846万
展开全部
你这样又是断开,又是连接,有什么意义呢?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中有很多东西并不是最佳的东西,出现异常,浪费资源是很正常的,我的应对方法是:若此路不通,则另外僻溪径,条条大道通罗马,为啥要在一个无法预测结果的问题上浪费时间.
威孚半导体技术
2024-08-19 广告
威孚(苏州)半导体技术有限公司是一家专注生产、研发、销售晶圆传输设备整机模块(EFEM/SORTER)及核心零部件的高科技半导体公司。公司核心团队均拥有多年半导体行业从业经验,其中技术团队成员博士、硕士学历占比80%以上,依托丰富的软件底层... 点击进入详情页
本回答由威孚半导体技术提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式