ExtJS:检查窗口状态(最小化,最大化等)

Posted

技术标签:

【中文标题】ExtJS:检查窗口状态(最小化,最大化等)【英文标题】:ExtJS: check window state (is minimized, is maximized, etc) 【发布时间】:2013-03-04 10:30:40 【问题描述】:

ExtJS 提供了许多关于 Window 是否配置为的配置 maximized、minimizable等。它还提供了maximize和minimize窗口的功能。

找不到获取现有窗口状态的正确方法。我需要的是类似于以下的功能:

var myWin = Ext.create('Ext.window.Window',  ... );
...
myWin.isMinimized(); // is current window minimized?
myWin.isMaximized(); // is current window maximized?

可以从窗口实例中检索当前窗口的状态吗?

【问题讨论】:

【参考方案1】:

对于maximize(),有一个布尔属性maximized,您可以从对象中获取它:

if (myWin.maximized)  ... 

但是,对于minimize(),ExtJS 不提供任何功能,需要单独实现。因此,该框不支持任何minimized 属性。

【讨论】:

【参考方案2】:

@VisioN 的答案已经完成,但我想向您展示一个使用toggleCollapse() 隐藏窗口的 sn-p:

Ext.create('Ext.Window',
    height: 100,
    width: 100,
    minimizable: true,
    listeners: 
        minimize: function()
            var win = this;
            win.toggleCollapse();
            if (!win.getCollapsed()) 
                win.center();
             else 
                win.alignTo(document.body, 'bl-bl');
            
        
    
).show();

【讨论】:

什么是toggleCollapse()?它给我带来了错误。如果是用户定义的,请提供代码 您运行的是哪个版本的 ExtJs?从以下版本开始可用:2.3.0【参考方案3】:

任何人都可以使用一种解决方案,而不是使用minimizable 配置,而是使用tools。这是完整的例子..

var isMinimized = false;   //if you want to check for minimized elsewhere..
var winWidth;          //to restore to actual width.
Ext.create('Ext.window.Window', 
    title: 'Hello',
    closable : false,
    width : 300, height : 400,
     tools: [
                  
                    type: 'restore',
                    hidden : true,
                    handler: function( evt,toolEl,owner,tool ) 
                        var window = owner.up( 'window' );
                        window.expand('',false);
                     window.setWidth(winWidth);
                        window.center();
                        isMinimized = false;
                        this.hide();
                        this.nextSibling().show();
                                                    
                ,  
                    type: 'minimize',
                    handler: function( evt,toolEl,owner,tool )
                        var window = owner.up( 'window' );
                        window.collapse();
                        winWidth = window.getWidth();
                        window.setWidth( 150 );
                        window.alignTo( Ext.getBody(), 'bl-bl');
                        this.hide();
                        this.previousSibling().show();
                        isMinimized = true;
                                                    
                                            
            ]
).show();

【讨论】:

这是一个非常好的解决方案。如果在最小化不同的窗口时不想重叠会发生什么?

以上是关于ExtJS:检查窗口状态(最小化,最大化等)的主要内容,如果未能解决你的问题,请参考以下文章

Electron无边框窗口(自定义最小化、最大化、关闭、可拖拽)

electron窗口相关操作(放大缩小退出,可拖动,可resize等)

PyQt5编程(10):窗口的最小化与最大化

Python中最全的窗口操作,如窗口最大化最小化窗口置顶获取缩放比例等

如何启动 Outlook 处于最小化状态

在c++中窗口最大化、最小化、关闭的程序代码是啥?