miércoles, 29 de febrero de 2012

17 - TreeView

ADMINISTRACIÓN DE UN CONTROL TREEVIEW DESDE UN FORMULARIO WINDOWS

En el presente ejercicio veremos como podemos administrar un control treeview, para ello debemos seguir los siguientes pasos, pero antes definiremos una pequeña introducción a las llamadas de formulario utilizando DialogResult.

- Crearemos un proyectos Windows, el cual llamaremos WinTreeView.

- Dentro de este proyecto agregaremos un formulario llamado frmTreeView.

- A este formulario agregaremos los siguientes controles que se indican a continuación.

Button1 – Name = btnIngresar, FlatStyle = Flat, Text = “…”
Button2 – Name = btnModificar, FlatStyle = Flat, Text = “…”
Button3– Name = btnEliminar, FlatStyle = Flat, Text = “…”
Button4 – Name = btnContinuar, FlatStyle = Flat, Text = “…”
Button5 – Name = btnCerrar, FlatStyle = Flat, Text = “…”

Label1 – Name = lblIngresar, Text = Ingresar nodo
Label2 – Name = lblModificar, Text = Modificar nodo
Label3 – Name = lblEliminar, Text = Eliminar nodo
Label4 – Name = lblContinuar, Text = Continuar ingresando nodos
Label5 – Name = lblCerrar, Text = Cerrar

Quedando de la siguiente forma:



- Agregaremos otro formulario, el cual llamaremos frmIngresarNodo, este formulario tendrá los siguientes controles:

Button1 – Name = btnAceptar, FlatStyle = Flat, Text = Aceptar
Button1 – Name = btnCancelar, FlatStyle = Flat, Text = Aceptar

TextBox1 – Name = txt, Text = “”
Label1 – Name = lblNodo, Text = Nodo

Quedando de la siguiente forma:



- En el método que atiende el evento load del formulario frmIngresarNodo definir la siguiente línea de código:

Me.txt.Text = ""

- En el método que atiende el evento clic del botón btnCancelar del formulario frmIngresarNodo, agregar las siguientes líneas de código:

Me.Close()

Me.Dispose()

- En el método que atiende el evento clic del botón btnAceptar del formulario frmIngresarNodo, agregar las siguientes líneas de código:

If Trim(Me.txt.Text) <> "" Then

Me.DialogResult = Windows.Forms.DialogResult.OK

Else

MessageBox.Show("Debe ingresar un valor")

End If

De aquí en adelante, todos los cambios de líneas de código se harán sobre el formulario frmTreeView.

- En el método que atiende el evento clic del botón btnCerrar Agregaremos las siguientes líneas de código:

Me.Close()

Me.Dispose()

- En el método que atiende el evento clic del botón btnIngresar agregaremos las siguientes líneas de código:

' creamos una llamada al formulario de carga de datos
Dim frm As New frmIngresarNodo
Dim resultado As DialogResult = frm.ShowDialog

If resultado = Windows.Forms.DialogResult.OK Then

Dim txt As String = frm.txt.Text

If Me.tvwAdmin.SelectedNode Is Nothing Then

'Agrega nodos a arbol

If f_NodoValidar(Me.tvwAdmin, txt) Then

Me.tvwAdmin.Nodes.Add(txt)

Else

MsgBox("El nombre de raiz ya se ha creado", _

MsgBoxStyle.Information, _

"Mensaje de Sistema")

End If

Else

'Agrega subnodos al arbol

Dim nNivel As TreeNode = _

New TreeNode(Me.tvwAdmin.SelectedNode.Text)

Me.tvwAdmin.SelectedNode = nNivel

If f_SubNodoValidar(Me.tvwAdmin.SelectedNode, txt) Then

Me.tvwAdmin.SelectedNode.Nodes.Add(txt)

Me.tvwAdmin.SelectedNode.Expand()

Else

MsgBox("El subnombre ya existe en el nombre seleccionado", _

MsgBoxStyle.Information, _

"Mensaje de Sistema")

End If

End If

End If

frm.Dispose()

frm = Nothing

- Adicionalmente agregaremos los siguientes métodos con sus respectivas líneas de código

Public Function f_NodoValidar(ByVal tvw As TreeView, ByVal txt As String) As Boolean

Dim Nodo As TreeNode

For Each Nodo In tvw.Nodes

If Nodo.Text = txt Then

Return False

End If

Next

Return True

End Function

Public Function f_SubNodoValidar(ByVal tvn As TreeNode, ByVal txt As String) As Boolean

Dim Nodo As TreeNode

For Each Nodo In tvn.Nodes

If Nodo.Text = txt Then

Return False

End If

Next

Return True

End Function

- En el método que atiende el evento clic del botón btnModificar, agregar las siguientes líneas de código:

' creamos una llamada al formulario de carga de datos

Dim frm As New frmIngresarNodo

If Me.tvwAdmin.SelectedNode Is Nothing Then

' despegar mensaje de que debe seleccionar el nodo

MessageBox.Show("Debe seleccionar un nodo", "Mensaje de Sistema", MessageBoxButtons.OK, MessageBoxIcon.Information)

Else

Dim resultado As DialogResult = frm.ShowDialog

If resultado = Windows.Forms.DialogResult.OK Then

' cambiar nombre del nodo

Me.tvwAdmin.SelectedNode.Text = frm.txt.Text

End If

End If

frm.Dispose()

frm = Nothing

- En el método que atiende el evento clic del botón btnEliminar, agregar las siguientes líneas de código:

If Me.tvwAdmin.SelectedNode Is Nothing Then

' despegar mensaje de que debe seleccionar el nodo

MessageBox.Show("Debe seleccionar un nodo", _

"Mensaje de Sistema", _

MessageBoxButtons.OK, _

MessageBoxIcon.Information)

Else

Me.tvwAdmin.SelectedNode.Remove()

End If

- En el método que atiende el evento clic del botón btnContinuar, agregar las siguientes líneas de código:

If Not Me.tvwAdmin.SelectedNode Is Nothing Then

Me.tvwAdmin.SelectedNode = Nothing

End If

Ejecutar la solución y probar la ejecución de la misma, observa como se comporta el manejo de nodos del treview.

No hay comentarios: