首页 > 其他分享 >DataSet 的 DisableControls 与 DataSet的EnableControls 作用(转)

DataSet 的 DisableControls 与 DataSet的EnableControls 作用(转)

时间:2024-01-30 13:44:26浏览次数:34  
标签:ClientDataSet2 ClientDataSet1 控件 DisableControls DataSet EnableControls

DataSet 的 DisableControls 与 DataSet的EnableControls 作用(转

ClientDataSet 与 DataSet 的 DisableControls、EnableControls 用法类似。

对大量的数据做循环处理时,为了避免 DataSet 在游标不停地跑时,数据敏感控件随之不停刷新界面,导致代码运行速度下降,通常的做法是断开数据敏感控件和 DataSet 的连接。
正确的做法是执行 DataSet.DisableControls;在循环跑完后再执行 DataSet.EnableControls 恢复对界面上数据敏感控件的刷新支持。
例如:

with ClientDataSet1 do
begin
  DisableControls;
  First;
  while not Eof do
  begin
    do something....
    Next;
  end;
 
  EnableControls;
end;

上述代码没有问题。当然,记得加上 try... finally...end; 但是,如果是主从表。比如我们有一个 ClientDataSet2,设置主从关系:

ClientDataSet2.IndexFieldNames := 'ID';
ClientDataSet2.MasterFields := 'ID';
ClientDataSet2.MasterSource := DataSource1;

则,正常情况下,ClientDataSet1 的游标走动,会自动带动 ClientDataSet2 的数据集被主表 ClientDataSet1 的 ID 字段值过滤掉。
但是,如果对 ClientDataSet1 执行了 DisableControls 则 ClientDataSet2.MasterSource := DataSource1 无效了。这时候,ClientDataSet2 不会随着 ClientDataSet1 的游标走动而变化。
问题总结:
看起来,DisableControls 实际上就是导致 ClientDataSet1 和绑定它的 DataSource1 断开了连接!这样才导致 ClientDataSet2 无法作为从表跟随主表动作。
因此,DisableControls 方法使得界面上数据敏感控件不跟随 DataSet 的游标走动而改变显示,其本质是 DataSet 断开了指向它的 DataSource 的连接。

原文链接:https://blog.csdn.net/pcplayer/article/details/115768119

标签:ClientDataSet2,ClientDataSet1,控件,DisableControls,DataSet,EnableControls
From: https://www.cnblogs.com/qiao-fu/p/17996921

相关文章

  • DataSet类型转换实体
    查询DataSet类型无法对每条数据进行循环转换,利用泛型对象使用反射机制将对象相关属性进行自动赋值。基础调用DataSetds=DbHelper.Query(SQL);if(ds.Tables[0].Rows.Count>0){returnDataRowToList_List_Genericity<ListData>(ds.Tables[0].Rows);}//ListDat......
  • scikit-learn.datasets 机器学习库
    scikit-learn是一个用于Python的机器学习库,提供了大量用于数据挖掘和数据分析的工具。以下是对这些函数和方法的简要描述:clear_data_home:清除数据集目录的内容。dump_svmlight_file:将数据集保存为SVMLight格式的文件。fetch_20newsgroups:下载20个新闻组的文本数据集。f......
  • DataSet 读取/压缩 /解压
     //从数据库读取dataset,压缩写入wenjianMssqlHelperdb=newMssqlHelper(GlobalSetting.ConnectString);DataSetds=db.ExecuteDataSet("select*fromdim_goods");byte[]bytesData=GetBytesFromDataSet(ds......
  • offline RL | ABM:从 offline dataset 的好 transition 提取 prior policy
    ICLR2020,666。材料:论文题目:KeepDoingWhatWorked:BehaviorModellingPriorsforOfflineReinforcementLearning项目网站:https://sites.google.com/view/behavior-modelling-priorspdf版本:https://arxiv.org/pdf/2002.08396.pdfhtml版本:https://ar5iv.labs.arxi......
  • 使用hf-mirror下载数据集时需要添加参数 --repo-type dataset
    在国内下载huggingface可以使用hf-mirror加速下载,一般的使用方法可以参见:https://hf-mirror.com/上的介绍。我在使用hf-mirror下载时,参照网站第一种方法,指定仓库名称和本地下载地址下载时,发生了报错,错误如下:报错指出我们有正确的repo_id和repo_type,对于这两个参数一头雾......
  • 读取Execl数据到Datatable或DataSet时 日期单元格出现乱码的解决方案
    Execl某单元格数据为2012-1-10读取到DataTable变为40918不是正确的2012-1-10其实excel在转换格式的时候就自动把日期变成数字了,那这个数字是怎么来的呢?如果你把日期改成1900年1月1日,那么你可以看到他的转换结果是1,以此类推,39902是哪一天就明白了吧解决方法一://strValu......
  • [python] 基于Dataset库操作数据库
    dataset库是Python中一个用于操作数据库的简单库,它提供了一种简洁的方式与各种关系型数据库进行交互,例如SQLite、MySQL、PostgreSQL等。你可以使用dataset库来执行查询、插入、更新和删除操作,而无需编写复杂的SQL语句。dataset库适用于小规模的数据存储和查询场景,相比csv和json文......
  • [python] 基于Dataset库操作数据库
    dataset库是Python中一个用于操作数据库的简单库,它提供了一种简洁的方式与各种关系型数据库进行交互,例如SQLite、MySQL、PostgreSQL等。你可以使用dataset库来执行查询、插入、更新和删除操作,而无需编写复杂的SQL语句。dataset库适用于小规模的数据存储和查询场景,相比csv和json文......
  • ADO.Net DataAccess 常用方法ExecuteNonQuery ExecuteReader ExecuteDataSet
    1///<summary>2///Standardinterfacefordataaccessusingstoredprocedures3///</summary>4publicinterfaceIDataAccess5{6stringConnectionString{get;set;}7SqlConnectionCreateConnecti......
  • medical custom dataset for fine-tuning llama2
    datapreparationweusehuggingfaceshibin6624/medical tofine-tuningllama2,pleasenotethatthisdatasetisconsistofenandcndata,herewejustuseendata.datasetstructure nowwedownloadandloaddataset,thensavethemintotrain.csv,valida......