2012-05-03 122 views
8

我需要實現始終位於頂部的窗口。我該怎麼做?我所有的嘗試與窗口管理器,讓我沒有結果:(ExtJS 4「總是在頂部」窗口

+0

看一看這樣的:http://stackoverflow.com/questions/6053847/how-to-make-a-full-modal-window-in-ext-4 – Dave

+1

看看'Ext.ZIndexManager.bringToFront()'方法 –

+0

選中此項。 http://docs.sencha.com/extjs/5.1.0/api/Ext.window.Window.html#cfg-alwaysOnTop –

回答

7

在Ext.window.Window,有一個名爲「模式」屬性:它設置爲true

否則,使用窗口管理管理您的Windows:在這種情況下,你必須遵循以下步驟:

  1. 寄存器你的窗口,窗口管理器(Ext.WindowManager.register(winId)
  2. 使用bringToFront方法來設置在頂部窗口(Ext.WindowManager.bringToFront(winId)
  3. 最後,檢查元素頂部與getActive方法(Ext.WindowManager.getActive( )

如:

Ext.create ('Ext.window.Window', { 
    title: 'Your window' , 
    width: 300 , 
    height: 300 , 
    html: 'ciao ciao' , 
    modal: true 
}).show(); 

或者:

var win1 = Ext.create ('Ext.window.Window', { 
    title: 'Your window' , 
    id: 'firstWin' , 
    width: 300 , 
    height: 300 , 
    html: 'ciao ciao' , 
}); 
win1.showAt (50, 50); 

var win2 = Ext.create ('Ext.window.Window', { 
    title: 'Your window' , 
    id: 'secondWin' , 
    width: 300 , 
    height: 300 , 
    html: 'I love pizza' , 
}); 
win2.showAt (60, 60); 

// Register your floating objects (window in this case) to the WindowManager 
Ext.WindowManager.register (win1); 
Ext.WindowManager.register (win2); 

// Bring 'firstWin' on top 
Ext.WindowManager.bringToFront ('firstWin'); 

// Then, check the zIndexStack 
alert (Ext.WindowManager.getActive().getId()); // this is firstWin, the window with the highest zIndex 

希望這對你有所幫助。

Cyaz

+0

這很好,**主要問題**是:**如何**檢測新窗口顯示在我的窗口上? –

+0

啊,現在我明白了;)嗯,首先你必須把你的窗口註冊到WindowManager。然後,檢查WindowManager的zIndexStack;)堆棧的第一個元素是具有最高zIndex的元素。 Ext.WindowManager.zIndexStack [0]是你的解決方案,但我認爲同樣的事情應該由Ext.WindowManager.getActive()完成,但在我的實驗中,它不工作... 現在看看我的第一個答案整個解決方案:它只是編輯;) – Wilk

+1

好吧,我只是瞭解如何通過Ext.WindowManager.getActive()獲得具有最高zIndex的窗口:而不是使用每個窗口的toFront()方法,您必須使用Ext。 WindowManager.bringToFront(id/object),然後使用Ext.WindowManager.getActive();)查看編輯後的解決方案。再見! – Wilk