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等)