void FileViewerWindow::initLayout(const IlvRect& size) { // Create the tree gadget in which the folder hierarchy will // be displayed. IlvTreeGadget* tree = new IlvTreeGadget(getDisplay(), IlvRect(0, 0, IlvMax((IlvDim)100, (IlvDim)(size.w()/3)), size.h())); // Encapsulate the tree gadget into a graphic pane and name it // DirectoryHierarchy. IlvGraphicPane* treePane = new IlvGraphicPane("DirectoryHierarchy", tree); // The pane is set to resizable.It is possible to // resize it using a splitter interactively. treePane->setResizeMode(IlvPane::Resizable); // Set also a minimum size on the horizontal direction. treePane->setMinimumSize(IlvHorizontal, 100); // Add the pane to the container. addPane(treePane); // Create the sheet. IlvSheet* sheet = new IlvSheet(getDisplay(), IlvRect(0, 0, size.w(), size.h()), 1, 1, size.w()/4, 25, 2, IlvFalse, IlvFalse); // Encapsulate it into a graphic pane giving FileList as name. IlvGraphicPane* listPane = new IlvGraphicPane("FileList", sheet); // The sheet is elastic:when the container will be resized, only the // sheet will be resized (because the tree is only resizable, not elastic). listPane->setResizeMode(IlvPane::Elastic); // Add the pane to the container. addPane(listPane); // Update the container. updatePanes(); } |
メモ: シートには、 行列が 1 つしかありません。この段階ではブラウズするファイルが表示されたときにシートがどのように見えるのかはっきりしないためです。このシートは伸縮自在でツリーが残したスペースを占めるため、パラメーター (size.w(),4) で指定されたシートの幅は、無意味であることに注意してください。 |
メモ: メンバー関数 IlvPanedContainer::updatePanes を呼び出すと、スライダー・ペインをツリーとシート・ペインの間に挿入します。この 2 つはリサイズ可能なため自動的に挿入されます。 |
void FileViewerApplication::makePanels() { // Initialize the main window. initMainWindow(); // Show it. getMainWindow()->show(); } |
void FileViewerApplication::initMainWindow() { // Create the main window. IlvRect rect(0, 0, 500, 300); IlvContainer* mainWindow = createMainWindow(rect); // Name it to be able to retrieve it. mainWindow->setName(getName()); // Quit the application when the user asks for termination. mainWindow->setDestroyCallback(IlvAppExit); // Add the panel to the application. addPanel(mainWindow); } |
IlvContainer* FileViewerApplication::createMainWindow(const IlvRect& rect) const { return new FileViewerWindow(getDisplay(),getName(),getName(),rect,IlvFalse); } |
int main(int argc, char* argv[]) { IlvSetLocale(); FileViewerApplication* appli = new FileViewerApplication("VIEWFILE Sample", 0, argc, argv); if (!appli->getDisplay()) return -1; appli->run(); return 0; } |
メモ: IlvSetLocale への呼び出しは、単に Rogue Wave Views に現在の場所を使用するように伝えます。アプリケーションをローカライズしたい場合は、この関数を呼び出さなくてはなりません。詳細については、Rogue Wave Viewsの「国際化」にある「ローカライズされた環境で実行するプログラムの作成」を参照してください。 |