起步软件技术论坛-X3

 找回密码
 立即注册
搜索
楼主: dahaigegege

【结贴】请教代码关闭功能的问题

[复制链接]
发表于 2010-1-18 16:27:35 | 显示全部楼层
那还是用这种方式来的简单些,先判断一下 tmpUniqueId,是否是 这个功能,如果是,那么保证让它的值 和 RunningFuncIDs 中所记录的值一致,这样就可以实现通过FindRunning方式找到该功能,那就可以 正常关闭了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-1-18 17:01:27 | 显示全部楼层
你能远程给看一下吗
回复 支持 反对

使用道具 举报

发表于 2010-1-18 17:11:32 | 显示全部楼层
不用远程吧,你把 你跟踪到的 tmpUniqueId 和 RunningFuncIDs  贴出来看看,然后我告诉你怎么弄一下。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-1-18 17:17:19 | 显示全部楼层
tmpUniqueId 的值 :
BIZ:\COLLABORATION\MYTASKFUNC.FUNC||-FFTNEEDPROCESS -VVMTASKGRID -D待办||||SBWHB||SBWHBZHGL||BAIYIN

if RunningFuncIDs.Find(AUniqueID, I) then   这个条件的返回值为false
根本取不到  RunningFuncIDs
回复 支持 反对

使用道具 举报

发表于 2010-1-18 17:27:34 | 显示全部楼层
if RunningFuncIDs.Find(AUniqueID, I) then   
这里打个断点,然后 ctrl+F7,可以看 RunningFuncIDs的值,i 从0开始,一直到 RunningFuncIDs.Count
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-1-18 18:17:42 | 显示全部楼层
明天给您反馈,谢谢!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-1-19 10:23:41 | 显示全部楼层
昨天的问题已经解决,功能url不正确的原因,现将代码如下,仅供参考:
   tmpUniqueId:= SystemCore.TFuncManager.GetFuncUniqueID('Biz:\COLLABORATION\MyTaskFunc.Func','-vvmTaskDetail -fftNeedProcess -l'+ GUID,'','',APersonID); // APersonID 是任务表中的"提交人id";  GUID 是任务表的GUID
    lFunc:= SYSTEMCORE.TSYSTEMCORE.FuncManager.FindRunning(tmpUniqueId);
  
  if lFunc <> nil then
    SystemCore.TSystemCore.FuncManager.TerminateFunc(lFunc, false);// 强制关闭为false
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-1-19 10:24:46 | 显示全部楼层
现有一个新的问题,在上面问题的基础上,在将当前的"我的任务"窗口关闭之后,通过代码刷新待办任务,我用的刷新待办任务代码也是从论坛上找的,但是没有达到刷新的效果:刷新代码如下:  请明示:
const
  cDesktopURL = 'Biz:\COLLABORATION\DesktopFunc.Func';    //Biz:\COLLABORATION\MYTASKFUNC.FUNC
  cTaskCenterURL = 'Biz:\COLLABORATION\TASKCENTERINFO.INFO';
var
  lBizObject: TBizObject;
  i: Integer;
  lContext: TContext;
begin
  lContext := AContext.FindParentContext(BizSys.IL_PERSON);    //人员环境  ; 查找某个隔离级的父环境  
   //在人员环境找工作台功能
  for i:=0 to lContext.ChildCount-1 do
  try
    if (lContext.Children.Owner is TFunc) then  //**********这边必须加上类型判断,不然会出错。
      if SysUtils.SameText(cDesktopURL, (lContext.Children.Owner as TFunc).BizClassURL.BizURL.URL) then
        lBizObject := lContext.Children.Owner;
  except
   end;

if lBizObject=nil then exit;
  //在工作台功能上找任务中心信息
  lContext := lBizObject.Context;
  for i:=0 to lContext.ChildCount-1 do
  try
    if SysUtils.SameText(cTaskCenterURL, (lContext.Children.Owner as TInfo).BizClassURL.BizURL.URL) then
    begin
      lBizObject := lContext.Children.Owner;
    //刷新数据集
      if (lBizObject as TInfo).DataSetByID('TaskIndex').Active then
    (lBizObject as TInfo).DataSetByID('TaskIndex').Refresh;
    end;
  except
  end;

我在对象查看器 没有看到Biz:\COLLABORATION\DesktopFunc.Func这个功能
回复 支持 反对

使用道具 举报

发表于 2010-1-19 10:32:15 | 显示全部楼层
正好有另一个帖子正在说这个问题呢,你看看吧
http://bbs.justep.com/forum.php?mod=viewthread&tid=31395
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-1-19 11:27:31 | 显示全部楼层
我们现在用的是3158版本,在环境中没有Biz:\COLLABORATION\DesktopFunc.Func这个功能,
用Biz:\COLLABORATION\CUSTOMDESKTOPFUNC.Func 这个功能的时候,找不到Biz:\COLLABORATION\TASKCENTERINFO.INFO 这个任务中心信息? 请明示
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-12 23:56 , Processed in 0.038184 second(s), 13 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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