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

  • 相关阅读:
    表的相关操作
    存储引擎介绍
    库的相关操作
    初始数据库
    linux版本的mysql安装
    mysql在windows上的安装即配置
    线程实际操作篇
    用户模板和用户场景
    顶会热词统计
    移动端疫情展示
  • 原文地址:https://www.cnblogs.com/Farseer1215/p/1012681.html
Copyright © 2011-2022 走看看