起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 151|回复: 8

【结贴】怎样用代码切换到工作台?

[复制链接]
发表于 2009-7-13 13:46:23 | 显示全部楼层 |阅读模式
如题。
回复

使用道具 举报

发表于 2009-7-13 14:10:10 | 显示全部楼层
大概思路:
业务模型\系统空间\简洁风格\界面库\窗体库\标准风格主窗体中,有一个FFuncContainers对象容器,它记录了所有打开的功能对象,然后有一个方法DoFuncActivate,他用来激活某个功能对象。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-7-13 16:02:58 | 显示全部楼层
不是太懂,能否具体点?
回复 支持 反对

使用道具 举报

发表于 2009-7-13 16:06:45 | 显示全部楼层
哪里不懂呢?
1、找到工作台这个功能(FFuncContainers)
2、激活工作台这个功能(DoFuncActivate)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-7-13 16:28:35 | 显示全部楼层
FFuncContainers 是私有的,没法访问
DoFuncActivate 是保护的,也没法访问
回复 支持 反对

使用道具 举报

发表于 2009-7-13 16:46:16 | 显示全部楼层
你如果在别的功能里做,可以利用平台的消息机制;如果在标准风格主窗体里做就比较简单。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-7-13 17:04:18 | 显示全部楼层
我知道消息怎么发送,消息处理方法应写在哪里,怎么写?
回复 支持 反对

使用道具 举报

发表于 2009-7-13 17:11:19 | 显示全部楼层
我在标准风格主窗体中放一个按钮,然后用下面的方法实现
procedure TSTANDARDSTYLEMAINFORM.Button2Click(Sender: TObject);
var
  lContainer: TFuncContainer;
  AFunc : TFunc;
  i : Integer;
begin
  for i := 0 to FFuncContainers.Count - 1 do
  begin
    AFunc := TFuncContainer(FFuncContainers).Func;
    if SysUtils.SameText(SysUtils.UpperCase('Biz:\COLLABORATION\CUSTOMDESKTOPFUNC.FUNC')
              ,SysUtils.UpperCase(AFunc.BizClassURL.BizURL.URL)) then
    begin
      lContainer := FindContainer(AFunc);
      if lContainer = nil then
        Exit;

      ShowContainer(lContainer);
    end;
  end;
end;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-7-14 12:07:54 | 显示全部楼层
解决了,谢谢。
结贴。
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-18 23:50 , Processed in 0.040936 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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