6.2. wxNotebook

Esta clase representa una especie de bloc, con varias páginas, mostradas como pestañas, por las que se navega haciendo click en ellas o con la tabulación. Cada una de las páginas será un componente wxPanel o algún otro heredado de él, aunque existe la posibilidad de utilizar más componentes.

Este componente cambia un poco respecto de los vistos hasta ahora, por el hecho de que se puede requerir crear una o más páginas dentro de él. Lo primero será crear el wxNotebook, pasando al contructor los parámetros habituales: la ventana padre, el identificador, la posición y el tamaño.

A continuación creamos las páginas (componentes wxPanel) como hemos visto anteriormente y por último se las añadimos al wxNotebook utilizando la función AddPage().

// Create the notebook
wxNotebook* notebook = new wxNotebook(parent, wxID_ANY, wxDefaultPosition, wxSize(300, 200));

// Create and add the pages
wxPanel1* window1 = new wxPanel(notebook, wxID_ANY);
wxPanel2* window2 = new wxPanel(notebook, wxID_ANY);
wxPanel3* window3 = new wxPanel(notebook, wxID_ANY);

notebook->AddPage(window1, wxT("Tab one"), true, 0);
notebook->AddPage(window2, wxT("Tab two"), false, 1);
notebook->AddPage(window3, wxT("Tab three"), false 2);

Este componente puede tener, además de alguno de los estilos del componente wxWindow, los siguientes estilos propios: wxNB_TOP, wxNB_LEFT, wxNB_RIGHT y wxNB_BOTTON, para indicar el lugar en donde aparecerán las pestañas de las distintas páginas, wxNB_FIXEDWIDTH, para que todas las pestañas tengan el mismo grosor, y wxNB_MULTILINE, que permite varias filas de pestañas.

El evento principal de este componente es EVT_NOTEBOOK_PAGE_CHANGED, que se genera cuando se cambia de una página a otra.

Respecto a los métodos con los que cuenta el componente wxNotebook, caben a destacar el método AddPage(), que añade páginas al wxNotebook (como hemos visto antes), que necesita como parámetros, el componente (normalmente un wxPanel), la cadena que mostrará la etiqueta, un booleano que nos dirá si será la página por defecto del notebook o no, y un entero que indicará el orden dentro de las páginas. Otros métodos son: DeletePage(), que elimina y destruye páginas, RemovePage(), que sólo elimina, DeleteAllPages() que elimina todas las páginas, AdvanceSeletion() que pasa a la siguiente página, SetSelection(), que muestra una página determinada, GetPage(), que que devuelve una página según un índice dado, GetPageCount() que devuelve el número de páginas, y SetPageText() y GetPageText() que trabajan con la etiqueta de la página.