起步软件技术论坛-X3

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

【结贴】用 ocx直接运行一个功能**

[复制链接]
 楼主| 发表于 2009-4-28 10:17:43 | 显示全部楼层
运行起来,看上面的url,是这样的。
我这儿初始化运行和直接输入http://127.0.0.1:8081/x3/business1.jsp
运行之后的效果是完全不同的。感觉可能我做的修改没有反应到用网页登陆进去的界面上。是不是哪儿的缓存,我没有清呢?怎样才能让两者一致?
回复 支持 反对

使用道具 举报

发表于 2009-4-28 10:59:12 | 显示全部楼层
不知道楼主现在调试运行和ie直接运行效果那里不一样了?
如果使用ie调试运行应该就是正常登陆才对,因为创建的start.html中不会传递参数
正常使用ie运行应该会有你设计的效果才对。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-4-28 11:19:23 | 显示全部楼层
我怕我的参数传过来不对,所以我的代码如下
procedure TOperatorFuncNavBar.LoadFuncs;
var
  lFuncURLs: TStringList;
  lFuncItem: TOperatorFuncItem;
  I: Integer;
  YWKJID:string;
begin
  YWKJID:=GetParamValue('Biz:\SYSTEM\DICT\YWCSZ1.ParamGroup\YWKJID.Param');
  ywkjid:='biz:\TONGGAOZX\';
  lFuncURLs := TStringList.Create;
  FAllocatedFuncs.BeginUpdate;
  try
    TContextUtils.GetAllocatedFuncs(FContext, lFuncURLs);

    FAllocatedFuncs.Clear;
    for I := 0 to lFuncURLs.Count - 1 do
    begin
    if (YWKJID<>'') AND (stringutils.Pos(YWKJID,lFuncURLs)<>0) then
    begin
      lFuncItem := TOperatorFuncItem(lFuncURLs.Objects[I]);
      FAllocatedFuncs.Add(lFuncItem.FuncURL.FileName);
      end
      else if YWKJID='' then
      begin
       lFuncItem := TOperatorFuncItem(lFuncURLs.Objects[I]);
      FAllocatedFuncs.Add(lFuncItem.FuncURL.FileName);
      end;
    end;
  finally
    FAllocatedFuncs.EndUpdate;
    lFuncURLs.Free;
  end;
end;
直接给YWKJID赋值了,这样初始化运行就出来工作台,TONGGAOZX业务空间,以及协同办公。TONGGAOZX业务空间下显示所有此空间下的功能。
而我用网页形式 http://127.0.0.1:8081/x3/business1.jsp ,我的business1.jsp跟系统自带的business.jsp只有一句话不一样:run函数如下:X3X.Run("", "biz:\\TONGGAOZX\\", "", "");
就我目前代码形式,其实business1.jsp中的run 写什么都一样。
但是网页形式登陆进去,就能看到所有的业务空间标签,任何一个业务空间的标签都点不动。
回复 支持 反对

使用道具 举报

发表于 2009-4-28 11:33:30 | 显示全部楼层
那是不是你解析参数时候有问题了?
你在系统初始化的代码中showmessage一下看看你收到的参数对不?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-4-28 11:46:02 | 显示全部楼层
procedure TOperatorFuncNavBar.LoadFuncs;
var
  lFuncURLs: TStringList;
  lFuncItem: TOperatorFuncItem;
  I: Integer;
  YWKJID:string;
begin
  YWKJID:=GetParamValue('Biz:\SYSTEM\DICT\YWCSZ1.ParamGroup\YWKJID.Param');
[U][B]ywkjid:='biz:\TONGGAOZX';[/B]   [/U]  
  lFuncURLs := TStringList.Create;
  FAllocatedFuncs.BeginUpdate;
  try
    TContextUtils.GetAllocatedFuncs(FContext, lFuncURLs);

    FAllocatedFuncs.Clear;
    for I := 0 to lFuncURLs.Count - 1 do
    begin
    if (YWKJID<>'') AND (stringutils.Pos(YWKJID,lFuncURLs)<>0) then
    begin
      lFuncItem := TOperatorFuncItem(lFuncURLs.Objects[I]);
      FAllocatedFuncs.Add(lFuncItem.FuncURL.FileName);
      end
      else if YWKJID='' then
      begin
       lFuncItem := TOperatorFuncItem(lFuncURLs.Objects[I]);
      FAllocatedFuncs.Add(lFuncItem.FuncURL.FileName);
      end;
    end;
  finally
    FAllocatedFuncs.EndUpdate;
    lFuncURLs.Free;
  end;
end;
下划线那句,不就说明,不管我是否正确接收了这个全局参数,我都给它重新赋值了吗?
回复 支持 反对

使用道具 举报

发表于 2009-4-28 13:38:13 | 显示全部楼层
是的,这样以后就会只显示这个空间下的业务功能了。
你现在是什么问题?如果使用ie运行业务功能树下所有的功能都会加载进来?
那你在系统初始化运行中在给那个全局参数赋值之前就写死一个空间看看是否可以,如果可以,你可以在那里showmessage一下,看看呢ie出入的参数和你的想要的是否一致呢?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-4-28 15:32:11 | 显示全部楼层
重申一下我的问题,
首先肯定,我的业务空间id是没有问题的,如55楼所示,我都在这儿给它重新赋值了,其实我在YWKJID:=GetParamValue('Biz:\SYSTEM\DICT\YWCSZ1.ParamGroup\YWKJID.Param');    后面也showdialogs了,显示的字符串是正确的。
   如果使用ie,业务系统管理配置中有那些标签,那么运行完的平台上就显示几个标签。但是这些标签是不能点了,无论单击那个,都是什么都不出来。我的系统的情况是,有的标签对应一个业务空间,有的标签对应多个业务空间。
   如果初始化运行,那么运行完的平台上就显示出:工作台,TONGGAOZX业务空间,以及协同办公。TONGGAOZX业务空间下显示所有此空间下的功能。从初始化运行的情况看,确实是把TONGGAOZX业务空间给单个的拖拽出来了。也基本满足我现在的需求了。
问题是:为什么会出现ie运行和初始化运行不一致的情况呢,我要怎么修改才能使ie运行的结果和初始化运行的结果相同呢?
回复 支持 反对

使用道具 举报

发表于 2009-4-28 16:09:00 | 显示全部楼层
您有电话么?打136的分机我们 交流一下哈
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-4-28 16:18:06 | 显示全部楼层
procedure TSTANDARDSTYLEMAINFORM.RunFirstFuncTimerTimer(Sender: TObject);
var
functionurls:string;
begin
  RunFirstFuncTimer.Enabled := False;

  functionUrls:=GetParamValue('Biz:\SYSTEM\DICT\YWCSZ1.ParamGroup\YWKJID.Param');
  if FConfig.ActiveFunc <> '' then

  else if (Length(TFunc(Context.Owner).Parameters)>0)and (stringutils.Pos('Func',functionUrls)<>0 ) then
      ShowContainer(FFuncContainers[FFuncContainers.Count-1] as TFuncContainer)
  else if (FFuncContainers.Count > 0) and (stringutils.Pos('Func',functionUrls)=0) then
      begin
      ShowContainer(FFuncContainers[0] as TFuncContainer);
       dialogs.ShowMessage('标准化风格主窗体!');
      end;
{ else
    if FFuncContainers.Count > 0 then
      ShowContainer(FFuncContainers[0] as TFuncContainer);  }

  TransferUtils.TransferManager.Start;
// TODO:  FTransferStatusThread.Resume;

  ConfigChange; // 功能运行后通知,让全局功能能够得到通知
end;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-4-28 16:39:56 | 显示全部楼层
59楼是标准风格主窗体的代码中的一个过程,我修改过这儿,为的是:有的url进来,显示的是某个功能,有的url进来,显示的是某个业务空间下的所有功能,我做了好几个类似business.jsp,的文件。              贴出来,让你看看,不知道这儿有没有问题。
我刚写了X3X.logon("ry1","");
  X3X.Run("Biz:\\System\\Init.Func", "biz:\\TONGGAOZX\\", "", "");
网页登进去,没有显示登陆对话框,但是仍然存在58楼的问题。
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-22 02:51 , Processed in 0.042474 second(s), 14 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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