delphi bookmark使用

简介:

关于书签(BookMark)操作;

   书签操作主要用于在表中快速地定位记录指针,在应用程序中常常要保存记录指针所在的位置,在进行其他处理之后,希望能快速地返回到先前指针所在的位置,此时,使用书签将显得特别有用。

   有关书签操作,Delphi提供了三个方法,它们是:    

   ●   GetBookMark    

   ●   GotoBookMark   

   ●   FreeBokMark  

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

BookMark   :   TBookMark;

  BookMark   :=   Table1.GetBookMark;   {对当前记录作书签标志}

  Table1.DisableControls;   {切断Table1与数据察觉部件的联系...下面有其使用解说} 

  Table1.First;

  While Not table1.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 的派生类,所以它们都有以上这两个方法。'















本文转自鹅倌51CTO博客,原文链接: http://blog.51cto.com/kaixinbuliao/1109712,如需转载请自行联系原作者



相关文章
|
存储 图形学 索引
Unity 编辑器开发实战【Custom Editor】- FSM Editor
Unity 编辑器开发实战【Custom Editor】- FSM Editor
346 0
Unity 编辑器开发实战【Custom Editor】- FSM Editor
|
前端开发 .NET 开发框架