• 避免多次打开同一窗体


    AX通过菜单可以多次打开同一个窗体,有些客户想同一个窗体只打开一次,如果第二次点击就把原来已经窗体显示在最上面。AX提供了一些API用来做这事,并且有合适的入口用来增加一些处理代码。
    1.修改类工厂ClassFactory的FormRunClass方法

    FormRun formRunClass(Args args)
    {
        #FormCacheMark
        Hwnd            hwnd;
        ;
        
    if(infolog.globalCache().isSet(#FormCacheMark,args.name()))
        
    {
            hwnd 
    = infolog.globalCache().get(#FormCacheMark,args.name());

            WinAPI::bringWindowToTop(hwnd);
            
    return null;
        }

        
    return ClassFactory::formRunClassOnClient(args);
    }

    增加一个判断,判断当前客户端是否有该窗体的实例,如果有的话,就直接将窗体显示在最前端,并返回null。
    2.修改SysSetupFormRun类的init方法,在Super()方法之后保存当前窗体的hwnd,以便以后调用。

    public void init()
    {
        ;
        super();
        infolog.globalCache().
    set(#FormCacheMark,this.name(),this.hWnd());
        SysSecurityFormSetup::loadSecurity(
    this);
    }

    3.修改SysSetupFormRun类的close方法,在关闭窗体时从全局缓存中去掉当前窗体。

    public void close()
    {
        super();
        infolog.globalCache().remove(#FormCacheMark,
    this.name());
    }

    OK,就这么简单。具体代码如附件所示。

  • 相关阅读:
    文件读写和进度条
    复选框选择变化(可以演化成简单的字符串拼接)
    读取文本方式的简单登录
    计算字符出现次数
    判断系统版本号
    DataTable合并
    获取单元格值的数据类型
    struts2 日期标签
    jsp获取枚举的值
    java web项目修改项目名称
  • 原文地址:https://www.cnblogs.com/Farseer1215/p/1012681.html
Copyright © 2020-2023  润新知