起步软件技术论坛-X3

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

【结贴】关于功能调用**

[复制链接]
发表于 2008-11-28 17:50:17 | 显示全部楼层 |阅读模式
以下四种方式,只有第一种可以正常打开功能的主窗体。其他三种都没反应。

I、
var
  lFuncBroker:TFuncBroker;
begin  lFuncBroker:=TFuncBroker.Create(self);  lFuncBroker.BizClassRef.BizURL.URL:= 'Biz:\OPERATION\AMCPMS\GNE.Func';
SystemCore.TSYSTEMCORE.FuncManager.RunFunc(lFuncBroker.Func,'',nil);
lFuncBroker.Free;
end;

II、
var
  lFuncBroker:TFuncBroker;
begin  lFuncBroker:=TFuncBroker.Create(self);  lFuncBroker.BizClassRef.BizURL.URL:= 'Biz:\OPERATION\AMCPMS\GNE.Func';
lFuncBroker.Func.Run('');
  lFuncBroker.Free;
end;

III、
var
lFunc:TFunc;
begin
  lFunc:=TFunc.Create(self.Context); lFunc.BizClassURL.BizURL.URL:= 'Biz:\OPERATION\AMCPMS\GNE.Func';
SystemCore.TSYSTEMCORE.FuncManager.RunFunc(lFunc,'',nil);
end;
IV、
var
lFunc:TFunc;
begin
  lFunc:=TFunc.Create(self.Context);  lFunc.BizClassURL.BizURL.URL:= 'Biz:\OPERATION\AMCPMS\GNE.Func';
lFunc.Run('');
end;
回复

使用道具 举报

发表于 2008-11-29 10:04:10 | 显示全部楼层
不知道楼主要实现什么?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-11-29 10:20:40 | 显示全部楼层
实现的就是一个功能调用另一个功能。 实现起来用其他方式也没问题。只是想了解一下为什么这样做就不行。


直接利用
SystemCore.TSYSTEMCORE.FuncManager.RunFunc(self.Context,'ZHCBTJ'
      ,listbox1.Items[listbox1.ItemIndex]
      ,'', nil, false);
当然是最简单的。


只是想知道上面的为什么不能调用。

第二种方法通过http://bbs.justep.com/forum.php? ... 4%DC找到原因,  需要加上一个  lFuncBroker.Func.MainForm.Show;就行了

但是第三第四中方法为什么不行呢、
跟踪了一下。 那个lFunc 最后的MainFormName是空白的,这是为什么呢?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-11-29 10:26:38 | 显示全部楼层
以下第一种不能,第二种可以。

I、
var
lFunc:TFunc;
begin
  lFunc:=TFunc.Create(self.Context);
  lFunc.BizClassURL.BizURL.URL:=listbox1.Items[listbox1.ItemIndex];
  try
    lFunc.Run('');
    lFunc.MainForm.Show;
  except
  end;
end;

II、
var
  lBizClassURL:TBizClassURL;
  lFunc:TFunc;
begin
  lBizClassURL:=TBizClassURL.Create;
  try
    lBizClassURL.BizURL.URL:=listbox1.Items[listbox1.ItemIndex];
    lFunc:=Context.GetBizObject(lBizClassURL) as TFunc;
    lFunc.Run('');
   lFunc.MainForm.Show;
  finally
    lBizClassURL.Free;
  end;
end;

为什么。 为什么还要在用个TBizClassUrl过度一下呢。直接赋值为什么不行
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-11-29 10:44:51 | 显示全部楼层
var
lFunc:TFunc;
begin
  lFunc:=TFunc.Create(self.Context);
  lFunc.BizClassURL.BizURL.URL:=listbox1.Items[listbox1.ItemIndex];
  lFunc.MainFormName:='MAINFORM';
  try
    lFunc.Run('');
    lFunc.MainForm.Show;
  except
  end;
end;

这样就没问题了。
但是为什么要手动设置一下lFunc的MainFormName属性呢。 它其他的属性都是可以自动得到的。按理lFunc.MainFormName:='MAINFORM';这个不应该必须。

可能这样设计是有其他用处的。
先这样吧。
结贴
回复 支持 反对

使用道具 举报

发表于 2008-11-29 13:44:53 | 显示全部楼层
回5楼,你的功能是动态创建的,除了功能url还需要设置功能的主窗体(当然,如果没有主窗体,可以不用设置。其实你5楼中的代码不加那句代码,功能也已经运行了,无非就是没有主窗体的功能而已,你可以重载功能的dorun方法测试一下)
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-27 21:57 , Processed in 0.040123 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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