Construir Una Tabla y Arbol IV-2

download Construir Una Tabla y Arbol IV-2

of 17

Transcript of Construir Una Tabla y Arbol IV-2

  • 5/20/2018 Construir Una Tabla y Arbol IV-2

    1/17

    Construir una Tabla

    Como ejemplo, cree un nuevo proyecto (llmelo como guste), seleccione el objetoDataGridView y pngalo en el formulario.

    De forma predeterminada la tabla (DataGridView) mostrar barras dedesplazamiento cuando sea necesario (ScroUBars igual a Both).A continuacin,aada al formulario los controles indicados a continuacin con las propiedadesespecificadas:

  • 5/20/2018 Construir Una Tabla y Arbol IV-2

    2/17

    La propiedad AllowUserToOrderColumns permite cambiar el orden de lascolumnas. Para mover una columna, pulse la teclaAlt y arrstrela con el ratn a laposicin deseada. AutoSizeColumnsMode indica cmo se determina laanchura de las columnas. AutoSizeRowsMode indica cmo se determina la

    altura de filas. ColumnHeadersHeightSizeMode indica si la altura de la fila quecontiene la cabecera de la columna es ajustable y si puede ser ajustada por el

    usuario o ajusta automticamente. Dock indica a qu lados del contenedor seajustar La tabla. RowHeadersWidthSizeMode indica si la anchura de la

    columna que contiene la cabecera de la fila es ajustable y si puede ser ajustadapor el usuario o se ajusta automticamente.

    Al terminar de modificar las propiedades se obtendr lo siguiente:

  • 5/20/2018 Construir Una Tabla y Arbol IV-2

    3/17

    El siguiente paso ser agregar las columnas a la tabla, para este ejemplo se agregaran las

    columnas: Nombre, Direccin, Telfono y si est casado o no la persona. Para agregar

    la columna se da clic derecho en la tabla y se selecciona la opcin Edit Columns.

    Aparecer este cuadro:

    Presione Add y aparecer esta otra ventana:

  • 5/20/2018 Construir Una Tabla y Arbol IV-2

    4/17

    Aada la columna y aparecer esta pantalla:

    Cambie el Header Text a Nombre y dentro de la seccin de desing ponga como

    nombre colNombre, no cambie ninguna otra propiedad. Agregue las dems columnas

    de la misma forma, tendr algo as al finalizar.

  • 5/20/2018 Construir Una Tabla y Arbol IV-2

    5/17

    Ahora viene lo ms importante: llenar la tabla.

    Dale doble clic en la forma y coloca el siguiente cdigo:

    AsignarDatosTabla();

    Este mtodo se encargara de hacer el trabajo de llenar la tabla, el cdigo del mtodo es

    el siguiente:

    privatevoidAsignarDatosTabla()

    {// Crear cada fila de datos

    object[] fila0 = { "Alfons Gonzlez Prez","Argentona, Barcelona", "933333333", true};

    object[] fila1 = { "Ana Mara Cuesta Suer", "Gijn,Asturias", "984454545", false};

    object[] fila2 = { "Elena Veiguela Surez",

    "Pontevedra", "986678678", false};object[] fila3 = { "Pedro Aguado Rodrguez",

    "Madrid", "912804574", true};// Aadir las filas a la tablaTablaTfnos.Rows.Add(fila0);

    TablaTfnos.Rows.Add(fila1);TablaTfnos.Rows.Add(fila2);TablaTfnos.Rows.Add(fila3);

    }

  • 5/20/2018 Construir Una Tabla y Arbol IV-2

    6/17

    Si se corre el programa se dar cuenta que en la columna Casado solo aparece true o

    false, podemos cambiar esto a checkboxes al ir otra vez a editar columnas y en la

    columna de Casado cambiar el tipo de la columna a DataGridViewCheckBoxColumn.

    Puede que se lance una excepcin al ejecutar el programa, esto se debe a que quecuando se aade la ltima fila, la que est vaca (obsrvese que est habilitada la opcin deaadir filas: propiedad AJlowlIserToAddRows = true), la columna "Casado" tiene un valor nullque no puede convertirse a false. Esta excepcin se captura aadiendo el controlador para devento DataError del DataGridView con el fin de, en el caso comentado, asignar a lacolumna "Casado" el valor false:

    Haga doble clic y agregue el siguiente cdigo:

    if(TablaTfnos.Columns[e.ColumnIndex].Name == "colCasado")

    {if(TablaTfnos.Rows[e.RowIndex].Cells["colCasado"].Value

    == null)

    TablaTfnos.Rows[e.RowIndex].Cells["colCasado"].Value =false;

    }

  • 5/20/2018 Construir Una Tabla y Arbol IV-2

    7/17

    Por ultimo si se quiere que al seleccionar un dato de la tabla se depsliege en otro cuadro

    de texto su valor se hace lo siguiente, en los eventos de la tabla se hace doble clic al

    evento: CellClic y se agrega el siguiente cdigo:

    objectvalorCelda = TablaTfnos.CurrentCell.Value;if(valorCelda != null)

    MessageBox.Show(valorCelda.ToString());

    De resultado tendr algo as:

    Construir un rbol

    Cree un nuevo proyecto (llmele como quiera) y seleccione el objeto Treeview y

    agrguelo al formulario:

    Se ver algo as:

  • 5/20/2018 Construir Una Tabla y Arbol IV-2

    8/17

    Ahora se le cambia el nombre al Treeview a ArbolTfnos.

    Lo siguiente es poner a la propiedad Dock el atributo Fill, despus se tiene que agregar

    nodos al rbol, esto es relativamente fcil, se necesita usar la propiedad Node del

    Treview. Aparecer la siguiente pantalla:

  • 5/20/2018 Construir Una Tabla y Arbol IV-2

    9/17

    Se agregara nodos (padre e Hijos) para representar la siguiente imagen:

    Una vez terminado quedara algo asi:

  • 5/20/2018 Construir Una Tabla y Arbol IV-2

    10/17

    Ahora nos hace falta agregar imgenes a cada nodo, esto se hace agregando el objeto

    ImageList, el cual llamaremos ImagsNodos:

    Despus nos iremos a las propiedades del ImageList y seleccionaremos la propiedad

    Images y aparecer la siguiente ventana:

  • 5/20/2018 Construir Una Tabla y Arbol IV-2

    11/17

    Pero antes de aadir las imgenes se tienen que agregar en el folder del proyecto una

    carpeta que contenga dichas imgenes.

  • 5/20/2018 Construir Una Tabla y Arbol IV-2

    12/17

    Ahora simplemente vaya a la propiedad ImageList del Treeview y seleccione a

    ImagsNodos:

    Con esto terminara el rbol, ejectelo y se ver as:

  • 5/20/2018 Construir Una Tabla y Arbol IV-2

    13/17

    Ahora lo que podemos hacer es agregar datos a los nodos y poder desplegarlos, para esto se debe incluir

    otra clase a la cual se llamara Tfno la cual se derivara del TreeNode.

    Esta clase tendr el siguiente cdigo:

    usingSystem;

    using System.Collections.Generic;usingSystem.Text;usingSystem.Windows.Forms;

    namespaceArbol{

    publicclassTfno: TreeNode{

    internalstringnombre;privatestringdireccin;privatelongtelfono;privateboolcasado;

    // Constructor: crea un nuevo objeto Tfno con los parmetros:// nombre, direccin, telfono, casadopublicTfno(stringnom, stringdir, longtfno, boolcas)

    {nombre = nom;direccin = dir;telfono = tfno;casado = cas;

    }

    // Constructor: crea un nuevo objeto Tfno con los parmetros:// nombre, direccin, telfono, casado, etiqueta, ndice imagen// nodo no seleccionado, ndice imagen nodo seleccionado

  • 5/20/2018 Construir Una Tabla y Arbol IV-2

    14/17

    publicTfno(stringnom, stringdir, longtfno, boolcas, stringetiq, intimg0,intimg1)

    : base(etiq, img0, img1){

    nombre = nom;direccin = dir;telfono = tfno;

    casado = cas;}

    publicoverridestringToString(){

    returnnombre;

    }

    publicstringdatosTfno()

    {stringNL = Environment.NewLine;stringestado;if(casado)

    { estado = "casado/a";}

    else{

    estado = "soltero/a";

    }returnnombre + NL + direccin + NL + telfono + NL + estado + NL;

    }}

    }

    Esta clase nos permitir desplegar la informacin de los nodos pero aun falta crear dichos nodos con la

    informacin deseada, lo siguiente es crear el mtodo crearNodo y mandarlo a llamar en la forma.

    El mtodo tendr el siguiente cdigo:

    privatevoidCrearNodos(){

    TreeNodenodoRaiz = ArbolTfnos.Nodes[0];TreeNodenodoCategoria = null; // nodo de bifurcacinTreeNodenodoLetra = null; // nodo de bifurcacin

    TfnonodoTelefono = null; // nodo hoja

    nodoCategoria = newTreeNode("Amigos", 0, 1);nodoRaiz.Nodes.Add(nodoCategoria);

    nodoLetra = newTreeNode("A", 0, 1);nodoTelefono = newTfno("Alfons", "Barcelona", 933333333, true, "Alfons", 0, 1);

    nodoLetra.Nodes.Add(nodoTelefono);nodoTelefono = newTfno("Ana", "Pontevedra", 986666666, true, "Ana", 0, 1);nodoLetra.Nodes.Add(nodoTelefono);nodoCategoria.Nodes.Add(nodoLetra);

  • 5/20/2018 Construir Una Tabla y Arbol IV-2

    15/17

    nodoLetra = newTreeNode("B", 0, 1);nodoTelefono = newTfno("Beatriz", "Santander", 942222222, false, "Beatriz", 0, 1);nodoLetra.Nodes.Add(nodoTelefono);nodoCategoria.Nodes.Add(nodoLetra);

    nodoCategoria = newTreeNode("Clientes", 0, 1);nodoRaiz.Nodes.Add(nodoCategoria);

    nodoLetra = newTreeNode("A", 0, 1);nodoTelefono = newTfno("Antonio", "Granada", 956666666, true, "Antonio", 0, 1);nodoLetra.Nodes.Add(nodoTelefono);nodoCategoria.Nodes.Add(nodoLetra);

    }

    Antes de correrlo se necesita una modificacin, entre a la propiedad Node del Treview y borre todos los

    nodos y solo cree un nodo raz llamado Telefonos:

    Al correrlo se tendr esto:

  • 5/20/2018 Construir Una Tabla y Arbol IV-2

    16/17

    Ahora se ahara que al seleccionar un nodo se pueda ver la informacin que contenga, para hacer esto semodificara el evento AfterSelect del Treeview. Se le hara doble clic y se la pondr el siguiente cdigo:

    privatevoidArbolTfnos_AfterSelect(objectsender, TreeViewEventArgse){

    if(e.Node.GetType().Equals(Type.GetType("Arbol.Tfno")))

    {Tfnonodo = (Tfno)e.Node;MessageBox.Show(nodo.datosTfno(), "Datos", MessageBoxButtons.OK,

    MessageBoxIcon.Information);}

    }

    El resultado ser el siguiente:

  • 5/20/2018 Construir Una Tabla y Arbol IV-2

    17/17

    Tambin hay mtodos recursivos para mostrar los nodos y el rbol los cuales son los siguientes:

    privatevoidMostrarArbol(TreeViewarbol){

    foreach(TreeNodeunNodo inarbol.Nodes)MostrarNodo(unNodo);

    }

    privatevoidMostrarNodo(TreeNodenodo)

    {//System.Diagnostics.Debug.WriteLine(nodo.Text); MessageBox.Show(nodo.Text);foreach(TreeNodeunNodo innodo.Nodes)

    MostrarNodo(unNodo);}