版本3042,流程轨迹问题,我把绑定流程轨迹的代码贴出来,比较灵异,请大家帮我看看。
//声明变量和方法。
private
function GetFlow: TFlow;
function GetFlowGuid: String;
public
property FlowGuid: String read GetFlowGuid;
property Flow: TFlow read GetFlow;
function TCK.GetFlowGuid: String;
var
lID: String;
lurl: String;
urlS: String;
begin
lID :=DefaultInfo.Info.DataSetByID('WJSPXX').FieldByName('GUID').AsString ;
lurl:='Biz:\MGOASYS\LCY.Proc';//此处为对应流程BIZURL
urlS:= urlList.Values[lurl];
if lID = '' then
exit;
Result := TFLOWMONITORINFO.GetFlowGuid(urlS, lID);
end;
function TCK.GetFlow: TFlow;
begin
Result := TFLOWMONITORINFO.GetFlow(FlowGuid);
end;
//在页签的ONSHOW事件里调用代码。
procedure TCK.TabSheet4Show(Sender: TObject);
var
myFlow:String;
begin
myFlow := FlowGuid;
Inherited;
if myFlow = '' then
begin
dvFlow.Visible := False;
exit;
end;
dvFlow.Visible := True;
TFLOWMONITORINFO.RefreshFlowDoc(TFLOWMONITORINFO.GetFlow(myFlow), dvFlow);
end;
打开这个功能以后,在点流程轨迹页签之前,如果做了其他任何操作,比如修改数据,选中一条记录之类的,然后再点流程轨迹的页签,
就只显示一句话
DocView打开文档失败,错误原因:Cannot focus a disabled or invisible window
但是如果我打开功能以后直接点流程轨迹的页签,就完全没有问题.
我试过几种修改方法,比如在代码里加dvFlow.SetFocus,但是不起作用,还有一种起作用的方法是
我在代码里加一个弹出提示框语句,比如jsDialogs.ShowMsg('asdfasdf', ''); ,这样运行起来弹一次就能
显示出流程轨迹.不过.这个只能是权宜的办法.没有解决根本问题,谁能告诉我这是哪得问题? |