zoukankan      html  css  js  c++  java
  • 避免多次打开同一窗体

    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,就这么简单。具体代码如附件所示。

  • 相关阅读:
    Centos7安装配置JDK8
    Jmeter学习笔记
    mysql5.7版本免安装配置教程
    mysql查看线程详解(转载)
    xpath定位方法小结(转载)
    nginx负载均衡的5种策略(转载)
    loadrunner多场景的串行执行以及定时执行
    mysql 远程连接超时解决办法
    JAVA内存构成详解
    jconsole远程连接超时问题解决方法
  • 原文地址:https://www.cnblogs.com/Farseer1215/p/1012681.html
Copyright © 2011-2022 走看看