delphi程序问题 下面的代码什么意思?

procedureTDataSet.CheckActive;beginifState=dsInactivethenDatabaseError(SDataSetClosed... procedure TDataSet.CheckActive;
begin
if State = dsInactive then DatabaseError(SDataSetClosed, Self);
end;

procedure TDataSet.CheckBrowseMode;
begin
CheckActive;
DataEvent(deCheckBrowseMode, 0);
case State of
dsEdit, dsInsert:
begin
UpdateRecord;
if Modified then Post else Cancel;
end;
dsSetKey:
Post;
end;
end;

procedure TCustomClientDataSet.EmptyDataSet;
begin
CheckBrowseMode;
Check(FDSBase.Reset);
ProviderEOF := True;
Resync([]);
InitRecord(ActiveBuffer);
end;
展开
 我来答
FatSpider_kc
2013-08-18
知道答主
回答量:12
采纳率:0%
帮助的人:10.9万
展开全部
看见列出的代码应该是 dataset 的吧, 具体应该是想描述怎么清空数据集的,此处作答为本人个人理解 具体分析如下:
CheckActive 检测活动开启状态,如果 State = dsInactive 既激活错误 SDataSetClosed 数据集关闭,if State = dsInactive then DatabaseError(SDataSetClosed, Self);

CheckBrowseMode 浏览模式时操作状态检测与数据动作, 通过上面的状态检测是否为开启状态,否出错提示,反之就进行 DataEvent 事件。 通过事件改变了 记录集的State, 从而进行不同的操作。

case State of

dsEdit, dsInsert: //判断当前的记录集存在修改或者插入操作。
begin
UpdateRecord; //更新记录缓冲
if Modified then Post else Cancel; //如果 Modified(修改状态)真时就保存,或者就取消
end;
dsSetKey:
Post; //如果是主键操作则保存。

EmptyDataSet 清空记录集。

CheckBrowseMode; //浏览模式时操作状态检测与数据动作
Check(FDSBase.Reset); //检测基类
ProviderEOF := True; //设置为空
Resync([]); //进行同步
InitRecord(ActiveBuffer); //生成记录集缓冲,dataset必须的。
众口说车
2013-08-08 · TA获得超过2323个赞
知道大有可为答主
回答量:3503
采纳率:50%
帮助的人:1497万
展开全部
procedure TDataSet.CheckActive; //这个应该是检测你当前的DataSET 是否处于活动状态
begin
  if State = dsInactive then DatabaseError(SDataSetClosed, Self);//如果不处于活动状态,执行XX函数。
end;
 
procedure TDataSet.CheckBrowseMode;//检查浏览模式
begin
  CheckActive; //检查dataset状态
  DataEvent(deCheckBrowseMode, 0);//
  case State of //当state在插入或替换 进行updaterecord
    dsEdit, dsInsert:
      begin
        UpdateRecord;
        if Modified then Post else Cancel;
      end;
    dsSetKey:
      Post;
  end;
end;
 
procedure TCustomClientDataSet.EmptyDataSet;
begin //这个应该是清除dataset ,由于使用了很多自定义函数,具体要看函数的意义!
  CheckBrowseMode;
  Check(FDSBase.Reset);
  ProviderEOF := True;
  Resync([]);
  InitRecord(ActiveBuffer);
end;
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式