三层中数据缓存bookmark和DisableControls用法

delphi bookmark使用

关于书签(BookMark)操作;      
 书签操作主要用于在表中快速地定位记录指针,在应用程序中常常要保存记录指针所在的位置,在进行其他处理之后,希望能快速地返回到先前指针所在的位置,
此时,使用书签将显得特别有用。有关书签操作,Delphi提供了三个方法,它们是:   
  ●   GetBookMark    
 ●   GotoBookMark   
 ●   FreeBokMark  

这三个方法一般都是在一起使用,GetBookMark方法返回一个TBookMark类型的变量,该变量包含着指向当前记录的指针,
GotoMark方法用于快速地将记录指针定位到具有书签的记录处。
FreeBookmark方法是与GetBookMark方法相反的操作,它释放书签标志。下面的程序代码阐述了书签操作的一般方法:

  BookMark   :   TBookMark;          
  BookMark   :=   Table1.GetBookMark;   {对当前记录作书签标志}    
 Table1.DisableControls;   {切断Table1与数据察觉部件的联系...下面有其使用解说}     
 Table.First       While   Not   EOF   Do   {对表中全部记录进行其他处理}     
  begin 
  Tabel1.Next;      
 end;  
   Tabel1.GotoBookMark(BookMark)     
  Table1.EnableControls;   {重新定位记录指针回到原来的位置}   
  Tabel1.FreeBookMark(BookMark);   {删除书签BookMark标志} 

 

-- - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - -

DisableControls方法是在程序修改或后台有刷新记录的时候切断数据组件,如TTABLE、ADOQUERY等等与组件数据源的联系。
如果没有切断,数据源中只要一有数据的改动,尤其是批量改动的话,每一笔的改动都会更新窗口中数据浏览组件的显示,这样会急剧减慢处理过程而且浪费时间。
EnableControls的作用相反,用来恢复TTABLE等组件与DATASOURCE的联系,并促使数据浏览组件更新显示。      
 这两个函数主要阻止组件感应显示,以加快语句执行速度。 比如,用大量的循环的时候,最好用他们。      
 1. 数据集的EnableControls, DisableControls方法成对使用的时候,
 如果中间的代码可能会导至出错的话必须用try..finaly DisableControls; end; 否则会导致数据感知不控制不可使用;    
  2. 在遍历数据或Filter大数据的时候的要用DataSet的EnableControls与DisabbleControls, 否则窗体上的数据感知控件会闪烁.    
   enablecontrols,disablecontrols是防止因数据源的改动而造成界面的闪动!在你需要刷新数据时可以调这两个函数,但建议你把它写在 try...finally语句块中!  
如: 
 try         
      adoQuery1.disablecontrols;         
      adoQuery1.close;         
      adoQuery1.open;   
finally         
    adoQuery1.enablecontrols;   
end; 

TQuery 的EnableControls 和DisableControls 方法都是继承自TDataSet 类的。
由于TTable 和TQuery 都是TDataSet 的派生类,所以它们都有以上这两个方法。

 

 

转载于:https://www.cnblogs.com/cnby/p/4078009.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值