起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 135|回复: 5

[结贴]功能上的数据语义策略,如何在运行期,控制打开与关闭?

[复制链接]
发表于 2007-11-30 10:00:17 | 显示全部楼层 |阅读模式
一个业务功能,加了多个数据语义策略,如何在运行期只设置一个起作用?

下边这个方法通过,但没达到作用。

procedure TfrmBillCreate.ApplyPolicy;
var
  i: Integer;
begin
  Inherited;
  for i := 0 to FuncBroker.Func.PolicyCount - 1 do
  begin
    if FuncBroker.Func.Policies is TSememicDataPolicy then
      if FuncBroker.Func.Policies.Name = FCustomBill.BillSememicDataPolicy then
        FuncBroker.Func.Policies.Enabled := True
      else
        FuncBroker.Func.Policies.Enabled := False;
  end;
end;
回复

使用道具 举报

发表于 2007-11-30 11:44:00 | 显示全部楼层
你的语义策略是控制数据集的范围吗?如果是,你关闭一下数据再打开看看
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-11-30 12:53:00 | 显示全部楼层
最初由 atiger 发布
[B]你的语义策略是控制数据集的范围吗?如果是,你关闭一下数据再打开看看 [/B]


不是,控制字段的只读。
回复 支持 反对

使用道具 举报

发表于 2007-11-30 13:37:57 | 显示全部楼层
如果是只读的话,有问题了,因为策略除过滤数据范围可以通过数据集关闭再打开起作用,其他的是在功能打开的时候起作用,当功能已经打开了,就不行了,

如果在运行期间来调整字段只读,那可以通过代码设置字段的ReadOnly属性为True了
回复 支持 反对

使用道具 举报

发表于 2007-11-30 15:22:36 | 显示全部楼层
楼主,策略要在功能运行前设定才有效果。如下:

procedure TJDGN1.DoRun;
begin
  SememicDataPolicy1.Enabled:=false;
  inherited;
end;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-11-30 16:02:40 | 显示全部楼层
这么说的话,在运行期,就无法控制了。

结贴吧。
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-1 03:58 , Processed in 0.037695 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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