起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 888|回复: 11

[color=#0000ff]代码设置docview的OpenMode为什么会向下滚动数据集?[/color]

[复制链接]
发表于 2011-4-6 15:32:02 | 显示全部楼层 |阅读模式
为啥执行以下方法会向下滚动一下数据集?
Docview.Preview
DocView.OpenView(TDocMode.dmPreview);
DocView.OpenMode :=TDocMode.dmPreview;

现在有个需求 左边是列表,右边是详细页,就是要根据数据集一个字段不同状态来自动的变更表格文档是否处于打印预览还是编辑状态。
代码写在了数据集的afterscroll事件中:如下:

procedure TMainForm.DataSetBroker1AfterScroll(DataSet: TDataSet);
begin
  if DataSetBroker1.DataSet.FieldByName('zd1').AsString='5 :afro: 555555555'  then
  DocView1.OpenView(TDOcMode.dmPreview)
  else
  DocView1.OpenView(TDOcMode.dmEdit)
end;
如果当前记录处在dmpreview模式,下一条记录处在dmEdit模式那么程序就会处在无响应状态。


3109版本,如果是缺陷有什么好的绕过方法?
回复

使用道具 举报

 楼主| 发表于 2011-4-7 11:04:19 | 显示全部楼层
没人回帖也要放到上面
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-4-7 14:50:24 | 显示全部楼层
No.2  
没人回帖也要放到上面
回复 支持 反对

使用道具 举报

发表于 2011-4-7 15:32:10 | 显示全部楼层
路过:
(没试过,不知道是不是bug)按你的需求,改变一下实现的思路吧。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-4-7 16:41:59 | 显示全部楼层
请提供思路吧
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-4-8 11:31:06 | 显示全部楼层
没人回帖也要放到上面
回复 支持 反对

使用道具 举报

发表于 2011-4-8 14:33:15 | 显示全部楼层
解决办法就是不要在数据集滚动的时候写这个代码
而是在切换视图的时候
即:切换到列表的时候就 DocView1.OpenView(TDOcMode.dmEdit)
而切换到详细的时候再根据条件判断
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-4-8 15:24:18 | 显示全部楼层
那我在详细页里面直接用滚动条滚动呢?
这句代码跟写在什么地方没有关系,只要执行就想下滚动一下数据集,然后再向上滚动,即使写到按钮里面也是一样的。
回复 支持 反对

使用道具 举报

发表于 2011-4-8 17:12:12 | 显示全部楼层
在详细页里滚动
滚动前必须保证DocView 是在Edit状态才行
那可以在feforeScroll里加上DocView1.OpenView(TDOcMode.dmEdit)
你们原来的代码应该就不用改了
我们之前也出现类似问题
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-4-8 17:41:44 | 显示全部楼层
不是你理解的那样,问题是这样的
如果当前记录处于dmPreview,下一条记录是dmEdit肯定有问题。
如果下一条记录也是dmPreview就没问题了,和当前记录是不是dmEdit没有关系
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2024-5-17 12:42 , Processed in 0.045887 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表