我正在使用wxPHP试验wxAuiManager,以了解如何在围绕中心固定元素的可停靠窗口中排列窗格元素。 documentation is rather sparse here所以我感觉自己完全使用自动完成!
默认情况下,我的窗格元素有一个关闭图标,单击此图标会成功关闭窗格,但我现在对恢复已关闭的窗格感兴趣。这似乎并不像人们期望的那样微不足道。
默认关闭窗口似乎会破坏它,但我相信使用DestroyOnClose()
可以防止这种情况。我在wxFrame
:
$this->manager = new wxAuiManager($this, wxAUI_MGR_DEFAULT);
$textCtrl = new wxTextCtrl($this, -1, "Pane");
$paneInfo = new wxAuiPaneInfo();
$info->Top(); // Dock in the top direction
$info->PinButton(); // Give the pane a pin (or "undock") icon
$info->DestroyOnClose(false);
$info->Name('auiPane'); // Make this item individually addressable
$this->manager->AddPane($textCtrl, $paneInfo);
关闭窗格后,要恢复我在同一个wxFrame
上下文中执行此操作:
$info = $this->manager->GetPane('auiPane');
echo "Is shown: " . ($info->IsShown() ? 'yes' : 'no') . "\n";
// These two are probably unnecessary - grasping at straws here!
$info->Top();
$info->TopDockable();
// Show the pane again
$info->Show();
文本输出最初表示" no"关闭后,然后再次运行此代码会产生一个" yes"。因此Show()
似乎确实有效,但它不会重新回到wxAuiManager排列 - 我可以看到帧内容没有任何区别。
我错过了什么?我在Ubuntu 14.04上运行PHP 5.5.9,wxwidgets
扩展名是自定义编译的。
答案 0 :(得分:0)
我想通了 - 真的很容易。 wxAuiPaneInfo
方法Show()
是正确的,但在此之后,经理需要Update()
强制它立即重绘:
// Show all available panes
for($i = 0; $i <= 7; $i++)
{
$info = $this->manager->GetPane('auiPane' . $i);
$info->Show();
}
// Redraw the managed window
$this->manager->Update();